packages feed

haskell-lsp 0.4.0.0 → 0.5.0.0

raw patch · 4 files changed

+207/−4 lines, 4 filesdep ~haskell-lsp-typesPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: haskell-lsp-types

API changes (from Hackage documentation)

+ Language.Haskell.LSP.Types.Capabilities: capsForVersion :: LSPVersion -> ClientCapabilities
+ Language.Haskell.LSP.Types.Capabilities: data LSPVersion
+ Language.Haskell.LSP.Types.Capabilities: fullCaps :: ClientCapabilities

Files

ChangeLog.md view
@@ -1,5 +1,14 @@ # Revision history for haskell-lsp +## 0.5.0.0  -- 2018-xx-xx++* Update Command.arguments to match specification+* Update ClientCapabilities to v3.10+* Add MarkupContent+* Add new CompletionKinds+* Add new SymbolKinds+* Add preset version capabilities+ ## 0.4.0.0  -- 2018-07-10  * CodeAction support as per v3.8 of the specification, by @Bubba
example/Main.hs view
@@ -22,7 +22,6 @@ import           Data.Monoid #endif import qualified Data.Text                             as T-import qualified Data.Vector                           as V import qualified Language.Haskell.LSP.Control          as CTRL import qualified Language.Haskell.LSP.Core             as Core import           Language.Haskell.LSP.Diagnostics@@ -260,7 +259,7 @@               -- NOTE: the cmd needs to be registered via the InitializeResponse message. See lspOptions above               cmd = "lsp-hello-command"               -- need 'file' and 'start_pos'-              args = J.Array$ V.fromList+              args = J.List                       [ J.Object $ H.fromList [("file",     J.Object $ H.fromList [("textDocument",J.toJSON doc)])]                       , J.Object $ H.fromList [("start_pos",J.Object $ H.fromList [("position",    J.toJSON start)])]                       ]
haskell-lsp.cabal view
@@ -1,5 +1,5 @@ name:                haskell-lsp-version:             0.4.0.0+version:             0.5.0.0 synopsis:            Haskell library for the Microsoft Language Server Protocol  description:         An implementation of the types, and basic message server to@@ -44,7 +44,7 @@                      , filepath                      , hslogger                      , hashable-                     , haskell-lsp-types >= 0.4+                     , haskell-lsp-types >= 0.5                      , lens >= 4.15.2                      , mtl                      , network-uri
src/Language/Haskell/LSP/Types/Capabilities.hs view
@@ -1,6 +1,201 @@ module Language.Haskell.LSP.Types.Capabilities   (     module Language.Haskell.LSP.TH.ClientCapabilities+  , fullCaps+  , LSPVersion+  , capsForVersion   ) where +import Prelude hiding (min) import Language.Haskell.LSP.TH.ClientCapabilities+import Language.Haskell.LSP.TH.DataTypesJSON++-- | The whole shebang. The real deal.+-- Capabilities for full conformance to the current (v3.10) LSP specification.+fullCaps :: ClientCapabilities+fullCaps = capsForVersion (LSPVersion maxBound maxBound)++-- | A specific version of the LSP specification.+data LSPVersion = LSPVersion Int Int -- ^ Construct a major.minor version++-- | Capabilities for full conformance to the LSP specification up until a version.+-- Some important milestones:+--+-- * 3.9 completion item preselect+-- * 3.8 codeAction literals+-- * 3.7 related information in diagnostics+-- * 3.6 workspace folders, colors, goto type/implementation+-- * 3.4 extended completion item and symbol item kinds+-- * 3.0 dynamic registration+capsForVersion :: LSPVersion -> ClientCapabilities+capsForVersion (LSPVersion maj min) = ClientCapabilities (Just w) (Just td) Nothing+  where+    w = WorkspaceClientCapabilities+          (Just True)+          (Just (WorkspaceEditClientCapabilities (Just True)))+          (Just (DidChangeConfigurationClientCapabilities dynamicReg))+          (Just (DidChangeWatchedFilesClientCapabilities dynamicReg))+          (Just symbol)+          (Just (ExecuteClientCapabilities dynamicReg))+          (since 3 6 True)+          (since 3 6 True)++    symbol = SymbolClientCapabilities+      dynamicReg+      (since 3 4 symbolKind)++    symbolKind = +      SymbolKindClientCapabilities (Just sKs)++    sKs +      | maj >= 3 && min >= 4 = List (oldSKs ++ newSKs)+      | otherwise            = List oldSKs+    +    oldSKs =   [ SkFile+               , SkModule+               , SkNamespace+               , SkPackage+               , SkClass+               , SkMethod+               , SkProperty+               , SkField+               , SkConstructor+               , SkEnum+               , SkInterface+               , SkFunction+               , SkVariable+               , SkConstant+               , SkString+               , SkNumber+               , SkBoolean+               , SkArray+               ]++    newSKs = [ SkObject+             , SkKey+             , SkNull+             , SkEnumMember+             , SkStruct+             , SkEvent+             , SkOperator+             , SkTypeParameter+             ]++    td = TextDocumentClientCapabilities+          (Just sync)+          (Just completion)+          (Just hover)+          (Just signatureHelp)+          (Just (ReferencesClientCapabilities dynamicReg))+          (Just (DocumentHighlightClientCapabilities dynamicReg))+          (Just documentSymbol)+          (Just (FormattingClientCapabilities (Just True)))+          (Just (RangeFormattingClientCapabilities dynamicReg))+          (Just (OnTypeFormattingClientCapabilities dynamicReg))+          (Just (DefinitionClientCapabilities dynamicReg))+          (since 3 6 (TypeDefinitionClientCapabilities dynamicReg))+          (since 3 6 (ImplementationClientCapabilities dynamicReg))+          (Just codeAction)+          (Just (CodeLensClientCapabilities dynamicReg))+          (Just (DocumentLinkClientCapabilities dynamicReg))+          (since 3 6 (ColorProviderClientCapabilities dynamicReg))+          (Just (RenameClientCapabilities dynamicReg))+          (Just (PublishDiagnosticsClientCapabilities (since 3 7 True)))+    sync =+      SynchronizationTextDocumentClientCapabilities+        dynamicReg+        (Just True)+        (Just True)+        (Just True)+     +    completion =+      CompletionClientCapabilities+        dynamicReg+        (Just completionItem)+        (since 3 4 completionItemKind)+        (since 3 3 True)++    completionItem = CompletionItemClientCapabilities+      (Just True)+      (Just True)+      (since 3 3 (List [MkPlainText, MkMarkdown]))+      (Just True)+      (since 3 9 True)++    completionItemKind =+      CompletionItemKindClientCapabilities (Just ciKs)++    ciKs+      | maj >= 3 && min >= 4 = List (oldCiKs ++ newCiKs)+      | otherwise            = List oldCiKs++    oldCiKs =   [ CiText+                , CiMethod+                , CiFunction+                , CiConstructor+                , CiField+                , CiVariable+                , CiClass+                , CiInterface+                , CiModule+                , CiProperty+                , CiUnit+                , CiValue+                , CiEnum+                , CiKeyword+                , CiSnippet+                , CiColor+                , CiFile+                , CiReference+                ]++    newCiKs =   [ CiFolder+                , CiEnumMember+                , CiConstant+                , CiStruct+                , CiEvent+                , CiOperator+                , CiTypeParameter+                ]+    +    hover =+      HoverClientCapabilities+        dynamicReg+        (since 3 3 (List [MkPlainText, MkMarkdown]))++    codeAction = CodeActionClientCapabilities+                  dynamicReg+                  (since 3 8 (CodeActionLiteralSupport caKs))+    caKs = CodeActionKindClientCapabilities+              (List [ CodeActionQuickFix+                    , CodeActionRefactor+                    , CodeActionRefactorExtract+                    , CodeActionRefactorInline+                    , CodeActionRefactorRewrite+                    , CodeActionSource+                    , CodeActionSourceOrganizeImports+                    ])++    signatureHelp =+      SignatureHelpClientCapabilities+        dynamicReg+        (Just signatureInformation)+    +    signatureInformation =+      SignatureInformationClientCapabilities+        (Just (List [MkPlainText, MkMarkdown]))+    +    documentSymbol = DocumentSymbolClientCapabilities+      dynamicReg+      (since 3 4 documentSymbolKind)++    documentSymbolKind =+      DocumentSymbolKindClientCapabilities+        (Just sKs) -- same as workspace symbol kinds++    dynamicReg+      | maj >= 3  = Just True+      | otherwise = Nothing+    since x y a+      | maj >= x && min >= y = Just a+      | otherwise            = Nothing