From e947642c734b4dd081e59b2afcaf3228d1b2f5a9 Mon Sep 17 00:00:00 2001 From: Matthew Pickering Date: Fri, 1 Nov 2019 20:19:57 +0000 Subject: [PATCH] Track upstream --- lsp-test.cabal | 1 + src/Language/Haskell/LSP/Test.hs | 6 +++--- src/Language/Haskell/LSP/Test/Session.hs | 13 ++++++++----- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/lsp-test.cabal b/lsp-test.cabal index 80283b7..de93357 100644 --- a/lsp-test.cabal +++ b/lsp-test.cabal @@ -56,6 +56,7 @@ library , rope-utf16-splay , text , transformers + , temporary , unordered-containers if os(windows) build-depends: Win32 diff --git a/src/Language/Haskell/LSP/Test.hs b/src/Language/Haskell/LSP/Test.hs index 22091c3..b098bf7 100644 --- a/src/Language/Haskell/LSP/Test.hs +++ b/src/Language/Haskell/LSP/Test.hs @@ -188,7 +188,7 @@ runSessionWithConfig config serverExe caps rootDir session = do documentContents :: TextDocumentIdentifier -> Session T.Text documentContents doc = do vfs <- vfs <$> get - let file = vfs Map.! toNormalizedUri (doc ^. uri) + let file = vfsMap vfs Map.! toNormalizedUri (doc ^. uri) return $ Rope.toText $ Language.Haskell.LSP.VFS._text file -- | Parses an ApplyEditRequest, checks that it is for the passed document @@ -449,10 +449,10 @@ executeCodeAction action = do -- | Adds the current version to the document, as tracked by the session. getVersionedDoc :: TextDocumentIdentifier -> Session VersionedTextDocumentIdentifier getVersionedDoc (TextDocumentIdentifier uri) = do - fs <- vfs <$> get + fs <- vfsMap . vfs <$> get let ver = case fs Map.!? toNormalizedUri uri of - Just (VirtualFile v _ _) -> Just v + Just (VirtualFile v _) -> Just v _ -> Nothing return (VersionedTextDocumentIdentifier uri ver) diff --git a/src/Language/Haskell/LSP/Test/Session.hs b/src/Language/Haskell/LSP/Test/Session.hs index b8dbe2a..a4532b8 100644 --- a/src/Language/Haskell/LSP/Test/Session.hs +++ b/src/Language/Haskell/LSP/Test/Session.hs @@ -70,6 +70,7 @@ import System.Directory import System.IO import System.Process (ProcessHandle()) import System.Timeout +import System.IO.Temp -- | A session representing one instance of launching and connecting to a server. -- @@ -220,8 +221,10 @@ runSessionWithHandles serverIn serverOut serverProc serverHandler config caps ro mainThreadId <- myThreadId let context = SessionContext serverIn absRootDir messageChan reqMap initRsp config caps - initState = SessionState (IdInt 0) mempty mempty 0 False Nothing - runSession' = runSession context initState + initState tmp_dir = SessionState (IdInt 0) (VFS mempty tmp_dir) + mempty 0 False Nothing + runSession' ses = withSystemTempDirectory "lsp-test" $ \tmp_dir -> + runSession context (initState tmp_dir) ses errorHandler = throwTo mainThreadId :: SessionException -> IO() serverListenerLauncher = @@ -280,8 +283,8 @@ updateState (ReqApplyWorkspaceEdit r) = do forM_ bumpedVersions $ \(VersionedTextDocumentIdentifier uri v) -> modify $ \s -> let oldVFS = vfs s - update (VirtualFile oldV t mf) = VirtualFile (fromMaybe oldV v) t mf - newVFS = Map.adjust update (toNormalizedUri uri) oldVFS + update (VirtualFile oldV t) = VirtualFile (fromMaybe oldV v) t + newVFS = updateVFS (Map.adjust update (toNormalizedUri uri)) oldVFS in s { vfs = newVFS } where checkIfNeedsOpened uri = do @@ -289,7 +292,7 @@ updateState (ReqApplyWorkspaceEdit r) = do ctx <- ask -- if its not open, open it - unless (toNormalizedUri uri `Map.member` oldVFS) $ do + unless (toNormalizedUri uri `Map.member` (vfsMap oldVFS)) $ do let fp = fromJust $ uriToFilePath uri contents <- liftIO $ T.readFile fp let item = TextDocumentItem (filePathToUri fp) "" 0 contents -- 2.30.2