Adapt to custom methods changes in haskell-lsp
authorMoritz Kiefer <moritz.kiefer@purelyfunctional.org>
Tue, 4 Jun 2019 09:21:19 +0000 (11:21 +0200)
committerLuke Lau <luke_lau@icloud.com>
Thu, 13 Jun 2019 08:32:12 +0000 (09:32 +0100)
cabal.project [new file with mode: 0644]
src/Language/Haskell/LSP/Test/Decoding.hs
src/Language/Haskell/LSP/Test/Messages.hs
stack.yaml

diff --git a/cabal.project b/cabal.project
new file mode 100644 (file)
index 0000000..ac9b511
--- /dev/null
@@ -0,0 +1,11 @@
+packages:
+  ./.
+source-repository-package
+  type: git
+  location: https://github.com/alanz/haskell-lsp.git
+  tag: 491d8d2e33572b3868078f57a3375b2ac621f958
+source-repository-package
+  type: git
+  location: https://github.com/alanz/haskell-lsp.git
+  tag: 491d8d2e33572b3868078f57a3375b2ac621f958
+  subdir: haskell-lsp-types
index 337dee371db5ae67cbe3f898e1f8401a4d05609a..27c7770ec461cdebe16a17868419b440f986081a 100644 (file)
@@ -123,7 +123,7 @@ matchResponseMsgType req = case req of
 
 decodeFromServerMsg :: RequestMap -> B.ByteString -> FromServerMessage
 decodeFromServerMsg reqMap bytes =
-  case HM.lookup "method" (fromJust $ decode bytes :: Object) of
+  case HM.lookup "method" obj of
     Just methodStr -> case fromJSON methodStr of
       Success method -> case method of
         -- We can work out the type of the message
@@ -141,6 +141,10 @@ decodeFromServerMsg reqMap bytes =
         WorkspaceApplyEdit             -> ReqApplyWorkspaceEdit $ fromJust $ decode bytes
         WorkspaceWorkspaceFolders      -> error "ReqWorkspaceFolders not supported yet"
         WorkspaceConfiguration         -> error "ReqWorkspaceConfiguration not supported yet"
+        CustomServerMethod _
+            | "id" `HM.member` obj && "method" `HM.member` obj -> ReqCustomServer $ fromJust $ decode bytes
+            | "id" `HM.member` obj -> RspCustomServer $ fromJust $ decode bytes
+            | otherwise -> NotCustomServer $ fromJust $ decode bytes
 
       Error e -> error e
 
@@ -149,3 +153,4 @@ decodeFromServerMsg reqMap bytes =
         Just req -> matchResponseMsgType req bytes -- try to decode it to more specific type
         Nothing  -> error "Couldn't match up response with request"
       Nothing -> error "Couldn't decode message"
+    where obj = fromJust $ decode bytes :: Object
index 1a3805f07ff3d5cecc28adf08f345e8e8be66cb6..16813e2ce0c6c144262cd991c09de0516e712acb 100644 (file)
@@ -59,6 +59,7 @@ handleServerMessage request response notification msg = case msg of
     (ReqApplyWorkspaceEdit       m) -> request m
     (ReqShowMessage              m) -> request m
     (ReqUnregisterCapability     m) -> request m
+    (ReqCustomServer             m) -> request m
     (RspInitialize               m) -> response m
     (RspShutdown                 m) -> response m
     (RspHover                    m) -> response m
@@ -87,6 +88,7 @@ handleServerMessage request response notification msg = case msg of
     (RspDocumentColor            m) -> response m
     (RspColorPresentation        m) -> response m
     (RspFoldingRange             m) -> response m
+    (RspCustomServer             m) -> response m
     (NotPublishDiagnostics       m) -> notification m
     (NotLogMessage               m) -> notification m
     (NotShowMessage              m) -> notification m
@@ -95,6 +97,7 @@ handleServerMessage request response notification msg = case msg of
     (NotProgressDone             m) -> notification m
     (NotTelemetry                m) -> notification m
     (NotCancelRequestFromServer  m) -> notification m
+    (NotCustomServer             m) -> notification m
 
 handleClientMessage
     :: forall a.
@@ -145,4 +148,5 @@ handleClientMessage request response notification msg = case msg of
  (NotDidChangeWatchedFiles    m) -> notification m
  (NotDidChangeWorkspaceFolders m) -> notification m
  (NotProgressCancel           m) -> notification m
- (UnknownFromClientMessage    m) -> error $ "Unknown message sent from client: " ++ show m
+ (ReqCustomClient             m) -> request m
+ (NotCustomClient             m) -> notification m
index 9790abab9f6cb4681fd9fcddf163377fa9142fac..855f4e9c6c626831d0107355c899e64cbbf61d7d 100644 (file)
@@ -3,6 +3,9 @@ packages:
   - .
 
 extra-deps:
-  - haskell-lsp-0.13.0.0
-  - haskell-lsp-types-0.13.0.0
+  - git: https://github.com/alanz/haskell-lsp.git
+    commit: 491d8d2e33572b3868078f57a3375b2ac621f958
+    subdirs:
+      - .
+      - haskell-lsp-types
   - rope-utf16-splay-0.3.1.0