Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 20 additions & 17 deletions app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -34,19 +34,21 @@ import UnliftIO.Exception
import UnliftIO.Process
import UnliftIO.Temporary (withSystemTempDirectory)

import Transform.ClientNot
import Transform.ClientReq
import Transform.ClientRsp
import Transform.ServerNot
import Transform.ServerReq
import Transform.ServerRsp
import Transform.Util
import Language.LSP.NotebookLanguageServer.Transform.ClientNot
import Language.LSP.NotebookLanguageServer.Transform.ClientReq
import Language.LSP.NotebookLanguageServer.Transform.ClientRsp
import Language.LSP.NotebookLanguageServer.Transform.ServerNot
import Language.LSP.NotebookLanguageServer.Transform.ServerReq
import Language.LSP.NotebookLanguageServer.Transform.ServerRsp
import Language.LSP.NotebookLanguageServer.Transform.Util

import Language.LSP.NotebookLanguageServer.Parsing
import Language.LSP.NotebookLanguageServer.Process
import Language.LSP.NotebookLanguageServer.RequestMap
import Streams
import Language.LSP.Notebook
import Language.LSP.NotebookLanguageServer.Config
import Transform.Config


data Options = Options {
Expand Down Expand Up @@ -137,12 +139,13 @@ main = do
}

withMaybeShadowDir optShadowDirTemplate $ \maybeShadowDir -> do
transformerState <- newTransformerState maybeShadowDir optDidSaveDebouncePeriodMs
let config = rustNotebookConfig maybeShadowDir optDidSaveDebouncePeriodMs
transformerState <- newTransformerState

