yi-0.7.0: src/library/Yi/Keymap/Vim2/Ex/Eval.hs
module Yi.Keymap.Vim2.Ex.Eval
( exEvalE
, exEvalY
) where
import Prelude ()
import Yi.Prelude
import Yi.Editor
import Yi.Keymap
import Yi.Keymap.Vim2.Ex.Types
exEvalE :: [String -> Maybe ExCommand] -> String -> EditorM ()
exEvalE cmds cmdString = evalHelper id (const $ error msg) cmds cmdString
where msg = "exEvalE got impure command" ++ cmdString
exEvalY :: [String -> Maybe ExCommand] -> String -> YiM ()
exEvalY = evalHelper withEditor id
evalHelper :: MonadEditor m =>
(EditorM () -> m ()) -> (YiM () -> m ()) ->
[String -> Maybe ExCommand] -> String -> m ()
evalHelper pureHandler impureHandler cmds cmdString =
case stringToExCommand cmds cmdString of
Just cmd -> case cmdAction cmd of
BufferA actionB -> pureHandler $ withBuffer0 (discard actionB)
EditorA actionE -> pureHandler (discard actionE)
YiA actionY -> impureHandler (discard actionY)
_ -> return ()