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 +9/−0
- example/Main.hs +1/−2
- haskell-lsp.cabal +2/−2
- src/Language/Haskell/LSP/Types/Capabilities.hs +195/−0
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