flip runLoggingT logFn $ filterLogger logFilterFn $ flip runReaderT transformerState $
withAsync (readWrappedOut clientReqMap serverReqMap wrappedOut sendToStdout) $ \_wrappedOutAsync ->
withAsync (readWrappedOut config clientReqMap serverReqMap wrappedOut sendToStdout) $ \_wrappedOutAsync ->
withAsync (readWrappedErr wrappedErr) $ \_wrappedErrAsync ->
withAsync (forever $ handleStdin wrappedIn clientReqMap serverReqMap) $ \_stdinAsync -> do
withAsync (forever $ handleStdin config wrappedIn clientReqMap serverReqMap) $ \_stdinAsync -> do
waitForProcess p >>= \case
ExitFailure n -> logErrorN [i|rust-analyzer subprocess exited with code #{n}|]
ExitSuccess -> logInfoN [i|rust-analyzer subprocess exited successfully|]
Expand All @@ -159,8 +162,8 @@ withMaybeShadowDir maybeTemplate cb = withSystemTempDirectory "rust-analyzer-sha

handleStdin :: forall m. (
MonadLoggerIO m, MonadReader (TransformerState RustNotebookTransformer) m, MonadUnliftIO m, MonadFail m
) => Handle -> MVar ClientRequestMap -> MVar ServerRequestMap -> m ()
handleStdin wrappedIn clientReqMap serverReqMap = do
) => NotebookConfig RustNotebookTransformer -> Handle -> MVar ClientRequestMap -> MVar ServerRequestMap -> m ()
handleStdin config wrappedIn clientReqMap serverReqMap = do
(A.eitherDecode <$> liftIO (parseStream stdin)) >>= \case
Left err -> logErr [i|Couldn't decode incoming message: #{err}|]
Right (x :: A.Value) -> do
Expand All @@ -176,9 +179,9 @@ handleStdin wrappedIn clientReqMap serverReqMap = do
modifyMVar_ clientReqMap $ \m -> case updateClientRequestMap m msgId (SMethodAndParams meth (msg ^. Lens.params)) of
Just m' -> return m'
Nothing -> return m
transformClientReq meth msg >>= liftIO . writeToHandle wrappedIn . A.encode
transformClientReq config meth msg >>= liftIO . writeToHandle wrappedIn . A.encode
Right (ClientToServerNot meth msg) ->
transformClientNot sendExtraNotification meth msg >>= (liftIO . writeToHandle wrappedIn . A.encode)
transformClientNot config sendExtraNotification meth msg >>= (liftIO . writeToHandle wrappedIn . A.encode)
where
sendExtraNotification :: SendExtraNotificationFn m
sendExtraNotification msg = do
Expand All @@ -187,8 +190,8 @@ handleStdin wrappedIn clientReqMap serverReqMap = do

readWrappedOut :: (
MonadUnliftIO m, MonadLoggerIO m, MonadReader (TransformerState RustNotebookTransformer) m, MonadFail m
) => MVar ClientRequestMap -> MVar ServerRequestMap -> Handle -> (forall a. ToJSON a => a -> m ()) -> m b
readWrappedOut clientReqMap serverReqMap wrappedOut sendToStdout = forever $ do
) => NotebookConfig RustNotebookTransformer -> MVar ClientRequestMap -> MVar ServerRequestMap -> Handle -> (forall a. ToJSON a => a -> m ()) -> m b
readWrappedOut config clientReqMap serverReqMap wrappedOut sendToStdout = forever $ do
(A.eitherDecode <$> liftIO (parseStream wrappedOut)) >>= \case
Left err -> logErr [i|Couldn't decode wrapped output: #{err}|]
Right (x :: A.Value) -> do
Expand All @@ -206,7 +209,7 @@ readWrappedOut clientReqMap serverReqMap wrappedOut sendToStdout = forever $ do
Nothing -> return m
sendToStdout (transformServerReq meth msg)
Right (ServerToClientRsp meth initialParams msg) ->
transformServerRsp meth initialParams msg >>= sendToStdout
transformServerRsp config meth initialParams msg >>= sendToStdout

readWrappedErr :: MonadLoggerIO m => Handle -> m ()
readWrappedErr wrappedErr = forever $ do
Expand Down
9 changes: 0 additions & 9 deletions package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,22 +38,13 @@ ghc-options:
library:
source-dirs: src
dependencies:
- aeson
- auto-update
- containers
- filepath
- lens
- lens-regex-pcre
- mtl
- network-uri
- notebook-language-server-core
- pcre-light
- random
- safe
- text-rope
- time
- unliftio-core
- uuid

executables:
rust-notebook-language-server:
Expand Down
23 changes: 2 additions & 21 deletions rust-notebook-language-server.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,7 @@ library
Language.LSP.Notebook
Language.LSP.Notebook.HeadTailTransformer
Language.LSP.Notebook.StripDirective
Transform.ClientNot
Transform.ClientNot.DidSave
Transform.ClientReq
Transform.ClientRsp
Transform.Common
Transform.ServerNot
Transform.ServerReq
Transform.ServerRsp
Transform.ServerRsp.Formatting
Transform.ServerRsp.Hover
Transform.Util
Transform.Config
other-modules:
Paths_rust_notebook_language_server
hs-source-dirs:
Expand All @@ -48,28 +38,19 @@ library
TypeApplications
ghc-options: -Wunused-packages -Wall -fno-warn-name-shadowing
build-depends:
aeson
, auto-update
, base >=4.7 && <5
base >=4.7 && <5
, containers
, filepath
, lens
, lens-regex-pcre
, lsp-types >=2.0.0.1
, monad-logger
, mtl
, network-uri
, notebook-language-server-core
, pcre-light
, random
, safe
, string-interpolate
, text
, text-rope
, time
, unliftio
, unliftio-core
, uuid
default-language: Haskell2010

executable rust-notebook-language-server
Expand Down
146 changes: 0 additions & 146 deletions src/Transform/ClientNot.hs

This file was deleted.

31 changes: 0 additions & 31 deletions src/Transform/ClientNot/DidSave.hs

This file was deleted.

Loading
Loading