@@ -19,11 +19,10 @@ import qualified Data.Aeson as A
1919import Data.Aeson ((.=) )
2020import Data.Bifunctor (first , second , bimap )
2121import qualified Data.ByteString as BS
22- import qualified Data.ByteString.Char8 as BS.Char8
2322import qualified Data.ByteString.Lazy as BL
2423import qualified Data.ByteString.Lazy.Char8 as BL.Char8
2524import Data.Default (def )
26- import Data.Function (on , fix )
25+ import Data.Function (on )
2726import qualified Data.IORef as IORef
2827import Data.List (nubBy )
2928import qualified Data.List.NonEmpty as NE
@@ -52,7 +51,6 @@ import System.Environment (getArgs)
5251import System.Exit (exitFailure )
5352import System.FilePath.Glob (glob )
5453import qualified System.IO as IO
55- import System.IO (BufferMode (NoBuffering ))
5654import qualified System.Process as Process
5755import Web.Scotty
5856import qualified Web.Scotty as Scotty
@@ -120,7 +118,6 @@ buildMakeActions codegenRef =
120118 outputPrimDocs :: Make. Make ()
121119 outputPrimDocs = pure ()
122120
123-
124121server :: [P. ExternsFile ] -> P. Env -> P. Environment -> Int -> String -> IO ()
125122server externs initNamesEnv initEnv port pursIDEPortString = do
126123 codegenRef <- IORef. newIORef Nothing
@@ -166,19 +163,33 @@ server externs initNamesEnv initEnv port pursIDEPortString = do
166163 Right (warnings, comp) ->
167164 Scotty. json $ A. object [ " js" .= comp, " warnings" .= warnings ]
168165
169- post " /complete" $ do
166+ get " /complete" $ do
167+ query <- param " q"
170168 Scotty. setHeader " Access-Control-Allow-Origin" " *"
171169 Scotty. setHeader " Content-Type" " application/json"
170+ let mkCommand q = A. encode $ A. object
171+ [ " command" .= (" complete" :: Text )
172+ , " params" .= A. object
173+ [ " filters" .= A. Array
174+ ( V. fromList
175+ [ A. object
176+ [ " filter" .= (" prefix" :: Text )
177+ , " params" .= A. object
178+ [ " search" .= q ]
179+ ]
180+ ]
181+ )
182+ ]
183+ ]
172184 (Just handleIn, Just handleOut, _, _) <- liftIO $
173185 Process. createProcess_
174186 " purs-ide-client"
175187 (Process. proc " purs" [" ide" , " client" , " -p" , pursIDEPortString])
176188 { Process. std_in = Process. CreatePipe
177189 , Process. std_out = Process. CreatePipe
178190 }
179- liftIO (IO. hSetBuffering handleIn NoBuffering )
180- command <- BL.Char8. toStrict <$> body
181- liftIO (BS.Char8. hPutStrLn handleIn command)
191+ liftIO (IO. hSetBuffering handleIn IO. NoBuffering )
192+ liftIO (BL.Char8. hPutStrLn handleIn (mkCommand (query :: Text )))
182193 result <- liftIO (BS. hGetContents handleOut)
183194 Scotty. text (TL. fromStrict (T. decodeUtf8 result))
184195
@@ -265,6 +276,6 @@ main = do
265276 case e of
266277 Left err -> print err >> exitFailure
267278 Right (exts, namesEnv, env) -> do
268- let ideServer = Process. proc " purs" (" ide" : " server" : " -p" : pursIDEPortString: inputGlobs)
269- Process. withCreateProcess ideServer $
279+ let pursIDEServer = Process. proc " purs" (" ide" : " server" : " -p" : pursIDEPortString: inputGlobs)
280+ Process. withCreateProcess pursIDEServer $
270281 \ _ _ _ _ -> server exts namesEnv env port pursIDEPortString
0 commit comments