packages feed

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 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: