From 08bf944af468b58920a9e14fb1532cfebf1cf823 Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 13:32:45 +0100 Subject: [PATCH 01/13] Initial repl client in Haskell. Spawns `ghci` or `cabal repl` and clears the initial output, nothing more yet. I'm not sure whether I like doing this in Haskell, because it looks quite verbose. --- haskell/ReplSession.hs | 64 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 haskell/ReplSession.hs diff --git a/haskell/ReplSession.hs b/haskell/ReplSession.hs new file mode 100644 index 0000000..f1cdbbd --- /dev/null +++ b/haskell/ReplSession.hs @@ -0,0 +1,64 @@ +module ReplSession ( + ReplSession, + eval, + startSession, + endSession +) where + +import System.IO +import System.Process +import System.Directory (getDirectoryContents) +import Data.List (isSuffixOf) +import Control.Monad (liftM) + +data ReplSession = ReplSession { + replIn :: Handle, + replOut :: Handle, + replError :: Handle, + replProcess :: ProcessHandle +} + +eval :: ReplSession -> IO String +eval _ = return "" + +startSession :: FilePath -> IO ReplSession +startSession path = do + cabalProject <- isCabalProject path + let (cmd, args) = if cabalProject then ("cabal", ["repl"]) else ("ghci", []) + (i, o, e, p) <- runInteractiveProcess cmd args (Just path) Nothing + let s = ReplSession i o e p + prepareSession s + return s + +isCabalProject :: FilePath -> IO Bool +isCabalProject dir = do + files <- getDirectoryContents dir + return $ any (".cabal" `isSuffixOf`) files + +prepareSession :: ReplSession -> IO () +prepareSession s@(ReplSession _ o _ _) = do + sendCommand ":set prompt \"--EvalFinished\\n\"\n" s + clearHandle o + +sendCommand :: String -> ReplSession -> IO () +sendCommand cmd (ReplSession i _ _ _) = do + hPutStrLn i cmd + hFlush i + +clearHandle :: Handle -> IO () +clearHandle handle = + untilM (liftM not $ hWaitForInput handle 1000) $ do + hGetChar handle + +untilM :: (Monad m) => m Bool -> m a -> m () +untilM predicate action = do + isFinished <- predicate + if isFinished + then return () + else action >> untilM predicate action + +endSession :: ReplSession -> IO () +endSession r = do + sendCommand ":quit\n" r + waitForProcess $ replProcess r + return () From 3093e54b419f76515da748155dd3ef5a9581ca9c Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 13:51:00 +0100 Subject: [PATCH 02/13] Simple evaluation support. Doesn't return error output yet. --- haskell/ReplSession.hs | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/haskell/ReplSession.hs b/haskell/ReplSession.hs index f1cdbbd..c7e4b71 100644 --- a/haskell/ReplSession.hs +++ b/haskell/ReplSession.hs @@ -18,8 +18,23 @@ data ReplSession = ReplSession { replProcess :: ProcessHandle } -eval :: ReplSession -> IO String -eval _ = return "" +eval :: String -> ReplSession -> IO String +eval input s@(ReplSession i o _ _) = do + clearHandle o 0 + sendCommand (input ++ "\n") s + output <- readUntil o ("--EvalFinished\n" `isSuffixOf`) + return $ take (length output - length "--EvalFinished\n") output + +readUntil :: Handle -> (String -> Bool) -> IO String +readUntil handle predicate = readUntil' handle "" predicate + +readUntil' :: Handle -> String -> (String -> Bool) -> IO String +readUntil' handle output predicate = do + char <- hGetChar handle + let newOutput = output ++ [char] + if predicate $ newOutput + then return newOutput + else readUntil' handle newOutput predicate startSession :: FilePath -> IO ReplSession startSession path = do @@ -38,16 +53,16 @@ isCabalProject dir = do prepareSession :: ReplSession -> IO () prepareSession s@(ReplSession _ o _ _) = do sendCommand ":set prompt \"--EvalFinished\\n\"\n" s - clearHandle o + clearHandle o 1000 sendCommand :: String -> ReplSession -> IO () sendCommand cmd (ReplSession i _ _ _) = do hPutStrLn i cmd hFlush i -clearHandle :: Handle -> IO () -clearHandle handle = - untilM (liftM not $ hWaitForInput handle 1000) $ do +clearHandle :: Handle -> Int -> IO () +clearHandle handle wait = + untilM (liftM not $ hWaitForInput handle wait) $ do hGetChar handle untilM :: (Monad m) => m Bool -> m a -> m () From f26ffd03f9ab9daf5c6a103eaa35da57636e3b23 Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 14:20:48 +0100 Subject: [PATCH 03/13] Support returning output on error. --- haskell/ReplSession.hs | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/haskell/ReplSession.hs b/haskell/ReplSession.hs index c7e4b71..8ec8d46 100644 --- a/haskell/ReplSession.hs +++ b/haskell/ReplSession.hs @@ -18,12 +18,21 @@ data ReplSession = ReplSession { replProcess :: ProcessHandle } -eval :: String -> ReplSession -> IO String -eval input s@(ReplSession i o _ _) = do +eval :: String -> ReplSession -> IO (Either String String) +eval input s@(ReplSession i o e _) = do clearHandle o 0 + clearHandle e 0 sendCommand (input ++ "\n") s + readEvalOutput s + +readEvalOutput :: ReplSession -> IO (Either String String) +readEvalOutput (ReplSession _ o e _) = do output <- readUntil o ("--EvalFinished\n" `isSuffixOf`) - return $ take (length output - length "--EvalFinished\n") output + let onlyOutput = take (length output - length "--EvalFinished\n") output + hasErrorOutput <- hReady e + if hasErrorOutput + then readAll e >>= \errorOutput -> return . Left $ errorOutput + else return . Right $ onlyOutput readUntil :: Handle -> (String -> Bool) -> IO String readUntil handle predicate = readUntil' handle "" predicate @@ -36,6 +45,9 @@ readUntil' handle output predicate = do then return newOutput else readUntil' handle newOutput predicate +readAll :: Handle -> IO String +readAll handle = untilM' (liftM not $ hReady handle) (hGetChar handle) + startSession :: FilePath -> IO ReplSession startSession path = do cabalProject <- isCabalProject path @@ -66,11 +78,17 @@ clearHandle handle wait = hGetChar handle untilM :: (Monad m) => m Bool -> m a -> m () -untilM predicate action = do +untilM predicate action = untilM' predicate action >> return () + +untilM' :: (Monad m) => m Bool -> m a -> m [a] +untilM' predicate action = do isFinished <- predicate if isFinished - then return () - else action >> untilM predicate action + then return [] + else do + res <- action + others <- untilM' predicate action + return $ res : others endSession :: ReplSession -> IO () endSession r = do From 9d74ebf61959337f2f99f5d103f713f477e09637 Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 14:23:02 +0100 Subject: [PATCH 04/13] Use consistent naming. --- haskell/ReplSession.hs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/haskell/ReplSession.hs b/haskell/ReplSession.hs index 8ec8d46..40001a0 100644 --- a/haskell/ReplSession.hs +++ b/haskell/ReplSession.hs @@ -1,6 +1,6 @@ module ReplSession ( ReplSession, - eval, + evalInSession, startSession, endSession ) where @@ -18,8 +18,8 @@ data ReplSession = ReplSession { replProcess :: ProcessHandle } -eval :: String -> ReplSession -> IO (Either String String) -eval input s@(ReplSession i o e _) = do +evalInSession :: String -> ReplSession -> IO (Either String String) +evalInSession input s@(ReplSession i o e _) = do clearHandle o 0 clearHandle e 0 sendCommand (input ++ "\n") s From c72ea41585ab984cb6aa40753d0a3c61d2b8bd5d Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 14:47:52 +0100 Subject: [PATCH 05/13] Correctly indent if-then-else expressions. --- haskell/ReplSession.hs | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/haskell/ReplSession.hs b/haskell/ReplSession.hs index 40001a0..7d6b244 100644 --- a/haskell/ReplSession.hs +++ b/haskell/ReplSession.hs @@ -31,8 +31,8 @@ readEvalOutput (ReplSession _ o e _) = do let onlyOutput = take (length output - length "--EvalFinished\n") output hasErrorOutput <- hReady e if hasErrorOutput - then readAll e >>= \errorOutput -> return . Left $ errorOutput - else return . Right $ onlyOutput + then readAll e >>= \errorOutput -> return . Left $ errorOutput + else return . Right $ onlyOutput readUntil :: Handle -> (String -> Bool) -> IO String readUntil handle predicate = readUntil' handle "" predicate @@ -42,8 +42,8 @@ readUntil' handle output predicate = do char <- hGetChar handle let newOutput = output ++ [char] if predicate $ newOutput - then return newOutput - else readUntil' handle newOutput predicate + then return newOutput + else readUntil' handle newOutput predicate readAll :: Handle -> IO String readAll handle = untilM' (liftM not $ hReady handle) (hGetChar handle) @@ -84,11 +84,11 @@ untilM' :: (Monad m) => m Bool -> m a -> m [a] untilM' predicate action = do isFinished <- predicate if isFinished - then return [] - else do - res <- action - others <- untilM' predicate action - return $ res : others + then return [] + else do + res <- action + others <- untilM' predicate action + return $ res : others endSession :: ReplSession -> IO () endSession r = do From 849ef87ddb9af309fa22bef4bf30d10ddd60de43 Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 14:54:18 +0100 Subject: [PATCH 06/13] Initial integration with server. --- haskell/LTHaskellClient.hs | 31 +++++++++++++++++++++---------- test_server.rb | 11 ++++++++++- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/haskell/LTHaskellClient.hs b/haskell/LTHaskellClient.hs index e49e6cc..b83aaef 100644 --- a/haskell/LTHaskellClient.hs +++ b/haskell/LTHaskellClient.hs @@ -22,6 +22,8 @@ import Language.Haskell.GhcMod (check, defaultOptions, findCradle, import Language.Haskell.Stylish +import ReplSession + main :: IO () main = withSocketsDo $ do [portStr, clientIdStr] <- getArgs @@ -29,22 +31,23 @@ main = withSocketsDo $ do clientId = read clientIdStr handle <- connectTo "localhost" (PortNumber port) cwd <- getCurrentDirectory + client <- startSession cwd putStrLn $ "Connected: " ++ cwd hFlush stdout sendResponse handle $ LTConnection "Haskell" "haskell" clientId cwd ["haskell.api.reformat", "haskell.api.syntax"] - processCommands handle + processCommands $ LTClientState handle client -processCommands :: Handle -> IO () -processCommands handle = do +processCommands :: LTClientState -> IO () +processCommands state@(LTClientState handle _) = do line <- hGetLine handle case parseCommand line of Left e -> hPutStrLn stderr ("Error processing command: " ++ e) - Right ltCommand -> execCommand handle ltCommand + Right ltCommand -> execCommand state ltCommand - processCommands handle + processCommands state where parseCommand :: String -> Either String (LTCommand (Maybe LTPayload)) @@ -55,13 +58,15 @@ sendResponse handle = hPutStrLn handle . BS.unpack . encode -- API -execCommand :: Handle -> LTCommand (Maybe LTPayload) -> IO () +data LTClientState = LTClientState { ltHandle :: Handle, ltReplSession :: ReplSession } + +execCommand :: LTClientState -> LTCommand (Maybe LTPayload) -> IO () -execCommand handle (LTCommand (_, "client.close", Nothing)) = do - hClose handle +execCommand state (LTCommand (_, "client.close", Nothing)) = do + hClose $ ltHandle state exitSuccess -execCommand handle (LTCommand (cId, command, Just ltPayload)) = +execCommand state (LTCommand (cId, command, Just ltPayload)) = go command $ ltData ltPayload where @@ -77,8 +82,14 @@ execCommand handle (LTCommand (cId, command, Just ltPayload)) = lintIssues <- getLintIssues payloadData respond "editor.haskell.lint.result" $ LTArrayPayload lintIssues + go "haskell.api.eval" payloadData = do + result <- evalInSession payloadData $ ltReplSession state + case result of + Left msg -> respond "editor.eval.haskell.exception" $ LTPayload msg + Right msg -> respond "editor.evak.haskell.success" $ LTPayload msg + respond :: (ToJSON a) => Command -> a -> IO () - respond respCommand respPayload = sendResponse handle $ LTCommand (cId, respCommand, respPayload) + respond respCommand respPayload = sendResponse (ltHandle state) $ LTCommand (cId, respCommand, respPayload) -- API types diff --git a/test_server.rb b/test_server.rb index 1ce7f3f..4df86e5 100644 --- a/test_server.rb +++ b/test_server.rb @@ -34,13 +34,22 @@ def test_code puts "Should succeed: reformatting" puts info - client.puts JSON.generate([456, "haskell.api.syntax", {"data" => "haskell/LTHaskellClient.hs"}]) info = client.gets puts "Should succeed: syntax" puts info + client.puts JSON.generate([456, "haskell.api.eval", {"data" => "1 + 2"}]) + info = client.gets + puts "Should succeed: eval" + puts info + + client.puts JSON.generate([456, "haskell.api.eval", {"data" => "putStrLn"}]) + info = client.gets + puts "Should fail: eval" + puts info + client.puts JSON.generate([456, "client.close", nil]) info = client.gets puts "Client should quit" From 361d2d7b122957a9dc210a7d9d14196f57a9ba82 Mon Sep 17 00:00:00 2001 From: Jeff Taggart Date: Sun, 26 Jan 2014 14:31:57 +0000 Subject: [PATCH 07/13] more readable variables --- haskell/ReplSession.hs | 44 +++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/haskell/ReplSession.hs b/haskell/ReplSession.hs index 7d6b244..a7aad38 100644 --- a/haskell/ReplSession.hs +++ b/haskell/ReplSession.hs @@ -19,19 +19,19 @@ data ReplSession = ReplSession { } evalInSession :: String -> ReplSession -> IO (Either String String) -evalInSession input s@(ReplSession i o e _) = do - clearHandle o 0 - clearHandle e 0 - sendCommand (input ++ "\n") s - readEvalOutput s +evalInSession cmd session@(ReplSession input out err _) = do + clearHandle out 0 + clearHandle err 0 + sendCommand (cmd ++ "\n") session + readEvalOutput session readEvalOutput :: ReplSession -> IO (Either String String) -readEvalOutput (ReplSession _ o e _) = do - output <- readUntil o ("--EvalFinished\n" `isSuffixOf`) +readEvalOutput (ReplSession _ out err _) = do + output <- readUntil out ("--EvalFinished\n" `isSuffixOf`) let onlyOutput = take (length output - length "--EvalFinished\n") output - hasErrorOutput <- hReady e + hasErrorOutput <- hReady err if hasErrorOutput - then readAll e >>= \errorOutput -> return . Left $ errorOutput + then readAll err >>= \errorOutput -> return . Left $ errorOutput else return . Right $ onlyOutput readUntil :: Handle -> (String -> Bool) -> IO String @@ -52,10 +52,10 @@ startSession :: FilePath -> IO ReplSession startSession path = do cabalProject <- isCabalProject path let (cmd, args) = if cabalProject then ("cabal", ["repl"]) else ("ghci", []) - (i, o, e, p) <- runInteractiveProcess cmd args (Just path) Nothing - let s = ReplSession i o e p - prepareSession s - return s + (input, out, err, process) <- runInteractiveProcess cmd args (Just path) Nothing + let session = ReplSession input out err process + prepareSession session + return session isCabalProject :: FilePath -> IO Bool isCabalProject dir = do @@ -63,14 +63,14 @@ isCabalProject dir = do return $ any (".cabal" `isSuffixOf`) files prepareSession :: ReplSession -> IO () -prepareSession s@(ReplSession _ o _ _) = do - sendCommand ":set prompt \"--EvalFinished\\n\"\n" s - clearHandle o 1000 +prepareSession session@(ReplSession _ out _ _) = do + sendCommand ":set prompt \"--EvalFinished\\n\"\n" session + clearHandle out 1000 sendCommand :: String -> ReplSession -> IO () -sendCommand cmd (ReplSession i _ _ _) = do - hPutStrLn i cmd - hFlush i +sendCommand cmd (ReplSession input _ _ _) = do + hPutStrLn input cmd + hFlush input clearHandle :: Handle -> Int -> IO () clearHandle handle wait = @@ -91,7 +91,7 @@ untilM' predicate action = do return $ res : others endSession :: ReplSession -> IO () -endSession r = do - sendCommand ":quit\n" r - waitForProcess $ replProcess r +endSession session = do + sendCommand ":quit\n" session + waitForProcess $ replProcess session return () From d928022864b883fb8b4331c1d510b8b832b8bddb Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 16:13:41 +0100 Subject: [PATCH 08/13] Properly exit the repl process. --- haskell/LTHaskellClient.hs | 1 + 1 file changed, 1 insertion(+) diff --git a/haskell/LTHaskellClient.hs b/haskell/LTHaskellClient.hs index b83aaef..72b06f7 100644 --- a/haskell/LTHaskellClient.hs +++ b/haskell/LTHaskellClient.hs @@ -64,6 +64,7 @@ execCommand :: LTClientState -> LTCommand (Maybe LTPayload) -> IO () execCommand state (LTCommand (_, "client.close", Nothing)) = do hClose $ ltHandle state + endSession $ ltReplSession state exitSuccess execCommand state (LTCommand (cId, command, Just ltPayload)) = From c38b39b801ae9f798959a5e82d5dd6c166e4941d Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 16:34:57 +0100 Subject: [PATCH 09/13] Find the plugin on case-sensitive file systems. --- src/lt/plugins/haskell.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lt/plugins/haskell.cljs b/src/lt/plugins/haskell.cljs index 745c3f5..1af7c1a 100644 --- a/src/lt/plugins/haskell.cljs +++ b/src/lt/plugins/haskell.cljs @@ -26,7 +26,7 @@ (.which shell "cabal") -(def plugin-dir (plugins/find-plugin "haskell")) +(def plugin-dir (plugins/find-plugin "Haskell")) (def binary-path (files/join plugin-dir "./run-server.sh")) ;; ************************************** From f3242f194f19d66c7629e298d7635929d773e6f7 Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 17:12:32 +0100 Subject: [PATCH 10/13] Evaluate Haskell code on the server. --- haskell.behaviors | 3 + haskell/LTHaskellClient.hs | 17 ++-- haskell_compiled.js | 182 +++++++++++++----------------------- haskell_compiled.js.map | 62 ++++++------ src/lt/plugins/haskell.cljs | 115 ++++++----------------- 5 files changed, 133 insertions(+), 246 deletions(-) diff --git a/haskell.behaviors b/haskell.behaviors index 4e83358..cabbb70 100644 --- a/haskell.behaviors +++ b/haskell.behaviors @@ -11,7 +11,10 @@ :lt.plugins.haskell/editor-reformat-result :lt.plugins.haskell/editor-syntax-result :lt.plugins.haskell/editor-lint-result + :lt.plugins.haskell/on-eval-one + :lt.plugins.haskell/haskell-result + :lt.plugins.haskell/haskell-exception :lt.plugins.haskell/on-eval-type [:lt.object/add-tag :docable] diff --git a/haskell/LTHaskellClient.hs b/haskell/LTHaskellClient.hs index 72b06f7..706a68b 100644 --- a/haskell/LTHaskellClient.hs +++ b/haskell/LTHaskellClient.hs @@ -9,11 +9,11 @@ import System.Exit (exitSuccess) import System.IO (Handle, hClose, hFlush, hGetLine, hPutStrLn, stderr, stdout) -import Control.Applicative ((<$>)) +import Control.Applicative ((<$>), (<*>)) import Data.Aeson (FromJSON (..), ToJSON (..), Value (..), eitherDecode, encode, - object, (.:), (.=)) + object, (.:), (.:?), (.=), (.!=)) import qualified Data.ByteString.Lazy.Char8 as BS import GHC.Generics (Generic) @@ -73,7 +73,7 @@ execCommand state (LTCommand (cId, command, Just ltPayload)) = where go "haskell.api.reformat" payloadData = do reformattedCode <- format payloadData - respond "editor.haskell.reformat.result" $ LTPayload reformattedCode + respond "editor.haskell.reformat.result" $ LTPayload reformattedCode 0 go "haskell.api.syntax" payloadData = do syntaxIssues <- getSyntaxIssues payloadData @@ -85,9 +85,10 @@ execCommand state (LTCommand (cId, command, Just ltPayload)) = go "haskell.api.eval" payloadData = do result <- evalInSession payloadData $ ltReplSession state + let line = ltLine ltPayload case result of - Left msg -> respond "editor.eval.haskell.exception" $ LTPayload msg - Right msg -> respond "editor.evak.haskell.success" $ LTPayload msg + Left msg -> respond "editor.eval.haskell.exception" $ LTPayload msg line + Right msg -> respond "editor.eval.haskell.result" $ LTPayload msg line respond :: (ToJSON a) => Command -> a -> IO () respond respCommand respPayload = sendResponse (ltHandle state) $ LTCommand (cId, respCommand, respPayload) @@ -101,12 +102,12 @@ data LTCommand a = LTCommand (Client, Command, a) deriving (Show, Generic) instance (FromJSON a) => FromJSON (LTCommand a) instance (ToJSON a) => ToJSON (LTCommand a) -data LTPayload = LTPayload { ltData :: String } deriving (Show) +data LTPayload = LTPayload { ltData :: String, ltLine :: Int } deriving (Show) instance FromJSON LTPayload where - parseJSON (Object v) = LTPayload <$> v .: "data" + parseJSON (Object v) = LTPayload <$> v .: "data" <*> (v .:? "line" .!= 0) instance ToJSON LTPayload where - toJSON payload = object [ "data" .= ltData payload ] + toJSON payload = object [ "data" .= ltData payload, "line" .= ltLine payload ] data LTArrayPayload = LTArrayPayload { ltDataArray :: [String] } deriving (Show) instance FromJSON LTArrayPayload where diff --git a/haskell_compiled.js b/haskell_compiled.js index cc6710a..98f8b4a 100644 --- a/haskell_compiled.js +++ b/haskell_compiled.js @@ -43,7 +43,7 @@ goog.require('lt.objs.editor'); goog.require('lt.plugins.doc'); lt.plugins.haskell.shell = lt.util.load.node_module.call(null,"shelljs"); lt.plugins.haskell.shell.which("cabal"); -lt.plugins.haskell.plugin_dir = lt.objs.plugins.find_plugin.call(null,"haskell"); +lt.plugins.haskell.plugin_dir = lt.objs.plugins.find_plugin.call(null,"Haskell"); lt.plugins.haskell.binary_path = lt.objs.files.join.call(null,lt.plugins.haskell.plugin_dir,"./run-server.sh"); lt.plugins.haskell.perform_api_search = (function perform_api_search(base_url,query,handler){var xhr = (new goog.net.XhrIo());goog.events.listen(xhr,"complete",lt.plugins.haskell.wrap_handler.call(null,handler)); return xhr.send([cljs.core.str(base_url),cljs.core.str(goog.string.urlEncode(query))].join('')); @@ -74,7 +74,7 @@ lt.plugins.haskell.hoogle__GT_parse = (function hoogle__GT_parse(response){retur lt.plugins.haskell.hoogle__GT_convert_doc = (function hoogle__GT_convert_doc(hoogle_doc){if((hoogle_doc == null)) {return null; } else -{var location = hoogle_doc.location;var vec__8226 = /http:\/\/hackage.haskell.org\/packages\/archive\/(.+)\/latest\/doc\/html\/(.+).html/.exec(location);var with_mod = cljs.core.nth.call(null,vec__8226,0,null);var mod_package = cljs.core.nth.call(null,vec__8226,1,null);var module_name = cljs.core.nth.call(null,vec__8226,2,null);var explanation = (((with_mod == null))?"":[cljs.core.str(" ("),cljs.core.str(mod_package),cljs.core.str(": "),cljs.core.str(clojure.string.replace.call(null,module_name,"-",".")),cljs.core.str(")")].join(''));return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),hoogle_doc.self,new cljs.core.Keyword(null,"ns","ns",1013907767),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"a","a",1013904339),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"href","href",1017115293),location], null),[cljs.core.str("Hoogle"),cljs.core.str(explanation)].join('')], null),new cljs.core.Keyword(null,"doc","doc",1014003882),hoogle_doc.docs], null); +{var location = hoogle_doc.location;var vec__8275 = /http:\/\/hackage.haskell.org\/packages\/archive\/(.+)\/latest\/doc\/html\/(.+).html/.exec(location);var with_mod = cljs.core.nth.call(null,vec__8275,0,null);var mod_package = cljs.core.nth.call(null,vec__8275,1,null);var module_name = cljs.core.nth.call(null,vec__8275,2,null);var explanation = (((with_mod == null))?"":[cljs.core.str(" ("),cljs.core.str(mod_package),cljs.core.str(": "),cljs.core.str(clojure.string.replace.call(null,module_name,"-",".")),cljs.core.str(")")].join(''));return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),hoogle_doc.self,new cljs.core.Keyword(null,"ns","ns",1013907767),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"a","a",1013904339),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"href","href",1017115293),location], null),[cljs.core.str("Hoogle"),cljs.core.str(explanation)].join('')], null),new cljs.core.Keyword(null,"doc","doc",1014003882),hoogle_doc.docs], null); } }); lt.plugins.haskell.convert_hoogle_results = (function convert_hoogle_results(results){var parsed_results = lt.plugins.haskell.hoogle__GT_parse.call(null,results);return cljs.core.map.call(null,lt.plugins.haskell.hoogle__GT_convert_doc,parsed_results); @@ -124,45 +124,45 @@ lt.plugins.haskell.format_inline_error = (function format_inline_error(error){va }); lt.plugins.haskell.print_inline_error = (function print_inline_error(editor,error){var formatted_error = lt.plugins.haskell.format_inline_error.call(null,error);return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.exception","editor.exception",3983021184),new cljs.core.Keyword(null,"msg","msg",1014012659).cljs$core$IFn$_invoke$arity$1(formatted_error),new cljs.core.Keyword(null,"loc","loc",1014011570).cljs$core$IFn$_invoke$arity$1(formatted_error)); }); -lt.plugins.haskell.print_inline_errors = (function print_inline_errors(editor,data){var seq__8231 = cljs.core.seq.call(null,data);var chunk__8232 = null;var count__8233 = 0;var i__8234 = 0;while(true){ -if((i__8234 < count__8233)) -{var error = cljs.core._nth.call(null,chunk__8232,i__8234);lt.plugins.haskell.print_inline_error.call(null,editor,error); +lt.plugins.haskell.print_inline_errors = (function print_inline_errors(editor,data){var seq__8280 = cljs.core.seq.call(null,data);var chunk__8281 = null;var count__8282 = 0;var i__8283 = 0;while(true){ +if((i__8283 < count__8282)) +{var error = cljs.core._nth.call(null,chunk__8281,i__8283);lt.plugins.haskell.print_inline_error.call(null,editor,error); { -var G__8250 = seq__8231; -var G__8251 = chunk__8232; -var G__8252 = count__8233; -var G__8253 = (i__8234 + 1); -seq__8231 = G__8250; -chunk__8232 = G__8251; -count__8233 = G__8252; -i__8234 = G__8253; +var G__8297 = seq__8280; +var G__8298 = chunk__8281; +var G__8299 = count__8282; +var G__8300 = (i__8283 + 1); +seq__8280 = G__8297; +chunk__8281 = G__8298; +count__8282 = G__8299; +i__8283 = G__8300; continue; } } else -{var temp__4092__auto__ = cljs.core.seq.call(null,seq__8231);if(temp__4092__auto__) -{var seq__8231__$1 = temp__4092__auto__;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8231__$1)) -{var c__7486__auto__ = cljs.core.chunk_first.call(null,seq__8231__$1);{ -var G__8254 = cljs.core.chunk_rest.call(null,seq__8231__$1); -var G__8255 = c__7486__auto__; -var G__8256 = cljs.core.count.call(null,c__7486__auto__); -var G__8257 = 0; -seq__8231 = G__8254; -chunk__8232 = G__8255; -count__8233 = G__8256; -i__8234 = G__8257; +{var temp__4092__auto__ = cljs.core.seq.call(null,seq__8280);if(temp__4092__auto__) +{var seq__8280__$1 = temp__4092__auto__;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8280__$1)) +{var c__7486__auto__ = cljs.core.chunk_first.call(null,seq__8280__$1);{ +var G__8301 = cljs.core.chunk_rest.call(null,seq__8280__$1); +var G__8302 = c__7486__auto__; +var G__8303 = cljs.core.count.call(null,c__7486__auto__); +var G__8304 = 0; +seq__8280 = G__8301; +chunk__8281 = G__8302; +count__8282 = G__8303; +i__8283 = G__8304; continue; } } else -{var error = cljs.core.first.call(null,seq__8231__$1);lt.plugins.haskell.print_inline_error.call(null,editor,error); +{var error = cljs.core.first.call(null,seq__8280__$1);lt.plugins.haskell.print_inline_error.call(null,editor,error); { -var G__8258 = cljs.core.next.call(null,seq__8231__$1); -var G__8259 = null; -var G__8260 = 0; -var G__8261 = 0; -seq__8231 = G__8258; -chunk__8232 = G__8259; -count__8233 = G__8260; -i__8234 = G__8261; +var G__8305 = cljs.core.next.call(null,seq__8280__$1); +var G__8306 = null; +var G__8307 = 0; +var G__8308 = 0; +seq__8280 = G__8305; +chunk__8281 = G__8306; +count__8282 = G__8307; +i__8283 = G__8308; continue; } } @@ -221,24 +221,6 @@ lt.objs.command.command.call(null,new cljs.core.PersistentArrayMap(null, 3, [new {return null; } })], null)); -lt.plugins.haskell.__BEH__on_proc_out = (function __BEH__on_proc_out(this$,data){return lt.object.update_BANG_.call(null,this$,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"proc","proc",1017353928),new cljs.core.Keyword(null,"out","out",1014014656)], null),cljs.core.str,data.toString()); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","on-proc-out","lt.plugins.haskell/on-proc-out",939381895),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__on_proc_out,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.out","proc.out",4302083112),null], null), null)); -lt.plugins.haskell.__BEH__on_proc_error = (function __BEH__on_proc_error(this$,data){return lt.object.update_BANG_.call(null,this$,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"proc","proc",1017353928),new cljs.core.Keyword(null,"error","error",1110689146)], null),cljs.core.str,data.toString()); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","on-proc-error","lt.plugins.haskell/on-proc-error",1921027969),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__on_proc_error,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.error","proc.error",4143512802),null], null), null)); -lt.plugins.haskell.__BEH__on_proc_exit = (function __BEH__on_proc_exit(this$,data){return lt.object.update_BANG_.call(null,this$,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"running","running",2564688177)], null),cljs.core.constantly.call(null,false)); -}); -lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","on-proc-exit","lt.plugins.haskell/on-proc-exit",4665789001),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__on_proc_exit,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"proc.exit","proc.exit",4162906152),null], null), null)); -lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","runner","lt.plugins.haskell/runner",2843816242),new cljs.core.Keyword(null,"behaviors","behaviors",607554515),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("lt.plugins.haskell","on-proc-out","lt.plugins.haskell/on-proc-out",939381895),new cljs.core.Keyword("lt.plugins.haskell","on-proc-error","lt.plugins.haskell/on-proc-error",1921027969),new cljs.core.Keyword("lt.plugins.haskell","on-proc-exit","lt.plugins.haskell/on-proc-exit",4665789001)], null),new cljs.core.Keyword(null,"running","running",2564688177),true,new cljs.core.Keyword(null,"proc","proc",1017353928),new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"process","process",704385505),null,new cljs.core.Keyword(null,"out","out",1014014656),null,new cljs.core.Keyword(null,"error","error",1110689146),null], null),new cljs.core.Keyword(null,"init","init",1017141378),(function (this$,command,args,cwd,init_fn){var p = lt.objs.proc.simple_spawn_STAR_.call(null,this$,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"command","command",1964298941),command,new cljs.core.Keyword(null,"args","args",1016906831),args], null),cwd,cljs.core.PersistentArrayMap.EMPTY);if(cljs.core.truth_(init_fn)) -{init_fn.call(null,p); -} else -{} -lt.object.update_BANG_.call(null,this$,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"proc","proc",1017353928),new cljs.core.Keyword(null,"process","process",704385505)], null),(function (_,n){return n; -}),p); -lt.objs.notifos.set_msg_BANG_.call(null,[cljs.core.str("started "),cljs.core.str(command),cljs.core.str(" in "),cljs.core.str(cwd)].join('')); -return null; -})); lt.plugins.haskell.find_project_dir = (function find_project_dir(file){var roots = lt.objs.files.get_roots.call(null);var cur = lt.objs.files.parent.call(null,file);var prev = "";while(true){ if(cljs.core.truth_((function (){var or__6744__auto__ = cljs.core.empty_QMARK_.call(null,cur);if(or__6744__auto__) {return or__6744__auto__; @@ -253,16 +235,16 @@ if(cljs.core.truth_((function (){var or__6744__auto__ = cljs.core.empty_QMARK_.c {return null; } else {if(cljs.core.truth_(cljs.core.some.call(null,((function (cur,prev){ -return (function (p1__8235_SHARP_){return p1__8235_SHARP_.endsWith(".cabal"); +return (function (p1__8284_SHARP_){return p1__8284_SHARP_.endsWith(".cabal"); });})(cur,prev)) ,lt.objs.files.ls_sync.call(null,cur)))) {return cur; } else {{ -var G__8262 = lt.objs.files.parent.call(null,cur); -var G__8263 = cur; -cur = G__8262; -prev = G__8263; +var G__8309 = lt.objs.files.parent.call(null,cur); +var G__8310 = cur; +cur = G__8309; +prev = G__8310; continue; } } @@ -270,75 +252,39 @@ continue; break; } }); -lt.plugins.haskell.init_prompt = (function init_prompt(p){return p.stdin.write(":set prompt \"--EvalFinished--\\n\"\n"); -}); -lt.plugins.haskell.ghci_process = (function ghci_process(file,cb){var project_dir = lt.plugins.haskell.find_project_dir.call(null,file);var o = (cljs.core.truth_(project_dir)?lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","runner","lt.plugins.haskell/runner",2843816242),"cabal",new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, ["repl"], null),project_dir,lt.plugins.haskell.init_prompt):lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","runner","lt.plugins.haskell/runner",2843816242),"ghci",cljs.core.PersistentVector.EMPTY,lt.objs.files.parent.call(null,file),lt.plugins.haskell.init_prompt));cljs.core.add_watch.call(null,o,new cljs.core.Keyword(null,"ghci-watch","ghci-watch",4090499067),(function (_,___$1,old,new$){var old_out = cljs.core.get_in.call(null,old,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"proc","proc",1017353928),new cljs.core.Keyword(null,"out","out",1014014656)], null));var new_out = cljs.core.get_in.call(null,new$,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"proc","proc",1017353928),new cljs.core.Keyword(null,"out","out",1014014656)], null));var err_out = cljs.core.get_in.call(null,new$,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"proc","proc",1017353928),new cljs.core.Keyword(null,"error","error",1110689146)], null));if(cljs.core.truth_((function (){var and__6732__auto__ = new_out;if(cljs.core.truth_(and__6732__auto__)) -{var and__6732__auto____$1 = cljs.core.not_EQ_.call(null,old_out,new_out);if(and__6732__auto____$1) -{return new_out.contains("--EvalFinished--"); -} else -{return and__6732__auto____$1; -} -} else -{return and__6732__auto__; -} -})())) -{return cb.call(null,new_out,err_out); -} else -{return null; -} -})); -return o; -}); -lt.plugins.haskell.ghci_command = (function ghci_command(ghci_obj,command){var stdin = cljs.core.get_in.call(null,cljs.core.deref.call(null,ghci_obj),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"proc","proc",1017353928),new cljs.core.Keyword(null,"process","process",704385505)], null)).stdin;lt.object.update_BANG_.call(null,ghci_obj,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"proc","proc",1017353928)], null),(function (p){return cljs.core.assoc.call(null,p,new cljs.core.Keyword(null,"out","out",1014014656),null,new cljs.core.Keyword(null,"error","error",1110689146),null); -})); -return stdin.write([cljs.core.str(command),cljs.core.str("\n")].join('')); +lt.plugins.haskell.__BEH__haskell_success = (function __BEH__haskell_success(editor,result){lt.objs.notifos.done_working.call(null); +return lt.object.raise.call(null,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),"\u2713",new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(result)], null)); }); -lt.plugins.haskell.selection_info = (function selection_info(editor){var pos = lt.objs.editor.__GT_cursor.call(null,editor);var info = new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));var info__$1 = (cljs.core.truth_(lt.objs.editor.selection_QMARK_.call(null,editor))?cljs.core.assoc.call(null,info,new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"start","start",1123661780),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(lt.objs.editor.__GT_cursor.call(null,editor,"start")),new cljs.core.Keyword(null,"end","end",1014004813),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(lt.objs.editor.__GT_cursor.call(null,editor,"end"))], null),new cljs.core.Keyword(null,"code","code",1016963423),lt.objs.editor.selection.call(null,editor)):cljs.core.assoc.call(null,info,new cljs.core.Keyword(null,"pos","pos",1014015430),pos,new cljs.core.Keyword(null,"code","code",1016963423),lt.objs.editor.line.call(null,editor,new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos))));return info__$1; +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-success","lt.plugins.haskell/haskell-success",1936333612),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__haskell_success,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.haskell.success","editor.eval.haskell.success",2473581066),null], null), null)); +lt.plugins.haskell.__BEH__haskell_result = (function __BEH__haskell_result(editor,result){cljs.core.prn.call(null,result); +lt.objs.notifos.done_working.call(null); +return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),new cljs.core.Keyword(null,"data","data",1016980252).cljs$core$IFn$_invoke$arity$1(result),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(result)], null)); }); -lt.plugins.haskell.show_result = (function show_result(editor,loc){return (function (output,error_output){var results = clojure.string.split.call(null,output,"--EvalFinished--\n");var res = cljs.core.peek.call(null,results);var res__$1 = (cljs.core.truth_(clojure.string.blank_QMARK_.call(null,res))?"-- ok":res);if(cljs.core.truth_(error_output)) -{return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.exception","editor.exception",3983021184),error_output,loc); -} else -{return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),res__$1,loc); -} +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-result","lt.plugins.haskell/haskell-result",3373598232),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__haskell_result,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.haskell.result","editor.eval.haskell.result",2680647258),null], null), null)); +lt.plugins.haskell.__BEH__haskell_exception = (function __BEH__haskell_exception(editor,result){lt.objs.notifos.done_working.call(null); +return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.exception","editor.exception",3983021184),new cljs.core.Keyword(null,"data","data",1016980252).cljs$core$IFn$_invoke$arity$1(result),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(result)], null)); }); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-exception","lt.plugins.haskell/haskell-exception",2654191032),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__haskell_exception,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.haskell.exception","editor.eval.haskell.exception",4139456790),null], null), null)); +lt.plugins.haskell.selection_info = (function selection_info(editor){var pos = lt.objs.editor.__GT_cursor.call(null,editor);var info = new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));var info__$1 = (cljs.core.truth_(lt.objs.editor.selection_QMARK_.call(null,editor))?cljs.core.assoc.call(null,info,new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(lt.objs.editor.__GT_cursor.call(null,editor,"end")),new cljs.core.Keyword(null,"code","code",1016963423),lt.objs.editor.selection.call(null,editor)):cljs.core.assoc.call(null,info,new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos),new cljs.core.Keyword(null,"code","code",1016963423),lt.objs.editor.line.call(null,editor,new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(pos))));return info__$1; }); lt.plugins.haskell.prepare_code = (function prepare_code(code){return clojure.string.replace.call(null,code,/^(\w+)(\s+)?=/,"let $1 ="); }); -lt.plugins.haskell.get_ghci = (function get_ghci(editor){var ghci = new cljs.core.Keyword(null,"haskell.client","haskell.client",4292563063).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor));var ghci__$1 = ((cljs.core.not.call(null,ghci))?(function (){var file = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"info","info",1017141280).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,editor)));var ghci__$1 = lt.plugins.haskell.ghci_process.call(null,file,((function (file,ghci){ -return (function (p1__8236_SHARP_,p2__8237_SHARP_){return cljs.core.get_in.call(null,cljs.core.deref.call(null,editor),new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"haskell.result-fn","haskell.result-fn",3772146800)], null)).call(null,p1__8236_SHARP_,p2__8237_SHARP_); -});})(file,ghci)) -);lt.object.update_BANG_.call(null,editor,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"haskell.client","haskell.client",4292563063)], null),((function (file,ghci__$1,ghci){ -return (function (_,n){return n; -});})(file,ghci__$1,ghci)) -,ghci__$1); -return ghci__$1; -})():ghci);return ghci__$1; -}); -lt.plugins.haskell.__BEH__on_eval_one = (function __BEH__on_eval_one(editor){var info = lt.plugins.haskell.selection_info.call(null,editor);var loc = new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),(function (){var or__6744__auto__ = cljs.core.get_in.call(null,info,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.Keyword(null,"end","end",1014004813)], null));if(cljs.core.truth_(or__6744__auto__)) -{return or__6744__auto__; -} else -{return cljs.core.get_in.call(null,info,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"pos","pos",1014015430),new cljs.core.Keyword(null,"line","line",1017226086)], null)); -} -})()], null);var ghci = lt.plugins.haskell.get_ghci.call(null,editor);if(cljs.core.truth_(clojure.string.blank_QMARK_.call(null,new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info)))) +lt.plugins.haskell.__BEH__on_eval_one = (function __BEH__on_eval_one(editor){var info = lt.plugins.haskell.selection_info.call(null,editor);var data = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"data","data",1016980252),new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info),new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(info)], null);cljs.core.prn.call(null,data); +if(cljs.core.truth_(clojure.string.blank_QMARK_.call(null,new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info)))) {return null; } else -{lt.object.update_BANG_.call(null,editor,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"haskell.result-fn","haskell.result-fn",3772146800)], null),(function (_,n){return n; -}),lt.plugins.haskell.show_result.call(null,editor,loc)); -return lt.plugins.haskell.ghci_command.call(null,ghci,lt.plugins.haskell.prepare_code.call(null,new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info))); +{return lt.plugins.haskell.send_api_command.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"origin","origin",4300251800),editor], null),new cljs.core.Keyword(null,"haskell.api.eval","haskell.api.eval",3607340572),data); } }); lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","on-eval-one","lt.plugins.haskell/on-eval-one",1888933733),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__on_eval_one,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eval.one","eval.one",1173589382),null], null), null)); -lt.plugins.haskell.__BEH__on_eval_type = (function __BEH__on_eval_type(editor){var info = lt.plugins.haskell.selection_info.call(null,editor);var loc = new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),(function (){var or__6744__auto__ = cljs.core.get_in.call(null,info,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"meta","meta",1017252215),new cljs.core.Keyword(null,"end","end",1014004813)], null));if(cljs.core.truth_(or__6744__auto__)) -{return or__6744__auto__; -} else -{return cljs.core.get_in.call(null,info,new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"pos","pos",1014015430),new cljs.core.Keyword(null,"line","line",1017226086)], null)); -} -})()], null);var ghci = lt.plugins.haskell.get_ghci.call(null,editor);if(cljs.core.truth_(clojure.string.blank_QMARK_.call(null,new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info)))) +lt.plugins.haskell.__BEH__haskell_type = (function __BEH__haskell_type(editor,result){lt.objs.notifos.done_working.call(null); +return lt.object.raise.call(null,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),new cljs.core.Keyword(null,"data","data",1016980252).cljs$core$IFn$_invoke$arity$1(result),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(result)], null)); +}); +lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-type","lt.plugins.haskell/haskell-type",682834165),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__haskell_type,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.haskell.type","editor.eval.haskell.type",600075319),null], null), null)); +lt.plugins.haskell.__BEH__on_eval_type = (function __BEH__on_eval_type(editor){var info = lt.plugins.haskell.selection_info.call(null,editor);var data = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"data","data",1016980252),new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info),new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(info)], null);if(cljs.core.truth_(clojure.string.blank_QMARK_.call(null,new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info)))) {return null; } else -{lt.object.update_BANG_.call(null,editor,new cljs.core.PersistentVector(null, 1, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"haskell.result-fn","haskell.result-fn",3772146800)], null),(function (_,n){return n; -}),lt.plugins.haskell.show_result.call(null,editor,loc)); -return lt.plugins.haskell.ghci_command.call(null,ghci,[cljs.core.str(":type "),cljs.core.str(lt.plugins.haskell.prepare_code.call(null,new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info)))].join('')); +{return lt.plugins.haskell.send_api_command.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"origin","origin",4300251800),editor], null),new cljs.core.Keyword(null,"haskell.api.type","haskell.api.type",3607790778),data); } }); lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","on-eval-type","lt.plugins.haskell/on-eval-type",2289744095),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__on_eval_type,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"eval.type","eval.type",1669336254),null], null), null)); @@ -367,7 +313,7 @@ lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","o lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),new cljs.core.Keyword(null,"triggers","triggers",2516997421),cljs.core.PersistentVector.EMPTY,new cljs.core.Keyword(null,"behaviors","behaviors",607554515),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("lt.plugins.haskell","on-out","lt.plugins.haskell/on-out",3479204322),new cljs.core.Keyword("lt.plugins.haskell","on-error","lt.plugins.haskell/on-error",4176683164),new cljs.core.Keyword("lt.plugins.haskell","on-exit","lt.plugins.haskell/on-exit",3263426510)], null),new cljs.core.Keyword(null,"init","init",1017141378),(function (this$,info){lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"info","info",1017141280),info], null)); return null; })); -lt.plugins.haskell.run_haskell = (function run_haskell(p__8238){var map__8240 = p__8238;var map__8240__$1 = ((cljs.core.seq_QMARK_.call(null,map__8240))?cljs.core.apply.call(null,cljs.core.hash_map,map__8240):map__8240);var info = map__8240__$1;var client = cljs.core.get.call(null,map__8240__$1,new cljs.core.Keyword(null,"client","client",3951159101));var name = cljs.core.get.call(null,map__8240__$1,new cljs.core.Keyword(null,"name","name",1017277949));var path = cljs.core.get.call(null,map__8240__$1,new cljs.core.Keyword(null,"path","path",1017337751));var obj = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),info);var client_id = lt.objs.clients.__GT_id.call(null,client);lt.object.merge_BANG_.call(null,client,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"port","port",1017351155),lt.objs.clients.tcp.port,new cljs.core.Keyword(null,"proc","proc",1017353928),obj], null)); +lt.plugins.haskell.run_haskell = (function run_haskell(p__8285){var map__8287 = p__8285;var map__8287__$1 = ((cljs.core.seq_QMARK_.call(null,map__8287))?cljs.core.apply.call(null,cljs.core.hash_map,map__8287):map__8287);var info = map__8287__$1;var client = cljs.core.get.call(null,map__8287__$1,new cljs.core.Keyword(null,"client","client",3951159101));var name = cljs.core.get.call(null,map__8287__$1,new cljs.core.Keyword(null,"name","name",1017277949));var path = cljs.core.get.call(null,map__8287__$1,new cljs.core.Keyword(null,"path","path",1017337751));var obj = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),info);var client_id = lt.objs.clients.__GT_id.call(null,client);lt.object.merge_BANG_.call(null,client,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"port","port",1017351155),lt.objs.clients.tcp.port,new cljs.core.Keyword(null,"proc","proc",1017353928),obj], null)); lt.objs.notifos.working.call(null,"Connecting.."); return lt.objs.proc.exec.call(null,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"command","command",1964298941),lt.plugins.haskell.binary_path,new cljs.core.Keyword(null,"args","args",1016906831),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [lt.objs.clients.tcp.port,client_id], null),new cljs.core.Keyword(null,"cwd","cwd",1014003170),lt.plugins.haskell.plugin_dir,new cljs.core.Keyword(null,"env","env",1014004831),new cljs.core.PersistentArrayMap(null, 1, ["HASKELL_PATH",lt.objs.files.join.call(null,lt.objs.files.parent.call(null,path))], null),new cljs.core.Keyword(null,"obj","obj",1014014057),obj], null)); }); @@ -379,7 +325,7 @@ lt.plugins.haskell.handle_no_haskell = (function handle_no_haskell(client){lt.ob return lt.objs.popup.popup_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"header","header",4087600639),"We couldn't find runhaskell.",new cljs.core.Keyword(null,"body","body",1016933652),"In order to start a haskell client, you have to have the haskell and haskell-platform installed and on your system's PATH.",new cljs.core.Keyword(null,"buttons","buttons",1255256819),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"Download Haskell Platform",new cljs.core.Keyword(null,"action","action",3885920680),(function (){return platform.open.call(null,"http://www.haskell.org/platform/"); })], null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"label","label",1116631654),"ok"], null)], null)], null)); }); -lt.plugins.haskell.notify = (function notify(obj){var map__8242 = obj;var map__8242__$1 = ((cljs.core.seq_QMARK_.call(null,map__8242))?cljs.core.apply.call(null,cljs.core.hash_map,map__8242):map__8242);var client = cljs.core.get.call(null,map__8242__$1,new cljs.core.Keyword(null,"client","client",3951159101));var path = cljs.core.get.call(null,map__8242__$1,new cljs.core.Keyword(null,"path","path",1017337751));var haskell = cljs.core.get.call(null,map__8242__$1,new cljs.core.Keyword(null,"haskell","haskell",1711527270));if((cljs.core.not.call(null,haskell)) || (cljs.core.empty_QMARK_.call(null,haskell))) +lt.plugins.haskell.notify = (function notify(obj){var map__8289 = obj;var map__8289__$1 = ((cljs.core.seq_QMARK_.call(null,map__8289))?cljs.core.apply.call(null,cljs.core.hash_map,map__8289):map__8289);var client = cljs.core.get.call(null,map__8289__$1,new cljs.core.Keyword(null,"client","client",3951159101));var path = cljs.core.get.call(null,map__8289__$1,new cljs.core.Keyword(null,"path","path",1017337751));var haskell = cljs.core.get.call(null,map__8289__$1,new cljs.core.Keyword(null,"haskell","haskell",1711527270));if((cljs.core.not.call(null,haskell)) || (cljs.core.empty_QMARK_.call(null,haskell))) {lt.plugins.haskell.handle_no_haskell.call(null,client); } else {if(new cljs.core.Keyword(null,"else","else",1017020587)) @@ -391,7 +337,7 @@ return obj; }); lt.plugins.haskell.check_all = (function check_all(obj){return lt.plugins.haskell.notify.call(null,lt.plugins.haskell.check_client.call(null,lt.plugins.haskell.check_haskell.call(null,obj))); }); -lt.plugins.haskell.try_connect = (function try_connect(p__8243){var map__8245 = p__8243;var map__8245__$1 = ((cljs.core.seq_QMARK_.call(null,map__8245))?cljs.core.apply.call(null,cljs.core.hash_map,map__8245):map__8245);var info = cljs.core.get.call(null,map__8245__$1,new cljs.core.Keyword(null,"info","info",1017141280));var path = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(info);var client = lt.objs.clients.client_BANG_.call(null,new cljs.core.Keyword(null,"haskell.client","haskell.client",4292563063));lt.plugins.haskell.check_all.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"path","path",1017337751),path,new cljs.core.Keyword(null,"client","client",3951159101),client], null)); +lt.plugins.haskell.try_connect = (function try_connect(p__8290){var map__8292 = p__8290;var map__8292__$1 = ((cljs.core.seq_QMARK_.call(null,map__8292))?cljs.core.apply.call(null,cljs.core.hash_map,map__8292):map__8292);var info = cljs.core.get.call(null,map__8292__$1,new cljs.core.Keyword(null,"info","info",1017141280));var path = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(info);var client = lt.objs.clients.client_BANG_.call(null,new cljs.core.Keyword(null,"haskell.client","haskell.client",4292563063));lt.plugins.haskell.check_all.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"path","path",1017337751),path,new cljs.core.Keyword(null,"client","client",3951159101),client], null)); return client; }); lt.plugins.haskell.__BEH__connect = (function __BEH__connect(this$,path){return lt.plugins.haskell.try_connect.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"info","info",1017141280),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"path","path",1017337751),path], null)], null)); @@ -401,10 +347,10 @@ lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","has lt.plugins.haskell.haskell = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-lang","lt.plugins.haskell/haskell-lang",681521705)); lt.objs.sidebar.clients.add_connector.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),"Haskell",new cljs.core.Keyword(null,"desc","desc",1016984067),"Select a directory to serve as the root of your haskell project.",new cljs.core.Keyword(null,"connect","connect",1965255772),(function (){return lt.objs.dialogs.dir.call(null,lt.plugins.haskell.haskell,new cljs.core.Keyword(null,"connect","connect",1965255772)); })], null)); -lt.plugins.haskell.send_api_command = (function send_api_command(event,command,data){var map__8247 = event;var map__8247__$1 = ((cljs.core.seq_QMARK_.call(null,map__8247))?cljs.core.apply.call(null,cljs.core.hash_map,map__8247):map__8247);var origin = cljs.core.get.call(null,map__8247__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));var info = cljs.core.get.call(null,map__8247__$1,new cljs.core.Keyword(null,"info","info",1017141280));var client = new cljs.core.Keyword(null,"default","default",2558708147).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"client","client",3951159101).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,origin)));lt.objs.notifos.working.call(null,""); -return lt.objs.clients.send.call(null,lt.objs.eval.get_client_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"command","command",1964298941),command,new cljs.core.Keyword(null,"origin","origin",4300251800),origin,new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"create","create",3956577390),lt.plugins.haskell.try_connect], null)),command,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"data","data",1016980252),data], null),new cljs.core.Keyword(null,"only","only",1017320222),origin); +lt.plugins.haskell.send_api_command = (function send_api_command(event,command,data){var map__8294 = event;var map__8294__$1 = ((cljs.core.seq_QMARK_.call(null,map__8294))?cljs.core.apply.call(null,cljs.core.hash_map,map__8294):map__8294);var origin = cljs.core.get.call(null,map__8294__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));var info = cljs.core.get.call(null,map__8294__$1,new cljs.core.Keyword(null,"info","info",1017141280));var client = new cljs.core.Keyword(null,"default","default",2558708147).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"client","client",3951159101).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,origin)));var data__$1 = ((cljs.core.map_QMARK_.call(null,data))?data:new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"data","data",1016980252),data], null));lt.objs.notifos.working.call(null,""); +return lt.objs.clients.send.call(null,lt.objs.eval.get_client_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"command","command",1964298941),command,new cljs.core.Keyword(null,"origin","origin",4300251800),origin,new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"create","create",3956577390),lt.plugins.haskell.try_connect], null)),command,data__$1,new cljs.core.Keyword(null,"only","only",1017320222),origin); }); -lt.plugins.haskell.send_whole_file_command = (function send_whole_file_command(event,command){var map__8249 = event;var map__8249__$1 = ((cljs.core.seq_QMARK_.call(null,map__8249))?cljs.core.apply.call(null,cljs.core.hash_map,map__8249):map__8249);var origin = cljs.core.get.call(null,map__8249__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));return lt.plugins.haskell.send_api_command.call(null,event,command,lt.objs.tabs.__GT_path.call(null,origin)); +lt.plugins.haskell.send_whole_file_command = (function send_whole_file_command(event,command){var map__8296 = event;var map__8296__$1 = ((cljs.core.seq_QMARK_.call(null,map__8296))?cljs.core.apply.call(null,cljs.core.hash_map,map__8296):map__8296);var origin = cljs.core.get.call(null,map__8296__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));return lt.plugins.haskell.send_api_command.call(null,event,command,lt.objs.tabs.__GT_path.call(null,origin)); }); lt.plugins.haskell.current_buffer_content = (function current_buffer_content(){var cm = lt.objs.editor.__GT_cm_ed.call(null,lt.objs.editor.pool.last_active.call(null));return cm.getRange({"ch": 0, "line": 0},{"ch": 0, "line": lt.objs.editor.__GT_cm_ed.call(null,lt.objs.editor.pool.last_active.call(null)).lineCount()}); }); diff --git a/haskell_compiled.js.map b/haskell_compiled.js.map index 248a686..5fe458b 100644 --- a/haskell_compiled.js.map +++ b/haskell_compiled.js.map @@ -1,9 +1,9 @@ {"version":3, "file":"/home/lu/t/lt/Haskellcompiled.map", "sources":["src/lt/plugins/haskell.cljs"], - "lineCount":417, + "lineCount":363, "mappings": - "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", "names": ["lt.plugins.haskell/shell", "lt.util.load/node-module", "lt.plugins.haskell/plugin-dir", "lt.objs.plugins/find-plugin", @@ -17,7 +17,7 @@ "lt.plugins.haskell/hayoo->convert-doc", "hayoo-doc", "location", "func-name", "lt.plugins.haskell/hoogle->url", "lt.plugins.haskell/hoogle", "lt.plugins.haskell/hoogle->parse", - "lt.plugins.haskell/hoogle->convert-doc", "hoogle-doc", "vec__8226", + "lt.plugins.haskell/hoogle->convert-doc", "hoogle-doc", "vec__8275", "cljs.core/nth", "with-mod", "mod-package", "module-name", "explanation", "clojure.string/replace", "lt.plugins.haskell/convert-hoogle-results", "results", @@ -44,8 +44,8 @@ "clojure.string/join", "clojure.string/trim", "message", "js/parseInt", "lt.plugins.haskell/print-inline-error", "formatted-error", "lt.plugins.haskell/print-inline-errors", "data", - "seq__8231", "cljs.core/seq", "chunk__8232", "count__8233", - "i__8234", "cljs.core/-nth", "temp__4092__auto__", + "seq__8280", "cljs.core/seq", "chunk__8281", "count__8282", + "i__8283", "cljs.core/-nth", "temp__4092__auto__", "cljs.core/chunked-seq?", "c__7486__auto__", "cljs.core/chunk-first", "cljs.core/chunk-rest", "cljs.core/count", "cljs.core/next", "lt.plugins.haskell/handle-inline-errors", "result", @@ -62,44 +62,38 @@ "lt.plugins.haskell/__BEH__haskell-send-reformat", "lt.plugins.haskell/send-api-command", "lt.plugins.haskell/current-buffer-content", - "lt.plugins.haskell/__BEH__on-proc-out", "lt.object/update!", - "cljs.core/str", "lt.plugins.haskell/__BEH__on-proc-error", - "lt.plugins.haskell/__BEH__on-proc-exit", "cljs.core/constantly", - "lt.object/object*", "command", "args", "cwd", "init-fn", "p", - "lt.objs.proc/simple-spawn*", "n", "lt.plugins.haskell/find-project-dir", "file", "roots", "lt.objs.files/get-roots", "lt.objs.files/parent", "prev", - "cljs.core/=", "p1__8235#", "cljs.core/some", - "lt.objs.files/ls-sync", "lt.plugins.haskell/init-prompt", - "lt.plugins.haskell/ghci-process", "cb", "project-dir", "o", - "lt.object/create", "cljs.core/add-watch", "old", "new", "old-out", - "cljs.core/get-in", "new-out", "err-out", "and__6732__auto__", - "cljs.core/not=", "lt.plugins.haskell/ghci-command", "ghci-obj", - "stdin", "cljs.core/deref", "lt.plugins.haskell/selection-info", - "pos", "info", "lt.objs.editor/selection?", + "cljs.core/=", "p1__8284#", "cljs.core/some", + "lt.objs.files/ls-sync", "lt.plugins.haskell/__BEH__haskell-success", + "lt.plugins.haskell/__BEH__haskell-result", "cljs.core/prn", + "lt.plugins.haskell/__BEH__haskell-exception", + "lt.plugins.haskell/selection-info", "pos", "info", + "cljs.core/deref", "lt.objs.editor/selection?", "lt.objs.editor/selection", "lt.objs.editor/line", - "lt.plugins.haskell/show-result", "output", "error-output", - "clojure.string/split", "res", "cljs.core/peek", - "clojure.string/blank?", "lt.plugins.haskell/prepare-code", "code", - "lt.plugins.haskell/get-ghci", "ghci", "cljs.core/not", "p1__8236#", - "p2__8237#", "lt.plugins.haskell/__BEH__on-eval-one", + "lt.plugins.haskell/prepare-code", "code", + "lt.plugins.haskell/__BEH__on-eval-one", "clojure.string/blank?", + "lt.plugins.haskell/__BEH__haskell-type", "lt.plugins.haskell/__BEH__on-eval-type", "lt.plugins.haskell/lt-haskell-path", - "lt.plugins.haskell/__BEH__on-out", "out", "lt.object/merge!", + "lt.plugins.haskell/__BEH__on-out", "out", "lt.object/update!", + "cljs.core/str", "lt.object/merge!", "lt.plugins.haskell/__BEH__on-error", "cljs.core/println", - "lt.plugins.haskell/__BEH__on-exit", "p__8238", "map__8240", - "cljs.core/seq?", "cljs.core/apply", "cljs.core/hash-map", - "cljs.core/get", "lt.plugins.haskell/run-haskell", "path", "name", - "client", "obj", "client-id", "lt.objs.clients/->id", + "lt.plugins.haskell/__BEH__on-exit", "lt.object/object*", "p__8285", + "map__8287", "cljs.core/seq?", "cljs.core/apply", + "cljs.core/hash-map", "cljs.core/get", + "lt.plugins.haskell/run-haskell", "path", "name", "client", "obj", + "lt.object/create", "client-id", "lt.objs.clients/->id", "lt.objs.clients.tcp/port", "lt.objs.proc/exec", "lt.plugins.haskell/check-haskell", "lt.plugins.haskell/check-client", "lt.objs.files/exists?", "lt.plugins.haskell/handle-no-haskell", "lt.objs.clients/rem!", "lt.objs.popup/popup!", "platform/open", "lt.plugins.haskell/notify", - "map__8242", "haskell", "lt.plugins.haskell/check-all", "p__8243", - "map__8245", "lt.plugins.haskell/try-connect", - "lt.objs.clients/client!", "lt.plugins.haskell/__BEH__connect", + "map__8289", "haskell", "cljs.core/not", + "lt.plugins.haskell/check-all", "p__8290", "map__8292", + "lt.plugins.haskell/try-connect", "lt.objs.clients/client!", + "lt.plugins.haskell/__BEH__connect", "lt.objs.sidebar.clients/add-connector", "lt.objs.dialogs/dir", - "map__8247", "origin", "lt.objs.clients/send", - "lt.objs.eval/get-client!", "map__8249", "lt.objs.tabs/->path", "cm", - "lt.objs.editor/->cm-ed", "string"]} \ No newline at end of file + "command", "map__8294", "origin", "cljs.core/map?", + "lt.objs.clients/send", "lt.objs.eval/get-client!", "map__8296", + "lt.objs.tabs/->path", "cm", "lt.objs.editor/->cm-ed", "string"]} \ No newline at end of file diff --git a/src/lt/plugins/haskell.cljs b/src/lt/plugins/haskell.cljs index 1af7c1a..1a6e149 100644 --- a/src/lt/plugins/haskell.cljs +++ b/src/lt/plugins/haskell.cljs @@ -261,33 +261,6 @@ ;; evaluate code ;; ************************************** -(behavior ::on-proc-out - :triggers #{:proc.out} - :reaction (fn [this data] - (object/update! this [:proc :out] str (.toString data)))) - -(behavior ::on-proc-error - :triggers #{:proc.error} - :reaction (fn [this data] - (object/update! this [:proc :error] str (.toString data)))) - -(behavior ::on-proc-exit - :triggers #{:proc.exit} - :reaction (fn [this data] - (object/update! this [:running] (constantly false)))) - -(object/object* ::runner - :behaviors [::on-proc-out ::on-proc-error ::on-proc-exit] - :running true - :proc {:process nil :out nil :error nil} - :init (fn [this command args cwd init-fn] - (let [p (proc/simple-spawn* this {:command command, :args args} cwd {})] - (when init-fn - (init-fn p)) - (object/update! this [:proc :process] (fn [_ n] n) p) - (notifos/set-msg! (str "started " command " in " cwd)) - nil))) - (defn find-project-dir [file] (let [roots (files/get-roots)] (loop [cur (files/parent file) @@ -300,88 +273,57 @@ cur (recur (files/parent cur) cur)))))) -(defn init-prompt [p] - (.write (.-stdin p) ":set prompt \"--EvalFinished--\\n\"\n")) - -(defn ghci-process [file cb] - (let [project-dir (find-project-dir file) - o (if project-dir - (object/create ::runner "cabal" ["repl"] project-dir init-prompt) - (object/create ::runner "ghci" [] (files/parent file) init-prompt))] - (add-watch o :ghci-watch (fn [_ _ old new] - (let [old-out (get-in old [:proc :out]) - new-out (get-in new [:proc :out]) - err-out (get-in new [:proc :error])] - (if (and new-out - (not= old-out new-out) - (.contains new-out "--EvalFinished--")) - (cb new-out err-out))))) - o)) - -(defn ghci-command [ghci-obj command] - (let [stdin (.-stdin (get-in @ghci-obj [:proc :process]))] - (object/update! ghci-obj [:proc] (fn [p] - (assoc p :out nil :error nil))) - (.write stdin (str command "\n")))) +(behavior ::haskell-result + :triggers #{:editor.eval.haskell.result} + :reaction (fn [editor result] + (prn result) + (notifos/done-working) + (object/raise editor :editor.result (:data result) {:line (:line result)}))) + +(behavior ::haskell-exception + :triggers #{:editor.eval.haskell.exception} + :reaction (fn [editor result] + (notifos/done-working) + (object/raise editor :editor.exception (:data result) {:line (:line result)}))) (defn selection-info [editor] (let [pos (ed/->cursor editor) info (:info @editor) info (if (ed/selection? editor) (assoc info - :meta {:start (-> (ed/->cursor editor "start") :line) - :end (-> (ed/->cursor editor "end") :line)} + :line (-> (ed/->cursor editor "end") :line) :code (ed/selection editor)) (assoc info - :pos pos + :line (:line pos) :code (ed/line editor (:line pos))))] info)) -(defn show-result [editor loc] - (fn [output error-output] - (let [results (clj-string/split output "--EvalFinished--\n") - res (peek results) - res (if (clj-string/blank? res) - "-- ok" - res)] - (if error-output - (object/raise editor :editor.exception error-output loc) - (object/raise editor :editor.result res loc))))) - (defn prepare-code [code] (clj-string/replace code #"^(\w+)(\s+)?=" "let $1 =")) -(defn get-ghci [editor] - (let [ghci (-> @editor :haskell.client) - ghci (if-not ghci - (let [file (-> @editor :info :path) - ghci (ghci-process file #((get-in @editor [:haskell.result-fn]) %1 %2))] - (object/update! editor [:haskell.client] (fn [_ n] n) ghci) - ghci) - ghci)] - ghci)) - (behavior ::on-eval-one :triggers #{:eval.one} :reaction (fn [editor] (let [info (selection-info editor) - loc {:line (or (get-in info [:meta :end]) - (get-in info [:pos :line]))} - ghci (get-ghci editor)] + data {:data (:code info) + :line (:line info)}] (when-not (clj-string/blank? (:code info)) - (object/update! editor [:haskell.result-fn] (fn [_ n] n) (show-result editor loc)) - (ghci-command ghci (prepare-code (:code info))))))) + (send-api-command {:info info :origin editor} :haskell.api.eval data))))) + +(behavior ::haskell-type + :triggers #{:editor.eval.haskell.type} + :reaction (fn [editor result] + (notifos/done-working) + (object/raise :editor.result (:data result) {:line (:line result)}))) (behavior ::on-eval-type :triggers #{:eval.type} :reaction (fn [editor] (let [info (selection-info editor) - loc {:line (or (get-in info [:meta :end]) - (get-in info [:pos :line]))} - ghci (get-ghci editor)] + data {:data (:code info) + :line (:line info)}] (when-not (clj-string/blank? (:code info)) - (object/update! editor [:haskell.result-fn] (fn [_ n] n) (show-result editor loc)) - (ghci-command ghci (str ":type " (prepare-code (:code info)))))))) + (send-api-command {:info info :origin editor} :haskell.api.type data))))) (cmd/command {:command :editor-type-form :desc "Haskell: Get the type of a form in editor" @@ -493,13 +435,14 @@ (defn send-api-command [event command data] (let [{:keys [info origin]} event - client (-> @origin :client :default)] + client (-> @origin :client :default) + data (if (map? data) data {:data data})] (notifos/working "") (clients/send (eval/get-client! {:command command :origin origin :info info :create try-connect}) - command {:data data} :only origin))) + command data :only origin))) (defn send-whole-file-command [event command] (let [{:keys [origin]} event] From 818095029d2cdae4f66afb3f9ded6f9496ef65ed Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 17:22:11 +0100 Subject: [PATCH 11/13] Only display check mark if result is blank. --- haskell.behaviors | 1 + haskell/LTHaskellClient.hs | 5 +++ haskell_compiled.js | 90 ++++++++++++++++++------------------- haskell_compiled.js.map | 26 +++++------ src/lt/plugins/haskell.cljs | 7 ++- 5 files changed, 69 insertions(+), 60 deletions(-) diff --git a/haskell.behaviors b/haskell.behaviors index cabbb70..4749b6c 100644 --- a/haskell.behaviors +++ b/haskell.behaviors @@ -13,6 +13,7 @@ :lt.plugins.haskell/editor-lint-result :lt.plugins.haskell/on-eval-one + :lt.plugins.haskell/haskell-success :lt.plugins.haskell/haskell-result :lt.plugins.haskell/haskell-exception :lt.plugins.haskell/on-eval-type diff --git a/haskell/LTHaskellClient.hs b/haskell/LTHaskellClient.hs index 706a68b..61654e1 100644 --- a/haskell/LTHaskellClient.hs +++ b/haskell/LTHaskellClient.hs @@ -22,6 +22,7 @@ import Language.Haskell.GhcMod (check, defaultOptions, findCradle, import Language.Haskell.Stylish +import Data.Char (isSpace) import ReplSession main :: IO () @@ -88,11 +89,15 @@ execCommand state (LTCommand (cId, command, Just ltPayload)) = let line = ltLine ltPayload case result of Left msg -> respond "editor.eval.haskell.exception" $ LTPayload msg line + Right msg | isBlank msg -> respond "editor.eval.haskell.success" $ LTPayload "" line Right msg -> respond "editor.eval.haskell.result" $ LTPayload msg line respond :: (ToJSON a) => Command -> a -> IO () respond respCommand respPayload = sendResponse (ltHandle state) $ LTCommand (cId, respCommand, respPayload) +isBlank :: String -> Bool +isBlank = all isSpace + -- API types type Client = Int diff --git a/haskell_compiled.js b/haskell_compiled.js index 98f8b4a..21e897d 100644 --- a/haskell_compiled.js +++ b/haskell_compiled.js @@ -74,7 +74,7 @@ lt.plugins.haskell.hoogle__GT_parse = (function hoogle__GT_parse(response){retur lt.plugins.haskell.hoogle__GT_convert_doc = (function hoogle__GT_convert_doc(hoogle_doc){if((hoogle_doc == null)) {return null; } else -{var location = hoogle_doc.location;var vec__8275 = /http:\/\/hackage.haskell.org\/packages\/archive\/(.+)\/latest\/doc\/html\/(.+).html/.exec(location);var with_mod = cljs.core.nth.call(null,vec__8275,0,null);var mod_package = cljs.core.nth.call(null,vec__8275,1,null);var module_name = cljs.core.nth.call(null,vec__8275,2,null);var explanation = (((with_mod == null))?"":[cljs.core.str(" ("),cljs.core.str(mod_package),cljs.core.str(": "),cljs.core.str(clojure.string.replace.call(null,module_name,"-",".")),cljs.core.str(")")].join(''));return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),hoogle_doc.self,new cljs.core.Keyword(null,"ns","ns",1013907767),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"a","a",1013904339),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"href","href",1017115293),location], null),[cljs.core.str("Hoogle"),cljs.core.str(explanation)].join('')], null),new cljs.core.Keyword(null,"doc","doc",1014003882),hoogle_doc.docs], null); +{var location = hoogle_doc.location;var vec__8276 = /http:\/\/hackage.haskell.org\/packages\/archive\/(.+)\/latest\/doc\/html\/(.+).html/.exec(location);var with_mod = cljs.core.nth.call(null,vec__8276,0,null);var mod_package = cljs.core.nth.call(null,vec__8276,1,null);var module_name = cljs.core.nth.call(null,vec__8276,2,null);var explanation = (((with_mod == null))?"":[cljs.core.str(" ("),cljs.core.str(mod_package),cljs.core.str(": "),cljs.core.str(clojure.string.replace.call(null,module_name,"-",".")),cljs.core.str(")")].join(''));return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),hoogle_doc.self,new cljs.core.Keyword(null,"ns","ns",1013907767),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"a","a",1013904339),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"href","href",1017115293),location], null),[cljs.core.str("Hoogle"),cljs.core.str(explanation)].join('')], null),new cljs.core.Keyword(null,"doc","doc",1014003882),hoogle_doc.docs], null); } }); lt.plugins.haskell.convert_hoogle_results = (function convert_hoogle_results(results){var parsed_results = lt.plugins.haskell.hoogle__GT_parse.call(null,results);return cljs.core.map.call(null,lt.plugins.haskell.hoogle__GT_convert_doc,parsed_results); @@ -124,45 +124,45 @@ lt.plugins.haskell.format_inline_error = (function format_inline_error(error){va }); lt.plugins.haskell.print_inline_error = (function print_inline_error(editor,error){var formatted_error = lt.plugins.haskell.format_inline_error.call(null,error);return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.exception","editor.exception",3983021184),new cljs.core.Keyword(null,"msg","msg",1014012659).cljs$core$IFn$_invoke$arity$1(formatted_error),new cljs.core.Keyword(null,"loc","loc",1014011570).cljs$core$IFn$_invoke$arity$1(formatted_error)); }); -lt.plugins.haskell.print_inline_errors = (function print_inline_errors(editor,data){var seq__8280 = cljs.core.seq.call(null,data);var chunk__8281 = null;var count__8282 = 0;var i__8283 = 0;while(true){ -if((i__8283 < count__8282)) -{var error = cljs.core._nth.call(null,chunk__8281,i__8283);lt.plugins.haskell.print_inline_error.call(null,editor,error); +lt.plugins.haskell.print_inline_errors = (function print_inline_errors(editor,data){var seq__8281 = cljs.core.seq.call(null,data);var chunk__8282 = null;var count__8283 = 0;var i__8284 = 0;while(true){ +if((i__8284 < count__8283)) +{var error = cljs.core._nth.call(null,chunk__8282,i__8284);lt.plugins.haskell.print_inline_error.call(null,editor,error); { -var G__8297 = seq__8280; -var G__8298 = chunk__8281; -var G__8299 = count__8282; -var G__8300 = (i__8283 + 1); -seq__8280 = G__8297; -chunk__8281 = G__8298; -count__8282 = G__8299; -i__8283 = G__8300; +var G__8298 = seq__8281; +var G__8299 = chunk__8282; +var G__8300 = count__8283; +var G__8301 = (i__8284 + 1); +seq__8281 = G__8298; +chunk__8282 = G__8299; +count__8283 = G__8300; +i__8284 = G__8301; continue; } } else -{var temp__4092__auto__ = cljs.core.seq.call(null,seq__8280);if(temp__4092__auto__) -{var seq__8280__$1 = temp__4092__auto__;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8280__$1)) -{var c__7486__auto__ = cljs.core.chunk_first.call(null,seq__8280__$1);{ -var G__8301 = cljs.core.chunk_rest.call(null,seq__8280__$1); -var G__8302 = c__7486__auto__; -var G__8303 = cljs.core.count.call(null,c__7486__auto__); -var G__8304 = 0; -seq__8280 = G__8301; -chunk__8281 = G__8302; -count__8282 = G__8303; -i__8283 = G__8304; +{var temp__4092__auto__ = cljs.core.seq.call(null,seq__8281);if(temp__4092__auto__) +{var seq__8281__$1 = temp__4092__auto__;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8281__$1)) +{var c__7486__auto__ = cljs.core.chunk_first.call(null,seq__8281__$1);{ +var G__8302 = cljs.core.chunk_rest.call(null,seq__8281__$1); +var G__8303 = c__7486__auto__; +var G__8304 = cljs.core.count.call(null,c__7486__auto__); +var G__8305 = 0; +seq__8281 = G__8302; +chunk__8282 = G__8303; +count__8283 = G__8304; +i__8284 = G__8305; continue; } } else -{var error = cljs.core.first.call(null,seq__8280__$1);lt.plugins.haskell.print_inline_error.call(null,editor,error); +{var error = cljs.core.first.call(null,seq__8281__$1);lt.plugins.haskell.print_inline_error.call(null,editor,error); { -var G__8305 = cljs.core.next.call(null,seq__8280__$1); -var G__8306 = null; -var G__8307 = 0; +var G__8306 = cljs.core.next.call(null,seq__8281__$1); +var G__8307 = null; var G__8308 = 0; -seq__8280 = G__8305; -chunk__8281 = G__8306; -count__8282 = G__8307; -i__8283 = G__8308; +var G__8309 = 0; +seq__8281 = G__8306; +chunk__8282 = G__8307; +count__8283 = G__8308; +i__8284 = G__8309; continue; } } @@ -235,16 +235,16 @@ if(cljs.core.truth_((function (){var or__6744__auto__ = cljs.core.empty_QMARK_.c {return null; } else {if(cljs.core.truth_(cljs.core.some.call(null,((function (cur,prev){ -return (function (p1__8284_SHARP_){return p1__8284_SHARP_.endsWith(".cabal"); +return (function (p1__8285_SHARP_){return p1__8285_SHARP_.endsWith(".cabal"); });})(cur,prev)) ,lt.objs.files.ls_sync.call(null,cur)))) {return cur; } else {{ -var G__8309 = lt.objs.files.parent.call(null,cur); -var G__8310 = cur; -cur = G__8309; -prev = G__8310; +var G__8310 = lt.objs.files.parent.call(null,cur); +var G__8311 = cur; +cur = G__8310; +prev = G__8311; continue; } } @@ -253,11 +253,10 @@ break; } }); lt.plugins.haskell.__BEH__haskell_success = (function __BEH__haskell_success(editor,result){lt.objs.notifos.done_working.call(null); -return lt.object.raise.call(null,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),"\u2713",new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(result)], null)); +return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),"\u2713",new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(result)], null)); }); lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-success","lt.plugins.haskell/haskell-success",1936333612),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__haskell_success,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.haskell.success","editor.eval.haskell.success",2473581066),null], null), null)); -lt.plugins.haskell.__BEH__haskell_result = (function __BEH__haskell_result(editor,result){cljs.core.prn.call(null,result); -lt.objs.notifos.done_working.call(null); +lt.plugins.haskell.__BEH__haskell_result = (function __BEH__haskell_result(editor,result){lt.objs.notifos.done_working.call(null); return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.result","editor.result",4030217008),new cljs.core.Keyword(null,"data","data",1016980252).cljs$core$IFn$_invoke$arity$1(result),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(result)], null)); }); lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-result","lt.plugins.haskell/haskell-result",3373598232),new cljs.core.Keyword(null,"reaction","reaction",4441361819),lt.plugins.haskell.__BEH__haskell_result,new cljs.core.Keyword(null,"triggers","triggers",2516997421),new cljs.core.PersistentHashSet(null, new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"editor.eval.haskell.result","editor.eval.haskell.result",2680647258),null], null), null)); @@ -269,8 +268,7 @@ lt.plugins.haskell.selection_info = (function selection_info(editor){var pos = l }); lt.plugins.haskell.prepare_code = (function prepare_code(code){return clojure.string.replace.call(null,code,/^(\w+)(\s+)?=/,"let $1 ="); }); -lt.plugins.haskell.__BEH__on_eval_one = (function __BEH__on_eval_one(editor){var info = lt.plugins.haskell.selection_info.call(null,editor);var data = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"data","data",1016980252),new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info),new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(info)], null);cljs.core.prn.call(null,data); -if(cljs.core.truth_(clojure.string.blank_QMARK_.call(null,new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info)))) +lt.plugins.haskell.__BEH__on_eval_one = (function __BEH__on_eval_one(editor){var info = lt.plugins.haskell.selection_info.call(null,editor);var data = new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"data","data",1016980252),new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info),new cljs.core.Keyword(null,"line","line",1017226086),new cljs.core.Keyword(null,"line","line",1017226086).cljs$core$IFn$_invoke$arity$1(info)], null);if(cljs.core.truth_(clojure.string.blank_QMARK_.call(null,new cljs.core.Keyword(null,"code","code",1016963423).cljs$core$IFn$_invoke$arity$1(info)))) {return null; } else {return lt.plugins.haskell.send_api_command.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"origin","origin",4300251800),editor], null),new cljs.core.Keyword(null,"haskell.api.eval","haskell.api.eval",3607340572),data); @@ -313,7 +311,7 @@ lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","o lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),new cljs.core.Keyword(null,"triggers","triggers",2516997421),cljs.core.PersistentVector.EMPTY,new cljs.core.Keyword(null,"behaviors","behaviors",607554515),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("lt.plugins.haskell","on-out","lt.plugins.haskell/on-out",3479204322),new cljs.core.Keyword("lt.plugins.haskell","on-error","lt.plugins.haskell/on-error",4176683164),new cljs.core.Keyword("lt.plugins.haskell","on-exit","lt.plugins.haskell/on-exit",3263426510)], null),new cljs.core.Keyword(null,"init","init",1017141378),(function (this$,info){lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"info","info",1017141280),info], null)); return null; })); -lt.plugins.haskell.run_haskell = (function run_haskell(p__8285){var map__8287 = p__8285;var map__8287__$1 = ((cljs.core.seq_QMARK_.call(null,map__8287))?cljs.core.apply.call(null,cljs.core.hash_map,map__8287):map__8287);var info = map__8287__$1;var client = cljs.core.get.call(null,map__8287__$1,new cljs.core.Keyword(null,"client","client",3951159101));var name = cljs.core.get.call(null,map__8287__$1,new cljs.core.Keyword(null,"name","name",1017277949));var path = cljs.core.get.call(null,map__8287__$1,new cljs.core.Keyword(null,"path","path",1017337751));var obj = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),info);var client_id = lt.objs.clients.__GT_id.call(null,client);lt.object.merge_BANG_.call(null,client,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"port","port",1017351155),lt.objs.clients.tcp.port,new cljs.core.Keyword(null,"proc","proc",1017353928),obj], null)); +lt.plugins.haskell.run_haskell = (function run_haskell(p__8286){var map__8288 = p__8286;var map__8288__$1 = ((cljs.core.seq_QMARK_.call(null,map__8288))?cljs.core.apply.call(null,cljs.core.hash_map,map__8288):map__8288);var info = map__8288__$1;var client = cljs.core.get.call(null,map__8288__$1,new cljs.core.Keyword(null,"client","client",3951159101));var name = cljs.core.get.call(null,map__8288__$1,new cljs.core.Keyword(null,"name","name",1017277949));var path = cljs.core.get.call(null,map__8288__$1,new cljs.core.Keyword(null,"path","path",1017337751));var obj = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),info);var client_id = lt.objs.clients.__GT_id.call(null,client);lt.object.merge_BANG_.call(null,client,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"port","port",1017351155),lt.objs.clients.tcp.port,new cljs.core.Keyword(null,"proc","proc",1017353928),obj], null)); lt.objs.notifos.working.call(null,"Connecting.."); return lt.objs.proc.exec.call(null,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"command","command",1964298941),lt.plugins.haskell.binary_path,new cljs.core.Keyword(null,"args","args",1016906831),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [lt.objs.clients.tcp.port,client_id], null),new cljs.core.Keyword(null,"cwd","cwd",1014003170),lt.plugins.haskell.plugin_dir,new cljs.core.Keyword(null,"env","env",1014004831),new cljs.core.PersistentArrayMap(null, 1, ["HASKELL_PATH",lt.objs.files.join.call(null,lt.objs.files.parent.call(null,path))], null),new cljs.core.Keyword(null,"obj","obj",1014014057),obj], null)); }); @@ -325,7 +323,7 @@ lt.plugins.haskell.handle_no_haskell = (function handle_no_haskell(client){lt.ob return lt.objs.popup.popup_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"header","header",4087600639),"We couldn't find runhaskell.",new cljs.core.Keyword(null,"body","body",1016933652),"In order to start a haskell client, you have to have the haskell and haskell-platform installed and on your system's PATH.",new cljs.core.Keyword(null,"buttons","buttons",1255256819),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"Download Haskell Platform",new cljs.core.Keyword(null,"action","action",3885920680),(function (){return platform.open.call(null,"http://www.haskell.org/platform/"); })], null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"label","label",1116631654),"ok"], null)], null)], null)); }); -lt.plugins.haskell.notify = (function notify(obj){var map__8289 = obj;var map__8289__$1 = ((cljs.core.seq_QMARK_.call(null,map__8289))?cljs.core.apply.call(null,cljs.core.hash_map,map__8289):map__8289);var client = cljs.core.get.call(null,map__8289__$1,new cljs.core.Keyword(null,"client","client",3951159101));var path = cljs.core.get.call(null,map__8289__$1,new cljs.core.Keyword(null,"path","path",1017337751));var haskell = cljs.core.get.call(null,map__8289__$1,new cljs.core.Keyword(null,"haskell","haskell",1711527270));if((cljs.core.not.call(null,haskell)) || (cljs.core.empty_QMARK_.call(null,haskell))) +lt.plugins.haskell.notify = (function notify(obj){var map__8290 = obj;var map__8290__$1 = ((cljs.core.seq_QMARK_.call(null,map__8290))?cljs.core.apply.call(null,cljs.core.hash_map,map__8290):map__8290);var client = cljs.core.get.call(null,map__8290__$1,new cljs.core.Keyword(null,"client","client",3951159101));var path = cljs.core.get.call(null,map__8290__$1,new cljs.core.Keyword(null,"path","path",1017337751));var haskell = cljs.core.get.call(null,map__8290__$1,new cljs.core.Keyword(null,"haskell","haskell",1711527270));if((cljs.core.not.call(null,haskell)) || (cljs.core.empty_QMARK_.call(null,haskell))) {lt.plugins.haskell.handle_no_haskell.call(null,client); } else {if(new cljs.core.Keyword(null,"else","else",1017020587)) @@ -337,7 +335,7 @@ return obj; }); lt.plugins.haskell.check_all = (function check_all(obj){return lt.plugins.haskell.notify.call(null,lt.plugins.haskell.check_client.call(null,lt.plugins.haskell.check_haskell.call(null,obj))); }); -lt.plugins.haskell.try_connect = (function try_connect(p__8290){var map__8292 = p__8290;var map__8292__$1 = ((cljs.core.seq_QMARK_.call(null,map__8292))?cljs.core.apply.call(null,cljs.core.hash_map,map__8292):map__8292);var info = cljs.core.get.call(null,map__8292__$1,new cljs.core.Keyword(null,"info","info",1017141280));var path = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(info);var client = lt.objs.clients.client_BANG_.call(null,new cljs.core.Keyword(null,"haskell.client","haskell.client",4292563063));lt.plugins.haskell.check_all.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"path","path",1017337751),path,new cljs.core.Keyword(null,"client","client",3951159101),client], null)); +lt.plugins.haskell.try_connect = (function try_connect(p__8291){var map__8293 = p__8291;var map__8293__$1 = ((cljs.core.seq_QMARK_.call(null,map__8293))?cljs.core.apply.call(null,cljs.core.hash_map,map__8293):map__8293);var info = cljs.core.get.call(null,map__8293__$1,new cljs.core.Keyword(null,"info","info",1017141280));var path = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(info);var client = lt.objs.clients.client_BANG_.call(null,new cljs.core.Keyword(null,"haskell.client","haskell.client",4292563063));lt.plugins.haskell.check_all.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"path","path",1017337751),path,new cljs.core.Keyword(null,"client","client",3951159101),client], null)); return client; }); lt.plugins.haskell.__BEH__connect = (function __BEH__connect(this$,path){return lt.plugins.haskell.try_connect.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"info","info",1017141280),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"path","path",1017337751),path], null)], null)); @@ -347,10 +345,10 @@ lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","has lt.plugins.haskell.haskell = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-lang","lt.plugins.haskell/haskell-lang",681521705)); lt.objs.sidebar.clients.add_connector.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),"Haskell",new cljs.core.Keyword(null,"desc","desc",1016984067),"Select a directory to serve as the root of your haskell project.",new cljs.core.Keyword(null,"connect","connect",1965255772),(function (){return lt.objs.dialogs.dir.call(null,lt.plugins.haskell.haskell,new cljs.core.Keyword(null,"connect","connect",1965255772)); })], null)); -lt.plugins.haskell.send_api_command = (function send_api_command(event,command,data){var map__8294 = event;var map__8294__$1 = ((cljs.core.seq_QMARK_.call(null,map__8294))?cljs.core.apply.call(null,cljs.core.hash_map,map__8294):map__8294);var origin = cljs.core.get.call(null,map__8294__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));var info = cljs.core.get.call(null,map__8294__$1,new cljs.core.Keyword(null,"info","info",1017141280));var client = new cljs.core.Keyword(null,"default","default",2558708147).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"client","client",3951159101).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,origin)));var data__$1 = ((cljs.core.map_QMARK_.call(null,data))?data:new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"data","data",1016980252),data], null));lt.objs.notifos.working.call(null,""); +lt.plugins.haskell.send_api_command = (function send_api_command(event,command,data){var map__8295 = event;var map__8295__$1 = ((cljs.core.seq_QMARK_.call(null,map__8295))?cljs.core.apply.call(null,cljs.core.hash_map,map__8295):map__8295);var origin = cljs.core.get.call(null,map__8295__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));var info = cljs.core.get.call(null,map__8295__$1,new cljs.core.Keyword(null,"info","info",1017141280));var client = new cljs.core.Keyword(null,"default","default",2558708147).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"client","client",3951159101).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,origin)));var data__$1 = ((cljs.core.map_QMARK_.call(null,data))?data:new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"data","data",1016980252),data], null));lt.objs.notifos.working.call(null,""); return lt.objs.clients.send.call(null,lt.objs.eval.get_client_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"command","command",1964298941),command,new cljs.core.Keyword(null,"origin","origin",4300251800),origin,new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"create","create",3956577390),lt.plugins.haskell.try_connect], null)),command,data__$1,new cljs.core.Keyword(null,"only","only",1017320222),origin); }); -lt.plugins.haskell.send_whole_file_command = (function send_whole_file_command(event,command){var map__8296 = event;var map__8296__$1 = ((cljs.core.seq_QMARK_.call(null,map__8296))?cljs.core.apply.call(null,cljs.core.hash_map,map__8296):map__8296);var origin = cljs.core.get.call(null,map__8296__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));return lt.plugins.haskell.send_api_command.call(null,event,command,lt.objs.tabs.__GT_path.call(null,origin)); +lt.plugins.haskell.send_whole_file_command = (function send_whole_file_command(event,command){var map__8297 = event;var map__8297__$1 = ((cljs.core.seq_QMARK_.call(null,map__8297))?cljs.core.apply.call(null,cljs.core.hash_map,map__8297):map__8297);var origin = cljs.core.get.call(null,map__8297__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));return lt.plugins.haskell.send_api_command.call(null,event,command,lt.objs.tabs.__GT_path.call(null,origin)); }); lt.plugins.haskell.current_buffer_content = (function current_buffer_content(){var cm = lt.objs.editor.__GT_cm_ed.call(null,lt.objs.editor.pool.last_active.call(null));return cm.getRange({"ch": 0, "line": 0},{"ch": 0, "line": lt.objs.editor.__GT_cm_ed.call(null,lt.objs.editor.pool.last_active.call(null)).lineCount()}); }); diff --git a/haskell_compiled.js.map b/haskell_compiled.js.map index 5fe458b..4492f4c 100644 --- a/haskell_compiled.js.map +++ b/haskell_compiled.js.map @@ -1,9 +1,9 @@ {"version":3, "file":"/home/lu/t/lt/Haskellcompiled.map", "sources":["src/lt/plugins/haskell.cljs"], - "lineCount":363, + "lineCount":361, "mappings": - "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", "names": ["lt.plugins.haskell/shell", "lt.util.load/node-module", "lt.plugins.haskell/plugin-dir", "lt.objs.plugins/find-plugin", @@ -17,7 +17,7 @@ "lt.plugins.haskell/hayoo->convert-doc", "hayoo-doc", "location", "func-name", "lt.plugins.haskell/hoogle->url", "lt.plugins.haskell/hoogle", "lt.plugins.haskell/hoogle->parse", - "lt.plugins.haskell/hoogle->convert-doc", "hoogle-doc", "vec__8275", + "lt.plugins.haskell/hoogle->convert-doc", "hoogle-doc", "vec__8276", "cljs.core/nth", "with-mod", "mod-package", "module-name", "explanation", "clojure.string/replace", "lt.plugins.haskell/convert-hoogle-results", "results", @@ -44,8 +44,8 @@ "clojure.string/join", "clojure.string/trim", "message", "js/parseInt", "lt.plugins.haskell/print-inline-error", "formatted-error", "lt.plugins.haskell/print-inline-errors", "data", - "seq__8280", "cljs.core/seq", "chunk__8281", "count__8282", - "i__8283", "cljs.core/-nth", "temp__4092__auto__", + "seq__8281", "cljs.core/seq", "chunk__8282", "count__8283", + "i__8284", "cljs.core/-nth", "temp__4092__auto__", "cljs.core/chunked-seq?", "c__7486__auto__", "cljs.core/chunk-first", "cljs.core/chunk-rest", "cljs.core/count", "cljs.core/next", "lt.plugins.haskell/handle-inline-errors", "result", @@ -64,9 +64,9 @@ "lt.plugins.haskell/current-buffer-content", "lt.plugins.haskell/find-project-dir", "file", "roots", "lt.objs.files/get-roots", "lt.objs.files/parent", "prev", - "cljs.core/=", "p1__8284#", "cljs.core/some", + "cljs.core/=", "p1__8285#", "cljs.core/some", "lt.objs.files/ls-sync", "lt.plugins.haskell/__BEH__haskell-success", - "lt.plugins.haskell/__BEH__haskell-result", "cljs.core/prn", + "lt.plugins.haskell/__BEH__haskell-result", "lt.plugins.haskell/__BEH__haskell-exception", "lt.plugins.haskell/selection-info", "pos", "info", "cljs.core/deref", "lt.objs.editor/selection?", @@ -79,8 +79,8 @@ "lt.plugins.haskell/__BEH__on-out", "out", "lt.object/update!", "cljs.core/str", "lt.object/merge!", "lt.plugins.haskell/__BEH__on-error", "cljs.core/println", - "lt.plugins.haskell/__BEH__on-exit", "lt.object/object*", "p__8285", - "map__8287", "cljs.core/seq?", "cljs.core/apply", + "lt.plugins.haskell/__BEH__on-exit", "lt.object/object*", "p__8286", + "map__8288", "cljs.core/seq?", "cljs.core/apply", "cljs.core/hash-map", "cljs.core/get", "lt.plugins.haskell/run-haskell", "path", "name", "client", "obj", "lt.object/create", "client-id", "lt.objs.clients/->id", @@ -89,11 +89,11 @@ "lt.plugins.haskell/check-client", "lt.objs.files/exists?", "lt.plugins.haskell/handle-no-haskell", "lt.objs.clients/rem!", "lt.objs.popup/popup!", "platform/open", "lt.plugins.haskell/notify", - "map__8289", "haskell", "cljs.core/not", - "lt.plugins.haskell/check-all", "p__8290", "map__8292", + "map__8290", "haskell", "cljs.core/not", + "lt.plugins.haskell/check-all", "p__8291", "map__8293", "lt.plugins.haskell/try-connect", "lt.objs.clients/client!", "lt.plugins.haskell/__BEH__connect", "lt.objs.sidebar.clients/add-connector", "lt.objs.dialogs/dir", - "command", "map__8294", "origin", "cljs.core/map?", - "lt.objs.clients/send", "lt.objs.eval/get-client!", "map__8296", + "command", "map__8295", "origin", "cljs.core/map?", + "lt.objs.clients/send", "lt.objs.eval/get-client!", "map__8297", "lt.objs.tabs/->path", "cm", "lt.objs.editor/->cm-ed", "string"]} \ No newline at end of file diff --git a/src/lt/plugins/haskell.cljs b/src/lt/plugins/haskell.cljs index 1a6e149..c8e6e10 100644 --- a/src/lt/plugins/haskell.cljs +++ b/src/lt/plugins/haskell.cljs @@ -273,10 +273,15 @@ cur (recur (files/parent cur) cur)))))) +(behavior ::haskell-success + :triggers #{:editor.eval.haskell.success} + :reaction (fn [editor result] + (notifos/done-working) + (object/raise editor :editor.result "✓" {:line (:line result)}))) + (behavior ::haskell-result :triggers #{:editor.eval.haskell.result} :reaction (fn [editor result] - (prn result) (notifos/done-working) (object/raise editor :editor.result (:data result) {:line (:line result)}))) From 799eb42fd9afc6fb5de11c65086ef80db98725b3 Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 17:27:25 +0100 Subject: [PATCH 12/13] Support inferring the type of an expression again. --- haskell/LTHaskellClient.hs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/haskell/LTHaskellClient.hs b/haskell/LTHaskellClient.hs index 61654e1..e0d4ff6 100644 --- a/haskell/LTHaskellClient.hs +++ b/haskell/LTHaskellClient.hs @@ -92,6 +92,13 @@ execCommand state (LTCommand (cId, command, Just ltPayload)) = Right msg | isBlank msg -> respond "editor.eval.haskell.success" $ LTPayload "" line Right msg -> respond "editor.eval.haskell.result" $ LTPayload msg line + go "haskell.api.type" payloadData = do + result <- evalInSession (":type " ++ payloadData) $ ltReplSession state + let line = ltLine ltPayload + case result of + Left msg -> respond "editor.eval.haskell.exception" $ LTPayload msg line + Right msg -> respond "editor.eval.haskell.result" $ LTPayload msg line + respond :: (ToJSON a) => Command -> a -> IO () respond respCommand respPayload = sendResponse (ltHandle state) $ LTCommand (cId, respCommand, respPayload) From 2fe4d1398768b6754b6578f52c9bd57d74441074 Mon Sep 17 00:00:00 2001 From: Lucas Stadler Date: Sun, 26 Jan 2014 18:26:33 +0100 Subject: [PATCH 13/13] Pass the project directory to the server. And start the repl in that directory. --- haskell/LTHaskellClient.hs | 9 ++- haskell_compiled.js | 122 +++++++++++++++++++++++------------- haskell_compiled.js.map | 28 ++++----- src/lt/plugins/haskell.cljs | 17 ++++- 4 files changed, 111 insertions(+), 65 deletions(-) diff --git a/haskell/LTHaskellClient.hs b/haskell/LTHaskellClient.hs index e0d4ff6..1e88d28 100644 --- a/haskell/LTHaskellClient.hs +++ b/haskell/LTHaskellClient.hs @@ -27,17 +27,16 @@ import ReplSession main :: IO () main = withSocketsDo $ do - [portStr, clientIdStr] <- getArgs + [portStr, clientIdStr, projectDir] <- getArgs let port = fromIntegral (read portStr :: Int) clientId = read clientIdStr handle <- connectTo "localhost" (PortNumber port) - cwd <- getCurrentDirectory - client <- startSession cwd + client <- startSession projectDir - putStrLn $ "Connected: " ++ cwd + putStrLn $ "Connected: " ++ projectDir hFlush stdout - sendResponse handle $ LTConnection "Haskell" "haskell" clientId cwd ["haskell.api.reformat", "haskell.api.syntax"] + sendResponse handle $ LTConnection "Haskell" "haskell" clientId projectDir ["haskell.api.reformat", "haskell.api.syntax"] processCommands $ LTClientState handle client diff --git a/haskell_compiled.js b/haskell_compiled.js index 21e897d..6a8893f 100644 --- a/haskell_compiled.js +++ b/haskell_compiled.js @@ -74,7 +74,7 @@ lt.plugins.haskell.hoogle__GT_parse = (function hoogle__GT_parse(response){retur lt.plugins.haskell.hoogle__GT_convert_doc = (function hoogle__GT_convert_doc(hoogle_doc){if((hoogle_doc == null)) {return null; } else -{var location = hoogle_doc.location;var vec__8276 = /http:\/\/hackage.haskell.org\/packages\/archive\/(.+)\/latest\/doc\/html\/(.+).html/.exec(location);var with_mod = cljs.core.nth.call(null,vec__8276,0,null);var mod_package = cljs.core.nth.call(null,vec__8276,1,null);var module_name = cljs.core.nth.call(null,vec__8276,2,null);var explanation = (((with_mod == null))?"":[cljs.core.str(" ("),cljs.core.str(mod_package),cljs.core.str(": "),cljs.core.str(clojure.string.replace.call(null,module_name,"-",".")),cljs.core.str(")")].join(''));return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),hoogle_doc.self,new cljs.core.Keyword(null,"ns","ns",1013907767),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"a","a",1013904339),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"href","href",1017115293),location], null),[cljs.core.str("Hoogle"),cljs.core.str(explanation)].join('')], null),new cljs.core.Keyword(null,"doc","doc",1014003882),hoogle_doc.docs], null); +{var location = hoogle_doc.location;var vec__8191 = /http:\/\/hackage.haskell.org\/packages\/archive\/(.+)\/latest\/doc\/html\/(.+).html/.exec(location);var with_mod = cljs.core.nth.call(null,vec__8191,0,null);var mod_package = cljs.core.nth.call(null,vec__8191,1,null);var module_name = cljs.core.nth.call(null,vec__8191,2,null);var explanation = (((with_mod == null))?"":[cljs.core.str(" ("),cljs.core.str(mod_package),cljs.core.str(": "),cljs.core.str(clojure.string.replace.call(null,module_name,"-",".")),cljs.core.str(")")].join(''));return new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),hoogle_doc.self,new cljs.core.Keyword(null,"ns","ns",1013907767),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword(null,"a","a",1013904339),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"href","href",1017115293),location], null),[cljs.core.str("Hoogle"),cljs.core.str(explanation)].join('')], null),new cljs.core.Keyword(null,"doc","doc",1014003882),hoogle_doc.docs], null); } }); lt.plugins.haskell.convert_hoogle_results = (function convert_hoogle_results(results){var parsed_results = lt.plugins.haskell.hoogle__GT_parse.call(null,results);return cljs.core.map.call(null,lt.plugins.haskell.hoogle__GT_convert_doc,parsed_results); @@ -124,45 +124,45 @@ lt.plugins.haskell.format_inline_error = (function format_inline_error(error){va }); lt.plugins.haskell.print_inline_error = (function print_inline_error(editor,error){var formatted_error = lt.plugins.haskell.format_inline_error.call(null,error);return lt.object.raise.call(null,editor,new cljs.core.Keyword(null,"editor.exception","editor.exception",3983021184),new cljs.core.Keyword(null,"msg","msg",1014012659).cljs$core$IFn$_invoke$arity$1(formatted_error),new cljs.core.Keyword(null,"loc","loc",1014011570).cljs$core$IFn$_invoke$arity$1(formatted_error)); }); -lt.plugins.haskell.print_inline_errors = (function print_inline_errors(editor,data){var seq__8281 = cljs.core.seq.call(null,data);var chunk__8282 = null;var count__8283 = 0;var i__8284 = 0;while(true){ -if((i__8284 < count__8283)) -{var error = cljs.core._nth.call(null,chunk__8282,i__8284);lt.plugins.haskell.print_inline_error.call(null,editor,error); +lt.plugins.haskell.print_inline_errors = (function print_inline_errors(editor,data){var seq__8196 = cljs.core.seq.call(null,data);var chunk__8197 = null;var count__8198 = 0;var i__8199 = 0;while(true){ +if((i__8199 < count__8198)) +{var error = cljs.core._nth.call(null,chunk__8197,i__8199);lt.plugins.haskell.print_inline_error.call(null,editor,error); { -var G__8298 = seq__8281; -var G__8299 = chunk__8282; -var G__8300 = count__8283; -var G__8301 = (i__8284 + 1); -seq__8281 = G__8298; -chunk__8282 = G__8299; -count__8283 = G__8300; -i__8284 = G__8301; +var G__8224 = seq__8196; +var G__8225 = chunk__8197; +var G__8226 = count__8198; +var G__8227 = (i__8199 + 1); +seq__8196 = G__8224; +chunk__8197 = G__8225; +count__8198 = G__8226; +i__8199 = G__8227; continue; } } else -{var temp__4092__auto__ = cljs.core.seq.call(null,seq__8281);if(temp__4092__auto__) -{var seq__8281__$1 = temp__4092__auto__;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8281__$1)) -{var c__7486__auto__ = cljs.core.chunk_first.call(null,seq__8281__$1);{ -var G__8302 = cljs.core.chunk_rest.call(null,seq__8281__$1); -var G__8303 = c__7486__auto__; -var G__8304 = cljs.core.count.call(null,c__7486__auto__); -var G__8305 = 0; -seq__8281 = G__8302; -chunk__8282 = G__8303; -count__8283 = G__8304; -i__8284 = G__8305; +{var temp__4092__auto__ = cljs.core.seq.call(null,seq__8196);if(temp__4092__auto__) +{var seq__8196__$1 = temp__4092__auto__;if(cljs.core.chunked_seq_QMARK_.call(null,seq__8196__$1)) +{var c__7486__auto__ = cljs.core.chunk_first.call(null,seq__8196__$1);{ +var G__8228 = cljs.core.chunk_rest.call(null,seq__8196__$1); +var G__8229 = c__7486__auto__; +var G__8230 = cljs.core.count.call(null,c__7486__auto__); +var G__8231 = 0; +seq__8196 = G__8228; +chunk__8197 = G__8229; +count__8198 = G__8230; +i__8199 = G__8231; continue; } } else -{var error = cljs.core.first.call(null,seq__8281__$1);lt.plugins.haskell.print_inline_error.call(null,editor,error); +{var error = cljs.core.first.call(null,seq__8196__$1);lt.plugins.haskell.print_inline_error.call(null,editor,error); { -var G__8306 = cljs.core.next.call(null,seq__8281__$1); -var G__8307 = null; -var G__8308 = 0; -var G__8309 = 0; -seq__8281 = G__8306; -chunk__8282 = G__8307; -count__8283 = G__8308; -i__8284 = G__8309; +var G__8232 = cljs.core.next.call(null,seq__8196__$1); +var G__8233 = null; +var G__8234 = 0; +var G__8235 = 0; +seq__8196 = G__8232; +chunk__8197 = G__8233; +count__8198 = G__8234; +i__8199 = G__8235; continue; } } @@ -235,16 +235,16 @@ if(cljs.core.truth_((function (){var or__6744__auto__ = cljs.core.empty_QMARK_.c {return null; } else {if(cljs.core.truth_(cljs.core.some.call(null,((function (cur,prev){ -return (function (p1__8285_SHARP_){return p1__8285_SHARP_.endsWith(".cabal"); +return (function (p1__8200_SHARP_){return p1__8200_SHARP_.endsWith(".cabal"); });})(cur,prev)) ,lt.objs.files.ls_sync.call(null,cur)))) {return cur; } else {{ -var G__8310 = lt.objs.files.parent.call(null,cur); -var G__8311 = cur; -cur = G__8310; -prev = G__8311; +var G__8236 = lt.objs.files.parent.call(null,cur); +var G__8237 = cur; +cur = G__8236; +prev = G__8237; continue; } } @@ -311,9 +311,45 @@ lt.object.behavior_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","o lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),new cljs.core.Keyword(null,"triggers","triggers",2516997421),cljs.core.PersistentVector.EMPTY,new cljs.core.Keyword(null,"behaviors","behaviors",607554515),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.Keyword("lt.plugins.haskell","on-out","lt.plugins.haskell/on-out",3479204322),new cljs.core.Keyword("lt.plugins.haskell","on-error","lt.plugins.haskell/on-error",4176683164),new cljs.core.Keyword("lt.plugins.haskell","on-exit","lt.plugins.haskell/on-exit",3263426510)], null),new cljs.core.Keyword(null,"init","init",1017141378),(function (this$,info){lt.object.merge_BANG_.call(null,this$,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"info","info",1017141280),info], null)); return null; })); -lt.plugins.haskell.run_haskell = (function run_haskell(p__8286){var map__8288 = p__8286;var map__8288__$1 = ((cljs.core.seq_QMARK_.call(null,map__8288))?cljs.core.apply.call(null,cljs.core.hash_map,map__8288):map__8288);var info = map__8288__$1;var client = cljs.core.get.call(null,map__8288__$1,new cljs.core.Keyword(null,"client","client",3951159101));var name = cljs.core.get.call(null,map__8288__$1,new cljs.core.Keyword(null,"name","name",1017277949));var path = cljs.core.get.call(null,map__8288__$1,new cljs.core.Keyword(null,"path","path",1017337751));var obj = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),info);var client_id = lt.objs.clients.__GT_id.call(null,client);lt.object.merge_BANG_.call(null,client,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"port","port",1017351155),lt.objs.clients.tcp.port,new cljs.core.Keyword(null,"proc","proc",1017353928),obj], null)); +lt.plugins.haskell.find_project_dir = (function find_project_dir(file){var roots = lt.objs.files.get_roots.call(null);var cur = lt.objs.files.parent.call(null,file);var prev = "";while(true){ +if(cljs.core.truth_((function (){var or__6744__auto__ = cljs.core.empty_QMARK_.call(null,cur);if(or__6744__auto__) +{return or__6744__auto__; +} else +{var or__6744__auto____$1 = roots.call(null,cur);if(cljs.core.truth_(or__6744__auto____$1)) +{return or__6744__auto____$1; +} else +{return cljs.core._EQ_.call(null,cur,prev); +} +} +})())) +{return null; +} else +{if(cljs.core.truth_(cljs.core.some.call(null,((function (cur,prev){ +return (function (p1__8201_SHARP_){return p1__8201_SHARP_.endsWith(".cabal"); +});})(cur,prev)) +,lt.objs.files.ls_sync.call(null,cur)))) +{return cur; +} else +{{ +var G__8238 = lt.objs.files.parent.call(null,cur); +var G__8239 = cur; +cur = G__8238; +prev = G__8239; +continue; +} +} +} +break; +} +}); +lt.plugins.haskell.run_haskell = (function run_haskell(p__8202){var map__8204 = p__8202;var map__8204__$1 = ((cljs.core.seq_QMARK_.call(null,map__8204))?cljs.core.apply.call(null,cljs.core.hash_map,map__8204):map__8204);var info = map__8204__$1;var client = cljs.core.get.call(null,map__8204__$1,new cljs.core.Keyword(null,"client","client",3951159101));var name = cljs.core.get.call(null,map__8204__$1,new cljs.core.Keyword(null,"name","name",1017277949));var path = cljs.core.get.call(null,map__8204__$1,new cljs.core.Keyword(null,"path","path",1017337751));var obj = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","connecting-notifier","lt.plugins.haskell/connecting-notifier",4244447005),info);var client_id = lt.objs.clients.__GT_id.call(null,client);var project_dir = (function (){var or__6744__auto__ = lt.plugins.haskell.find_project_dir.call(null,path);if(cljs.core.truth_(or__6744__auto__)) +{return or__6744__auto__; +} else +{return lt.objs.files.parent.call(null,path); +} +})();lt.object.merge_BANG_.call(null,client,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"port","port",1017351155),lt.objs.clients.tcp.port,new cljs.core.Keyword(null,"proc","proc",1017353928),obj], null)); lt.objs.notifos.working.call(null,"Connecting.."); -return lt.objs.proc.exec.call(null,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"command","command",1964298941),lt.plugins.haskell.binary_path,new cljs.core.Keyword(null,"args","args",1016906831),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [lt.objs.clients.tcp.port,client_id], null),new cljs.core.Keyword(null,"cwd","cwd",1014003170),lt.plugins.haskell.plugin_dir,new cljs.core.Keyword(null,"env","env",1014004831),new cljs.core.PersistentArrayMap(null, 1, ["HASKELL_PATH",lt.objs.files.join.call(null,lt.objs.files.parent.call(null,path))], null),new cljs.core.Keyword(null,"obj","obj",1014014057),obj], null)); +return lt.objs.proc.exec.call(null,new cljs.core.PersistentArrayMap(null, 5, [new cljs.core.Keyword(null,"command","command",1964298941),lt.plugins.haskell.binary_path,new cljs.core.Keyword(null,"args","args",1016906831),new cljs.core.PersistentVector(null, 3, 5, cljs.core.PersistentVector.EMPTY_NODE, [lt.objs.clients.tcp.port,client_id,project_dir], null),new cljs.core.Keyword(null,"cwd","cwd",1014003170),lt.plugins.haskell.plugin_dir,new cljs.core.Keyword(null,"env","env",1014004831),new cljs.core.PersistentArrayMap(null, 1, ["HASKELL_PATH",lt.objs.files.join.call(null,lt.objs.files.parent.call(null,path))], null),new cljs.core.Keyword(null,"obj","obj",1014014057),obj], null)); }); lt.plugins.haskell.check_haskell = (function check_haskell(obj){return cljs.core.assoc.call(null,obj,new cljs.core.Keyword(null,"haskell","haskell",1711527270),lt.plugins.haskell.shell.which("cabal")); }); @@ -323,7 +359,7 @@ lt.plugins.haskell.handle_no_haskell = (function handle_no_haskell(client){lt.ob return lt.objs.popup.popup_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"header","header",4087600639),"We couldn't find runhaskell.",new cljs.core.Keyword(null,"body","body",1016933652),"In order to start a haskell client, you have to have the haskell and haskell-platform installed and on your system's PATH.",new cljs.core.Keyword(null,"buttons","buttons",1255256819),new cljs.core.PersistentVector(null, 2, 5, cljs.core.PersistentVector.EMPTY_NODE, [new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"label","label",1116631654),"Download Haskell Platform",new cljs.core.Keyword(null,"action","action",3885920680),(function (){return platform.open.call(null,"http://www.haskell.org/platform/"); })], null),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"label","label",1116631654),"ok"], null)], null)], null)); }); -lt.plugins.haskell.notify = (function notify(obj){var map__8290 = obj;var map__8290__$1 = ((cljs.core.seq_QMARK_.call(null,map__8290))?cljs.core.apply.call(null,cljs.core.hash_map,map__8290):map__8290);var client = cljs.core.get.call(null,map__8290__$1,new cljs.core.Keyword(null,"client","client",3951159101));var path = cljs.core.get.call(null,map__8290__$1,new cljs.core.Keyword(null,"path","path",1017337751));var haskell = cljs.core.get.call(null,map__8290__$1,new cljs.core.Keyword(null,"haskell","haskell",1711527270));if((cljs.core.not.call(null,haskell)) || (cljs.core.empty_QMARK_.call(null,haskell))) +lt.plugins.haskell.notify = (function notify(obj){var map__8206 = obj;var map__8206__$1 = ((cljs.core.seq_QMARK_.call(null,map__8206))?cljs.core.apply.call(null,cljs.core.hash_map,map__8206):map__8206);var client = cljs.core.get.call(null,map__8206__$1,new cljs.core.Keyword(null,"client","client",3951159101));var path = cljs.core.get.call(null,map__8206__$1,new cljs.core.Keyword(null,"path","path",1017337751));var haskell = cljs.core.get.call(null,map__8206__$1,new cljs.core.Keyword(null,"haskell","haskell",1711527270));if((cljs.core.not.call(null,haskell)) || (cljs.core.empty_QMARK_.call(null,haskell))) {lt.plugins.haskell.handle_no_haskell.call(null,client); } else {if(new cljs.core.Keyword(null,"else","else",1017020587)) @@ -335,7 +371,7 @@ return obj; }); lt.plugins.haskell.check_all = (function check_all(obj){return lt.plugins.haskell.notify.call(null,lt.plugins.haskell.check_client.call(null,lt.plugins.haskell.check_haskell.call(null,obj))); }); -lt.plugins.haskell.try_connect = (function try_connect(p__8291){var map__8293 = p__8291;var map__8293__$1 = ((cljs.core.seq_QMARK_.call(null,map__8293))?cljs.core.apply.call(null,cljs.core.hash_map,map__8293):map__8293);var info = cljs.core.get.call(null,map__8293__$1,new cljs.core.Keyword(null,"info","info",1017141280));var path = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(info);var client = lt.objs.clients.client_BANG_.call(null,new cljs.core.Keyword(null,"haskell.client","haskell.client",4292563063));lt.plugins.haskell.check_all.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"path","path",1017337751),path,new cljs.core.Keyword(null,"client","client",3951159101),client], null)); +lt.plugins.haskell.try_connect = (function try_connect(p__8207){var map__8209 = p__8207;var map__8209__$1 = ((cljs.core.seq_QMARK_.call(null,map__8209))?cljs.core.apply.call(null,cljs.core.hash_map,map__8209):map__8209);var info = cljs.core.get.call(null,map__8209__$1,new cljs.core.Keyword(null,"info","info",1017141280));var path = new cljs.core.Keyword(null,"path","path",1017337751).cljs$core$IFn$_invoke$arity$1(info);var client = lt.objs.clients.client_BANG_.call(null,new cljs.core.Keyword(null,"haskell.client","haskell.client",4292563063));lt.plugins.haskell.check_all.call(null,new cljs.core.PersistentArrayMap(null, 2, [new cljs.core.Keyword(null,"path","path",1017337751),path,new cljs.core.Keyword(null,"client","client",3951159101),client], null)); return client; }); lt.plugins.haskell.__BEH__connect = (function __BEH__connect(this$,path){return lt.plugins.haskell.try_connect.call(null,new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"info","info",1017141280),new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"path","path",1017337751),path], null)], null)); @@ -345,10 +381,10 @@ lt.object.object_STAR_.call(null,new cljs.core.Keyword("lt.plugins.haskell","has lt.plugins.haskell.haskell = lt.object.create.call(null,new cljs.core.Keyword("lt.plugins.haskell","haskell-lang","lt.plugins.haskell/haskell-lang",681521705)); lt.objs.sidebar.clients.add_connector.call(null,new cljs.core.PersistentArrayMap(null, 3, [new cljs.core.Keyword(null,"name","name",1017277949),"Haskell",new cljs.core.Keyword(null,"desc","desc",1016984067),"Select a directory to serve as the root of your haskell project.",new cljs.core.Keyword(null,"connect","connect",1965255772),(function (){return lt.objs.dialogs.dir.call(null,lt.plugins.haskell.haskell,new cljs.core.Keyword(null,"connect","connect",1965255772)); })], null)); -lt.plugins.haskell.send_api_command = (function send_api_command(event,command,data){var map__8295 = event;var map__8295__$1 = ((cljs.core.seq_QMARK_.call(null,map__8295))?cljs.core.apply.call(null,cljs.core.hash_map,map__8295):map__8295);var origin = cljs.core.get.call(null,map__8295__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));var info = cljs.core.get.call(null,map__8295__$1,new cljs.core.Keyword(null,"info","info",1017141280));var client = new cljs.core.Keyword(null,"default","default",2558708147).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"client","client",3951159101).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,origin)));var data__$1 = ((cljs.core.map_QMARK_.call(null,data))?data:new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"data","data",1016980252),data], null));lt.objs.notifos.working.call(null,""); +lt.plugins.haskell.send_api_command = (function send_api_command(event,command,data){var map__8211 = event;var map__8211__$1 = ((cljs.core.seq_QMARK_.call(null,map__8211))?cljs.core.apply.call(null,cljs.core.hash_map,map__8211):map__8211);var origin = cljs.core.get.call(null,map__8211__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));var info = cljs.core.get.call(null,map__8211__$1,new cljs.core.Keyword(null,"info","info",1017141280));var client = new cljs.core.Keyword(null,"default","default",2558708147).cljs$core$IFn$_invoke$arity$1(new cljs.core.Keyword(null,"client","client",3951159101).cljs$core$IFn$_invoke$arity$1(cljs.core.deref.call(null,origin)));var data__$1 = ((cljs.core.map_QMARK_.call(null,data))?data:new cljs.core.PersistentArrayMap(null, 1, [new cljs.core.Keyword(null,"data","data",1016980252),data], null));lt.objs.notifos.working.call(null,""); return lt.objs.clients.send.call(null,lt.objs.eval.get_client_BANG_.call(null,new cljs.core.PersistentArrayMap(null, 4, [new cljs.core.Keyword(null,"command","command",1964298941),command,new cljs.core.Keyword(null,"origin","origin",4300251800),origin,new cljs.core.Keyword(null,"info","info",1017141280),info,new cljs.core.Keyword(null,"create","create",3956577390),lt.plugins.haskell.try_connect], null)),command,data__$1,new cljs.core.Keyword(null,"only","only",1017320222),origin); }); -lt.plugins.haskell.send_whole_file_command = (function send_whole_file_command(event,command){var map__8297 = event;var map__8297__$1 = ((cljs.core.seq_QMARK_.call(null,map__8297))?cljs.core.apply.call(null,cljs.core.hash_map,map__8297):map__8297);var origin = cljs.core.get.call(null,map__8297__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));return lt.plugins.haskell.send_api_command.call(null,event,command,lt.objs.tabs.__GT_path.call(null,origin)); +lt.plugins.haskell.send_whole_file_command = (function send_whole_file_command(event,command){var map__8213 = event;var map__8213__$1 = ((cljs.core.seq_QMARK_.call(null,map__8213))?cljs.core.apply.call(null,cljs.core.hash_map,map__8213):map__8213);var origin = cljs.core.get.call(null,map__8213__$1,new cljs.core.Keyword(null,"origin","origin",4300251800));return lt.plugins.haskell.send_api_command.call(null,event,command,lt.objs.tabs.__GT_path.call(null,origin)); }); lt.plugins.haskell.current_buffer_content = (function current_buffer_content(){var cm = lt.objs.editor.__GT_cm_ed.call(null,lt.objs.editor.pool.last_active.call(null));return cm.getRange({"ch": 0, "line": 0},{"ch": 0, "line": lt.objs.editor.__GT_cm_ed.call(null,lt.objs.editor.pool.last_active.call(null)).lineCount()}); }); diff --git a/haskell_compiled.js.map b/haskell_compiled.js.map index 4492f4c..2577b56 100644 --- a/haskell_compiled.js.map +++ b/haskell_compiled.js.map @@ -1,9 +1,9 @@ {"version":3, "file":"/home/lu/t/lt/Haskellcompiled.map", "sources":["src/lt/plugins/haskell.cljs"], - "lineCount":361, + "lineCount":397, "mappings": - "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", "names": ["lt.plugins.haskell/shell", "lt.util.load/node-module", "lt.plugins.haskell/plugin-dir", "lt.objs.plugins/find-plugin", @@ -17,7 +17,7 @@ "lt.plugins.haskell/hayoo->convert-doc", "hayoo-doc", "location", "func-name", "lt.plugins.haskell/hoogle->url", "lt.plugins.haskell/hoogle", "lt.plugins.haskell/hoogle->parse", - "lt.plugins.haskell/hoogle->convert-doc", "hoogle-doc", "vec__8276", + "lt.plugins.haskell/hoogle->convert-doc", "hoogle-doc", "vec__8191", "cljs.core/nth", "with-mod", "mod-package", "module-name", "explanation", "clojure.string/replace", "lt.plugins.haskell/convert-hoogle-results", "results", @@ -44,8 +44,8 @@ "clojure.string/join", "clojure.string/trim", "message", "js/parseInt", "lt.plugins.haskell/print-inline-error", "formatted-error", "lt.plugins.haskell/print-inline-errors", "data", - "seq__8281", "cljs.core/seq", "chunk__8282", "count__8283", - "i__8284", "cljs.core/-nth", "temp__4092__auto__", + "seq__8196", "cljs.core/seq", "chunk__8197", "count__8198", + "i__8199", "cljs.core/-nth", "temp__4092__auto__", "cljs.core/chunked-seq?", "c__7486__auto__", "cljs.core/chunk-first", "cljs.core/chunk-rest", "cljs.core/count", "cljs.core/next", "lt.plugins.haskell/handle-inline-errors", "result", @@ -64,7 +64,7 @@ "lt.plugins.haskell/current-buffer-content", "lt.plugins.haskell/find-project-dir", "file", "roots", "lt.objs.files/get-roots", "lt.objs.files/parent", "prev", - "cljs.core/=", "p1__8285#", "cljs.core/some", + "cljs.core/=", "p1__8200#", "cljs.core/some", "lt.objs.files/ls-sync", "lt.plugins.haskell/__BEH__haskell-success", "lt.plugins.haskell/__BEH__haskell-result", "lt.plugins.haskell/__BEH__haskell-exception", @@ -79,21 +79,21 @@ "lt.plugins.haskell/__BEH__on-out", "out", "lt.object/update!", "cljs.core/str", "lt.object/merge!", "lt.plugins.haskell/__BEH__on-error", "cljs.core/println", - "lt.plugins.haskell/__BEH__on-exit", "lt.object/object*", "p__8286", - "map__8288", "cljs.core/seq?", "cljs.core/apply", - "cljs.core/hash-map", "cljs.core/get", + "lt.plugins.haskell/__BEH__on-exit", "lt.object/object*", + "p1__8201#", "p__8202", "map__8204", "cljs.core/seq?", + "cljs.core/apply", "cljs.core/hash-map", "cljs.core/get", "lt.plugins.haskell/run-haskell", "path", "name", "client", "obj", "lt.object/create", "client-id", "lt.objs.clients/->id", - "lt.objs.clients.tcp/port", "lt.objs.proc/exec", + "project-dir", "lt.objs.clients.tcp/port", "lt.objs.proc/exec", "lt.plugins.haskell/check-haskell", "lt.plugins.haskell/check-client", "lt.objs.files/exists?", "lt.plugins.haskell/handle-no-haskell", "lt.objs.clients/rem!", "lt.objs.popup/popup!", "platform/open", "lt.plugins.haskell/notify", - "map__8290", "haskell", "cljs.core/not", - "lt.plugins.haskell/check-all", "p__8291", "map__8293", + "map__8206", "haskell", "cljs.core/not", + "lt.plugins.haskell/check-all", "p__8207", "map__8209", "lt.plugins.haskell/try-connect", "lt.objs.clients/client!", "lt.plugins.haskell/__BEH__connect", "lt.objs.sidebar.clients/add-connector", "lt.objs.dialogs/dir", - "command", "map__8295", "origin", "cljs.core/map?", - "lt.objs.clients/send", "lt.objs.eval/get-client!", "map__8297", + "command", "map__8211", "origin", "cljs.core/map?", + "lt.objs.clients/send", "lt.objs.eval/get-client!", "map__8213", "lt.objs.tabs/->path", "cm", "lt.objs.editor/->cm-ed", "string"]} \ No newline at end of file diff --git a/src/lt/plugins/haskell.cljs b/src/lt/plugins/haskell.cljs index c8e6e10..f7b7341 100644 --- a/src/lt/plugins/haskell.cljs +++ b/src/lt/plugins/haskell.cljs @@ -371,15 +371,27 @@ (object/merge! this {:info info}) nil)) +(defn find-project-dir [file] + (let [roots (files/get-roots)] + (loop [cur (files/parent file) + prev ""] + (if (or (empty? cur) + (roots cur) + (= cur prev)) + nil + (if (some #(.endsWith % ".cabal") (files/ls-sync cur)) + cur + (recur (files/parent cur) cur)))))) (defn run-haskell [{:keys [path name client] :as info}] (let [obj (object/create ::connecting-notifier info) - client-id (clients/->id client)] + client-id (clients/->id client) + project-dir (or (find-project-dir path) (files/parent path))] (object/merge! client {:port tcp/port :proc obj}) (notifos/working "Connecting..") (proc/exec {:command binary-path - :args [tcp/port client-id] + :args [tcp/port client-id project-dir] :cwd plugin-dir :env {"HASKELL_PATH" (files/join (files/parent path))} :obj obj}))) @@ -464,4 +476,3 @@ string #js {:line 0 :ch 0} #js {:line (.lineCount (ed/->cm-ed (pool/last-active))) :ch 0}))) -