yi-core 0.17.0 → 0.17.1
raw patch · 2 files changed
+22/−17 lines, 2 filesdep +exceptionsdep ~yi-language
Dependencies added: exceptions
Dependency ranges changed: yi-language
Files
- src/Yi/Eval.hs +19/−15
- yi-core.cabal +3/−2
src/Yi/Eval.hs view
@@ -42,7 +42,7 @@ import Prelude hiding (mapM_) import Lens.Micro.Platform ( (^.), (.=), (%=) )-import Control.Monad (when)+import Control.Monad (when, forever, void) import Data.Array ( elems ) import Data.Binary ( Binary ) import Data.Default ( Default, def )@@ -74,9 +74,9 @@ InterpreterError, Extension(OverloadedStrings), setTopLevelModules,+ InterpreterT, interpret ) import System.Directory ( doesFileExist )-import Yi.Boot.Internal ( reload ) import Yi.Core ( errorEditor ) import Yi.Editor ( getEditorDyn,@@ -212,18 +212,23 @@ LHI.setTopLevelModules ["Env"] -- Yi.Keymap: Action lives there- LHI.setImportsQ [("Yi", Nothing), ("Yi.Keymap",Just "Yi.Keymap")]-- forever $ lift (takeMVar request) >>= \case- HintEvaluate s response -> do- res <- try $ LHI.interpret ("Yi.makeAction (" ++ s ++ ")") (LHI.as :: Action)- lift $ putMVar response res- HintGetNames response -> do- res <- try $ LHI.getModuleExports "Yi"- lift $ putMVar response res- HintDescribe name response -> do- res <- try $ LHI.typeOf name- lift $ putMVar response res+ setImp <- try $ LHI.setImportsQ [("Yi", Nothing), ("Yi.Keymap",Just "Yi.Keymap")] + :: LHI.InterpreterT IO (Either LHI.InterpreterError ())+ case setImp of+ Left e -> lift $ forever $ takeMVar request >>= \case+ HintEvaluate _ response -> putMVar response (Left e)+ HintGetNames response -> putMVar response (Left e)+ HintDescribe _ response -> putMVar response (Left e)+ Right _ -> forever $ lift (takeMVar request) >>= \case+ HintEvaluate s response -> do+ res <- try $ LHI.interpret ("Yi.makeAction (" ++ s ++ ")") (LHI.as :: Action)+ lift $ putMVar response res+ HintGetNames response -> do+ res <- try $ LHI.getModuleExports "Yi"+ lift $ putMVar response res+ HintDescribe name response -> do+ res <- try $ LHI.typeOf name+ lift $ putMVar response res -- Evaluator implemented by calling GHCi. This evaluator can run -- arbitrary expressions in the class 'YiAction'.@@ -245,7 +250,6 @@ } where execAction :: String -> YiM ()- execAction "reload" = reload execAction s = do request <- getHintThread res <- io $ do
yi-core.cabal view
@@ -1,5 +1,5 @@ name: yi-core-version: 0.17.0+version: 0.17.1 synopsis: Yi editor core library category: Yi homepage: https://github.com/yi-editor/yi#readme@@ -51,8 +51,9 @@ , unix-compat >= 0.1 , unordered-containers >= 0.1.3 , xdg-basedir >= 0.2.1- , yi-language >= 0.1.1.0+ , yi-language >= 0.17 , yi-rope >= 0.10+ , exceptions if flag(hint) cpp-options: -DHINT build-depends: