1{-# LANGUAGE DuplicateRecordFields #-} 2{-# LANGUAGE TemplateHaskell #-} 3 4module Language.LSP.Types.ClientCapabilities where 5 6import Data.Aeson.TH 7import qualified Data.Aeson as A 8import Data.Default 9import Language.LSP.Types.CallHierarchy 10import Language.LSP.Types.CodeAction 11import Language.LSP.Types.CodeLens 12import Language.LSP.Types.Command 13import Language.LSP.Types.Completion 14import Language.LSP.Types.Configuration 15import Language.LSP.Types.Diagnostic 16import Language.LSP.Types.Declaration 17import Language.LSP.Types.Definition 18import Language.LSP.Types.DocumentColor 19import Language.LSP.Types.DocumentHighlight 20import Language.LSP.Types.DocumentLink 21import Language.LSP.Types.DocumentSymbol 22import Language.LSP.Types.FoldingRange 23import Language.LSP.Types.Formatting 24import Language.LSP.Types.Hover 25import Language.LSP.Types.Implementation 26import Language.LSP.Types.References 27import Language.LSP.Types.Rename 28import Language.LSP.Types.SelectionRange 29import Language.LSP.Types.SemanticTokens 30import Language.LSP.Types.SignatureHelp 31import Language.LSP.Types.TextDocument 32import Language.LSP.Types.TypeDefinition 33import Language.LSP.Types.Utils 34import Language.LSP.Types.WatchedFiles 35import Language.LSP.Types.WorkspaceEdit 36import Language.LSP.Types.WorkspaceSymbol 37 38 39data WorkspaceClientCapabilities = 40 WorkspaceClientCapabilities 41 { -- | The client supports applying batch edits to the workspace by supporting 42 -- the request 'workspace/applyEdit' 43 _applyEdit :: Maybe Bool 44 45 -- | Capabilities specific to `WorkspaceEdit`s 46 , _workspaceEdit :: Maybe WorkspaceEditClientCapabilities 47 48 -- | Capabilities specific to the `workspace/didChangeConfiguration` notification. 49 , _didChangeConfiguration :: Maybe DidChangeConfigurationClientCapabilities 50 51 -- | Capabilities specific to the `workspace/didChangeWatchedFiles` notification. 52 , _didChangeWatchedFiles :: Maybe DidChangeWatchedFilesClientCapabilities 53 54 -- | Capabilities specific to the `workspace/symbol` request. 55 , _symbol :: Maybe WorkspaceSymbolClientCapabilities 56 57 -- | Capabilities specific to the `workspace/executeCommand` request. 58 , _executeCommand :: Maybe ExecuteCommandClientCapabilities 59 60 -- | The client has support for workspace folders. 61 , _workspaceFolders :: Maybe Bool 62 63 -- | The client supports `workspace/configuration` requests. 64 , _configuration :: Maybe Bool 65 66 -- | Capabilities specific to the semantic token requests scoped to the 67 -- workspace. 68 -- 69 -- @since 3.16.0 70 , _semanticTokens :: Maybe SemanticTokensWorkspaceClientCapabilities 71 } deriving (Show, Read, Eq) 72 73deriveJSON lspOptions ''WorkspaceClientCapabilities 74 75instance Default WorkspaceClientCapabilities where 76 def = WorkspaceClientCapabilities def def def def def def def def def 77 78-- ------------------------------------- 79 80data TextDocumentClientCapabilities = 81 TextDocumentClientCapabilities 82 { _synchronization :: Maybe TextDocumentSyncClientCapabilities 83 84 -- | Capabilities specific to the `textDocument/completion` 85 , _completion :: Maybe CompletionClientCapabilities 86 87 -- | Capabilities specific to the `textDocument/hover` 88 , _hover :: Maybe HoverClientCapabilities 89 90 -- | Capabilities specific to the `textDocument/signatureHelp` 91 , _signatureHelp :: Maybe SignatureHelpClientCapabilities 92 93 -- | Capabilities specific to the `textDocument/references` 94 , _references :: Maybe ReferencesClientCapabilities 95 96 -- | Capabilities specific to the `textDocument/documentHighlight` 97 , _documentHighlight :: Maybe DocumentHighlightClientCapabilities 98 99 -- | Capabilities specific to the `textDocument/documentSymbol` 100 , _documentSymbol :: Maybe DocumentSymbolClientCapabilities 101 102 -- | Capabilities specific to the `textDocument/formatting` 103 , _formatting :: Maybe DocumentFormattingClientCapabilities 104 105 -- | Capabilities specific to the `textDocument/rangeFormatting` 106 , _rangeFormatting :: Maybe DocumentRangeFormattingClientCapabilities 107 108 -- | Capabilities specific to the `textDocument/onTypeFormatting` 109 , _onTypeFormatting :: Maybe DocumentOnTypeFormattingClientCapabilities 110 111 -- | Capabilities specific to the `textDocument/declaration` request. 112 -- 113 -- Since LSP 3.14.0 114 , _declaration :: Maybe DeclarationClientCapabilities 115 116 -- | Capabilities specific to the `textDocument/definition` 117 , _definition :: Maybe DefinitionClientCapabilities 118 119 -- | Capabilities specific to the `textDocument/typeDefinition` 120 , _typeDefinition :: Maybe TypeDefinitionClientCapabilities 121 122 -- | Capabilities specific to the `textDocument/implementation` 123 , _implementation :: Maybe ImplementationClientCapabilities 124 125 -- | Capabilities specific to the `textDocument/codeAction` 126 , _codeAction :: Maybe CodeActionClientCapabilities 127 128 -- | Capabilities specific to the `textDocument/codeLens` 129 , _codeLens :: Maybe CodeLensClientCapabilities 130 131 -- | Capabilities specific to the `textDocument/documentLink` 132 , _documentLink :: Maybe DocumentLinkClientCapabilities 133 134 -- | Capabilities specific to the `textDocument/documentColor` and the 135 -- `textDocument/colorPresentation` request 136 , _colorProvider :: Maybe DocumentColorClientCapabilities 137 138 -- | Capabilities specific to the `textDocument/rename` 139 , _rename :: Maybe RenameClientCapabilities 140 141 -- | Capabilities specific to `textDocument/publishDiagnostics` 142 , _publishDiagnostics :: Maybe PublishDiagnosticsClientCapabilities 143 144 -- | Capabilities specific to the `textDocument/foldingRange` request. 145 -- Since LSP 3.10. 146 -- 147 -- @since 0.7.0.0 148 , _foldingRange :: Maybe FoldingRangeClientCapabilities 149 150 -- | Capabilities specific to the `textDocument/selectionRange` request. 151 -- Since LSP 3.15.0 152 , _selectionRange :: Maybe SelectionRangeClientCapabilities 153 154 -- | Call hierarchy specific to the `textDocument/prepareCallHierarchy` request. 155 -- Since LSP 3.16.0 156 , _callHierarchy :: Maybe CallHierarchyClientCapabilities 157 158 -- | Capabilities specific to the various semantic token requests. 159 -- 160 -- @since 3.16.0 161 , _semanticTokens :: Maybe SemanticTokensClientCapabilities 162 } deriving (Show, Read, Eq) 163 164deriveJSON lspOptions ''TextDocumentClientCapabilities 165 166instance Default TextDocumentClientCapabilities where 167 def = TextDocumentClientCapabilities def def def def def def def def 168 def def def def def def def def 169 def def def def def def def def 170 171-- --------------------------------------------------------------------- 172 173-- | Window specific client capabilities. 174data WindowClientCapabilities = 175 WindowClientCapabilities 176 { -- | Whether client supports handling progress notifications. 177 _workDoneProgress :: Maybe Bool 178 } deriving (Show, Read, Eq) 179 180deriveJSON lspOptions ''WindowClientCapabilities 181 182instance Default WindowClientCapabilities where 183 def = WindowClientCapabilities def 184 185data ClientCapabilities = 186 ClientCapabilities 187 { _workspace :: Maybe WorkspaceClientCapabilities 188 , _textDocument :: Maybe TextDocumentClientCapabilities 189 -- | Capabilities specific to `window/progress` requests. Experimental. 190 -- 191 -- @since 0.10.0.0 192 , _window :: Maybe WindowClientCapabilities 193 , _experimental :: Maybe A.Object 194 } deriving (Show, Read, Eq) 195 196deriveJSON lspOptions ''ClientCapabilities 197 198instance Default ClientCapabilities where 199 def = ClientCapabilities def def def def 200