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
5 changes: 3 additions & 2 deletions app/Main.hs
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ import UnliftIO.Exception
import UnliftIO.Process
import UnliftIO.Temporary (withSystemTempDirectory)

import Transform.ClientNot
import Language.LSP.NotebookLanguageServer.Transform.ClientNot
import Language.LSP.NotebookLanguageServer.Transform.ClientReq
import Language.LSP.NotebookLanguageServer.Transform.ClientRsp
import Language.LSP.NotebookLanguageServer.Transform.ServerNot
Expand All @@ -47,6 +47,7 @@ import Language.LSP.NotebookLanguageServer.Process
import Language.LSP.NotebookLanguageServer.RequestMap
import Streams
import Language.LSP.Notebook
import Transform.Config


data Options = Options {
Expand Down Expand Up @@ -178,7 +179,7 @@ handleStdin wrappedIn clientReqMap serverReqMap = do
Nothing -> return m
transformClientReq meth msg >>= liftIO . writeToHandle wrappedIn . A.encode
Right (ClientToServerNot meth msg) ->
transformClientNot sendExtraNotification meth msg >>= (liftIO . writeToHandle wrappedIn . A.encode)
transformClientNot rustNotebookConfig sendExtraNotification meth msg >>= (liftIO . writeToHandle wrappedIn . A.encode)
where
sendExtraNotification :: SendExtraNotificationFn m
sendExtraNotification msg = do
Expand Down
7 changes: 1 addition & 6 deletions package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,17 +38,12 @@ ghc-options:
library:
source-dirs: src
dependencies:
- aeson
- auto-update
- containers
- filepath
- lens
- mtl
- notebook-language-server-core
- pcre-light
- text-rope
- time
- unliftio-core
- uuid

executables:
rust-notebook-language-server:
Expand Down
11 changes: 3 additions & 8 deletions rust-notebook-language-server.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ library
Language.LSP.Notebook
Language.LSP.Notebook.HeadTailTransformer
Language.LSP.Notebook.StripDirective
Transform.ClientNot
Transform.Config
other-modules:
Paths_rust_notebook_language_server
hs-source-dirs:
Expand All @@ -38,23 +38,18 @@ 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
, lsp-types >=2.0.0.1
, monad-logger
, mtl
, notebook-language-server-core
, pcre-light
, 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.

52 changes: 52 additions & 0 deletions src/Transform/Config.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{-# LANGUAGE RankNTypes #-}

module Transform.Config (rustNotebookConfig) where

import Control.Monad.IO.Class
import Control.Monad.Logger
import Control.Monad.Reader
import qualified Data.Map as M
import Data.String.Interpolate
import qualified Data.Text as T
import qualified Data.Text.IO as T
import qualified Data.Text.Rope as Rope
import Language.LSP.Notebook
import Language.LSP.NotebookLanguageServer.Config
import Language.LSP.NotebookLanguageServer.Transform.ServerRsp.Hover (mkDocRegex)
import Language.LSP.NotebookLanguageServer.Transform.Util
import Language.LSP.Protocol.Types
import Language.LSP.Transformer (Doc)
import Text.Regex.PCRE.Light (Regex)
import System.FilePath
import UnliftIO.Directory
import UnliftIO.MVar


rustNotebookConfig :: NotebookConfig RustNotebookTransformer
rustNotebookConfig = NotebookConfig {
notebookConfigTransformerParams = transformerParams
, notebookConfigIdTransformerParams = idTransformerParams
, notebookConfigMakeShadowDocument = makeShadowDocument
, notebookConfigUnopenedUri = addExtensionToUri ".rs"
, notebookConfigOnDocumentsChanged = updateLibRs
, notebookConfigLanguageName = "rust"
}

makeShadowDocument :: TransformerMonad RustNotebookTransformer n => Uri -> Doc -> n (Uri, FilePath, Regex)
makeShadowDocument _origUri projected = do
TransformerState {transformerShadowDir} <- ask
identifier <- makeUUID' 15
let path = transformerShadowDir </> "src" </> identifier <.> "rs"
createDirectoryIfMissing True (takeDirectory path)
liftIO $ T.writeFile path (Rope.toText projected)
pure (filePathToUri path, path, mkDocRegex (T.pack (identifier <.> "rs")))

updateLibRs :: TransformerMonad RustNotebookTransformer m => m ()
updateLibRs = do
TransformerState {..} <- ask
docs <- readMVar transformerDocuments
let identifiers = [dropExtension (takeFileName newPath) | DocumentState {..} <- fmap snd (M.toList docs)]
let libRsContent = T.intercalate "\n" [T.pack ("mod " <> x <> ";") | x <- identifiers]
logInfoN [i|libRsContent: #{libRsContent}|]
liftIO $ createDirectoryIfMissing True (transformerShadowDir </> "src")
liftIO $ T.writeFile (transformerShadowDir </> "src" </> "lib.rs") libRsContent
2 changes: 1 addition & 1 deletion stack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ system-ghc: true

extra-deps:
- git: https://github.com/codedownio/notebook-language-server-core.git
commit: 6bcfcb6f9deabc8a0a37636a9dcb6ff835495dce
commit: db16c415168a1f150d43d1bf1f388d6e6272ec72

# - language-rust-0.2.0.27

Expand Down
13 changes: 12 additions & 1 deletion stack.yaml.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,18 @@
# For more information, please see the documentation at:
# https://docs.haskellstack.org/en/stable/topics/lock_files

packages: []
packages:
- completed:
commit: db16c415168a1f150d43d1bf1f388d6e6272ec72
git: https://github.com/codedownio/notebook-language-server-core.git
name: notebook-language-server-core
pantry-tree:
sha256: 8008b9ad9e853f1d819cb66c4bd01a5d0fc3bab7acd0f4549bfed09f1445f910
size: 1919
version: 0.1.0.0
original:
commit: db16c415168a1f150d43d1bf1f388d6e6272ec72
git: https://github.com/codedownio/notebook-language-server-core.git
snapshots:
- completed:
sha256: e532f0987cce63d549ae1ac942f7e52c91712c95c36447756a60e9279a68626d
Expand Down
Loading