mirror of
https://github.com/neovim/neovim.git
synced 2024-12-27 14:21:31 -07:00
c1a95d9653
Problem: The file watcher backends for Linux have too many limitations and doesn't work reliably. Solution: disable didChangeWatchedFiles on Linux Ref: #27807, #28058, #23291, #26520
1262 lines
49 KiB
Lua
1262 lines
49 KiB
Lua
--- @diagnostic disable: duplicate-doc-alias
|
|
|
|
---@param tbl table<string, string|number>
|
|
local function get_value_set(tbl)
|
|
local value_set = {}
|
|
for _, v in pairs(tbl) do
|
|
table.insert(value_set, v)
|
|
end
|
|
table.sort(value_set)
|
|
return value_set
|
|
end
|
|
|
|
local sysname = vim.uv.os_uname().sysname
|
|
|
|
-- Protocol for the Microsoft Language Server Protocol (mslsp)
|
|
local protocol = {}
|
|
|
|
local constants = {
|
|
--- @enum lsp.DiagnosticSeverity
|
|
DiagnosticSeverity = {
|
|
-- Reports an error.
|
|
Error = 1,
|
|
-- Reports a warning.
|
|
Warning = 2,
|
|
-- Reports an information.
|
|
Information = 3,
|
|
-- Reports a hint.
|
|
Hint = 4,
|
|
},
|
|
|
|
--- @enum lsp.DiagnosticTag
|
|
DiagnosticTag = {
|
|
-- Unused or unnecessary code
|
|
Unnecessary = 1,
|
|
-- Deprecated or obsolete code
|
|
Deprecated = 2,
|
|
},
|
|
|
|
---@enum lsp.MessageType
|
|
MessageType = {
|
|
-- An error message.
|
|
Error = 1,
|
|
-- A warning message.
|
|
Warning = 2,
|
|
-- An information message.
|
|
Info = 3,
|
|
-- A log message.
|
|
Log = 4,
|
|
},
|
|
|
|
-- The file event type.
|
|
---@enum lsp.FileChangeType
|
|
FileChangeType = {
|
|
-- The file got created.
|
|
Created = 1,
|
|
-- The file got changed.
|
|
Changed = 2,
|
|
-- The file got deleted.
|
|
Deleted = 3,
|
|
},
|
|
|
|
-- The kind of a completion entry.
|
|
CompletionItemKind = {
|
|
Text = 1,
|
|
Method = 2,
|
|
Function = 3,
|
|
Constructor = 4,
|
|
Field = 5,
|
|
Variable = 6,
|
|
Class = 7,
|
|
Interface = 8,
|
|
Module = 9,
|
|
Property = 10,
|
|
Unit = 11,
|
|
Value = 12,
|
|
Enum = 13,
|
|
Keyword = 14,
|
|
Snippet = 15,
|
|
Color = 16,
|
|
File = 17,
|
|
Reference = 18,
|
|
Folder = 19,
|
|
EnumMember = 20,
|
|
Constant = 21,
|
|
Struct = 22,
|
|
Event = 23,
|
|
Operator = 24,
|
|
TypeParameter = 25,
|
|
},
|
|
|
|
-- How a completion was triggered
|
|
CompletionTriggerKind = {
|
|
-- Completion was triggered by typing an identifier (24x7 code
|
|
-- complete), manual invocation (e.g Ctrl+Space) or via API.
|
|
Invoked = 1,
|
|
-- Completion was triggered by a trigger character specified by
|
|
-- the `triggerCharacters` properties of the `CompletionRegistrationOptions`.
|
|
TriggerCharacter = 2,
|
|
-- Completion was re-triggered as the current completion list is incomplete.
|
|
TriggerForIncompleteCompletions = 3,
|
|
},
|
|
|
|
-- A document highlight kind.
|
|
DocumentHighlightKind = {
|
|
-- A textual occurrence.
|
|
Text = 1,
|
|
-- Read-access of a symbol, like reading a variable.
|
|
Read = 2,
|
|
-- Write-access of a symbol, like writing to a variable.
|
|
Write = 3,
|
|
},
|
|
|
|
-- A symbol kind.
|
|
SymbolKind = {
|
|
File = 1,
|
|
Module = 2,
|
|
Namespace = 3,
|
|
Package = 4,
|
|
Class = 5,
|
|
Method = 6,
|
|
Property = 7,
|
|
Field = 8,
|
|
Constructor = 9,
|
|
Enum = 10,
|
|
Interface = 11,
|
|
Function = 12,
|
|
Variable = 13,
|
|
Constant = 14,
|
|
String = 15,
|
|
Number = 16,
|
|
Boolean = 17,
|
|
Array = 18,
|
|
Object = 19,
|
|
Key = 20,
|
|
Null = 21,
|
|
EnumMember = 22,
|
|
Struct = 23,
|
|
Event = 24,
|
|
Operator = 25,
|
|
TypeParameter = 26,
|
|
},
|
|
|
|
-- Represents reasons why a text document is saved.
|
|
---@enum lsp.TextDocumentSaveReason
|
|
TextDocumentSaveReason = {
|
|
-- Manually triggered, e.g. by the user pressing save, by starting debugging,
|
|
-- or by an API call.
|
|
Manual = 1,
|
|
-- Automatic after a delay.
|
|
AfterDelay = 2,
|
|
-- When the editor lost focus.
|
|
FocusOut = 3,
|
|
},
|
|
|
|
ErrorCodes = {
|
|
-- Defined by JSON RPC
|
|
ParseError = -32700,
|
|
InvalidRequest = -32600,
|
|
MethodNotFound = -32601,
|
|
InvalidParams = -32602,
|
|
InternalError = -32603,
|
|
serverErrorStart = -32099,
|
|
serverErrorEnd = -32000,
|
|
ServerNotInitialized = -32002,
|
|
UnknownErrorCode = -32001,
|
|
-- Defined by the protocol.
|
|
RequestCancelled = -32800,
|
|
ContentModified = -32801,
|
|
},
|
|
|
|
-- Describes the content type that a client supports in various
|
|
-- result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
|
|
--
|
|
-- Please note that `MarkupKinds` must not start with a `$`. This kinds
|
|
-- are reserved for internal usage.
|
|
MarkupKind = {
|
|
-- Plain text is supported as a content format
|
|
PlainText = 'plaintext',
|
|
-- Markdown is supported as a content format
|
|
Markdown = 'markdown',
|
|
},
|
|
|
|
ResourceOperationKind = {
|
|
-- Supports creating new files and folders.
|
|
Create = 'create',
|
|
-- Supports renaming existing files and folders.
|
|
Rename = 'rename',
|
|
-- Supports deleting existing files and folders.
|
|
Delete = 'delete',
|
|
},
|
|
|
|
FailureHandlingKind = {
|
|
-- Applying the workspace change is simply aborted if one of the changes provided
|
|
-- fails. All operations executed before the failing operation stay executed.
|
|
Abort = 'abort',
|
|
-- All operations are executed transactionally. That means they either all
|
|
-- succeed or no changes at all are applied to the workspace.
|
|
Transactional = 'transactional',
|
|
-- If the workspace edit contains only textual file changes they are executed transactionally.
|
|
-- If resource changes (create, rename or delete file) are part of the change the failure
|
|
-- handling strategy is abort.
|
|
TextOnlyTransactional = 'textOnlyTransactional',
|
|
-- The client tries to undo the operations already executed. But there is no
|
|
-- guarantee that this succeeds.
|
|
Undo = 'undo',
|
|
},
|
|
|
|
-- Known error codes for an `InitializeError`;
|
|
InitializeError = {
|
|
-- If the protocol version provided by the client can't be handled by the server.
|
|
-- @deprecated This initialize error got replaced by client capabilities. There is
|
|
-- no version handshake in version 3.0x
|
|
unknownProtocolVersion = 1,
|
|
},
|
|
|
|
-- Defines how the host (editor) should sync document changes to the language server.
|
|
TextDocumentSyncKind = {
|
|
-- Documents should not be synced at all.
|
|
None = 0,
|
|
-- Documents are synced by always sending the full content
|
|
-- of the document.
|
|
Full = 1,
|
|
-- Documents are synced by sending the full content on open.
|
|
-- After that only incremental updates to the document are
|
|
-- send.
|
|
Incremental = 2,
|
|
},
|
|
|
|
WatchKind = {
|
|
-- Interested in create events.
|
|
Create = 1,
|
|
-- Interested in change events
|
|
Change = 2,
|
|
-- Interested in delete events
|
|
Delete = 4,
|
|
},
|
|
|
|
-- Defines whether the insert text in a completion item should be interpreted as
|
|
-- plain text or a snippet.
|
|
--- @enum lsp.InsertTextFormat
|
|
InsertTextFormat = {
|
|
-- The primary text to be inserted is treated as a plain string.
|
|
PlainText = 1,
|
|
-- The primary text to be inserted is treated as a snippet.
|
|
--
|
|
-- A snippet can define tab stops and placeholders with `$1`, `$2`
|
|
-- and `${3:foo};`. `$0` defines the final tab stop, it defaults to
|
|
-- the end of the snippet. Placeholders with equal identifiers are linked,
|
|
-- that is typing in one will update others too.
|
|
Snippet = 2,
|
|
},
|
|
|
|
-- A set of predefined code action kinds
|
|
CodeActionKind = {
|
|
-- Empty kind.
|
|
Empty = '',
|
|
-- Base kind for quickfix actions
|
|
QuickFix = 'quickfix',
|
|
-- Base kind for refactoring actions
|
|
Refactor = 'refactor',
|
|
-- Base kind for refactoring extraction actions
|
|
--
|
|
-- Example extract actions:
|
|
--
|
|
-- - Extract method
|
|
-- - Extract function
|
|
-- - Extract variable
|
|
-- - Extract interface from class
|
|
-- - ...
|
|
RefactorExtract = 'refactor.extract',
|
|
-- Base kind for refactoring inline actions
|
|
--
|
|
-- Example inline actions:
|
|
--
|
|
-- - Inline function
|
|
-- - Inline variable
|
|
-- - Inline constant
|
|
-- - ...
|
|
RefactorInline = 'refactor.inline',
|
|
-- Base kind for refactoring rewrite actions
|
|
--
|
|
-- Example rewrite actions:
|
|
--
|
|
-- - Convert JavaScript function to class
|
|
-- - Add or remove parameter
|
|
-- - Encapsulate field
|
|
-- - Make method static
|
|
-- - Move method to base class
|
|
-- - ...
|
|
RefactorRewrite = 'refactor.rewrite',
|
|
-- Base kind for source actions
|
|
--
|
|
-- Source code actions apply to the entire file.
|
|
Source = 'source',
|
|
-- Base kind for an organize imports source action
|
|
SourceOrganizeImports = 'source.organizeImports',
|
|
},
|
|
-- The reason why code actions were requested.
|
|
---@enum lsp.CodeActionTriggerKind
|
|
CodeActionTriggerKind = {
|
|
-- Code actions were explicitly requested by the user or by an extension.
|
|
Invoked = 1,
|
|
-- Code actions were requested automatically.
|
|
--
|
|
-- This typically happens when current selection in a file changes, but can
|
|
-- also be triggered when file content changes.
|
|
Automatic = 2,
|
|
},
|
|
}
|
|
|
|
for k1, v1 in pairs(constants) do
|
|
local tbl = vim.deepcopy(v1, true)
|
|
for _, k2 in ipairs(vim.tbl_keys(tbl)) do
|
|
local v2 = tbl[k2]
|
|
tbl[v2] = k2
|
|
end
|
|
protocol[k1] = tbl
|
|
end
|
|
|
|
--[=[
|
|
--Text document specific client capabilities.
|
|
export interface TextDocumentClientCapabilities {
|
|
synchronization?: {
|
|
--Whether text document synchronization supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports sending will save notifications.
|
|
willSave?: boolean;
|
|
--The client supports sending a will save request and
|
|
--waits for a response providing text edits which will
|
|
--be applied to the document before it is saved.
|
|
willSaveWaitUntil?: boolean;
|
|
--The client supports did save notifications.
|
|
didSave?: boolean;
|
|
}
|
|
--Capabilities specific to the `textDocument/completion`
|
|
completion?: {
|
|
--Whether completion supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports the following `CompletionItem` specific
|
|
--capabilities.
|
|
completionItem?: {
|
|
--The client supports snippets as insert text.
|
|
--
|
|
--A snippet can define tab stops and placeholders with `$1`, `$2`
|
|
--and `${3:foo}`. `$0` defines the final tab stop, it defaults to
|
|
--the end of the snippet. Placeholders with equal identifiers are linked,
|
|
--that is typing in one will update others too.
|
|
snippetSupport?: boolean;
|
|
--The client supports commit characters on a completion item.
|
|
commitCharactersSupport?: boolean
|
|
--The client supports the following content formats for the documentation
|
|
--property. The order describes the preferred format of the client.
|
|
documentationFormat?: MarkupKind[];
|
|
--The client supports the deprecated property on a completion item.
|
|
deprecatedSupport?: boolean;
|
|
--The client supports the preselect property on a completion item.
|
|
preselectSupport?: boolean;
|
|
}
|
|
completionItemKind?: {
|
|
--The completion item kind values the client supports. When this
|
|
--property exists the client also guarantees that it will
|
|
--handle values outside its set gracefully and falls back
|
|
--to a default value when unknown.
|
|
--
|
|
--If this property is not present the client only supports
|
|
--the completion items kinds from `Text` to `Reference` as defined in
|
|
--the initial version of the protocol.
|
|
valueSet?: CompletionItemKind[];
|
|
},
|
|
--The client supports to send additional context information for a
|
|
--`textDocument/completion` request.
|
|
contextSupport?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/hover`
|
|
hover?: {
|
|
--Whether hover supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports the follow content formats for the content
|
|
--property. The order describes the preferred format of the client.
|
|
contentFormat?: MarkupKind[];
|
|
};
|
|
--Capabilities specific to the `textDocument/signatureHelp`
|
|
signatureHelp?: {
|
|
--Whether signature help supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports the following `SignatureInformation`
|
|
--specific properties.
|
|
signatureInformation?: {
|
|
--The client supports the follow content formats for the documentation
|
|
--property. The order describes the preferred format of the client.
|
|
documentationFormat?: MarkupKind[];
|
|
--Client capabilities specific to parameter information.
|
|
parameterInformation?: {
|
|
--The client supports processing label offsets instead of a
|
|
--simple label string.
|
|
--
|
|
--Since 3.14.0
|
|
labelOffsetSupport?: boolean;
|
|
}
|
|
};
|
|
};
|
|
--Capabilities specific to the `textDocument/references`
|
|
references?: {
|
|
--Whether references supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/documentHighlight`
|
|
documentHighlight?: {
|
|
--Whether document highlight supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/documentSymbol`
|
|
documentSymbol?: {
|
|
--Whether document symbol supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--Specific capabilities for the `SymbolKind`.
|
|
symbolKind?: {
|
|
--The symbol kind values the client supports. When this
|
|
--property exists the client also guarantees that it will
|
|
--handle values outside its set gracefully and falls back
|
|
--to a default value when unknown.
|
|
--
|
|
--If this property is not present the client only supports
|
|
--the symbol kinds from `File` to `Array` as defined in
|
|
--the initial version of the protocol.
|
|
valueSet?: SymbolKind[];
|
|
}
|
|
--The client supports hierarchical document symbols.
|
|
hierarchicalDocumentSymbolSupport?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/formatting`
|
|
formatting?: {
|
|
--Whether formatting supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/rangeFormatting`
|
|
rangeFormatting?: {
|
|
--Whether range formatting supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/onTypeFormatting`
|
|
onTypeFormatting?: {
|
|
--Whether on type formatting supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/declaration`
|
|
declaration?: {
|
|
--Whether declaration supports dynamic registration. If this is set to `true`
|
|
--the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
|
|
--return value for the corresponding server capability as well.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports additional metadata in the form of declaration links.
|
|
--
|
|
--Since 3.14.0
|
|
linkSupport?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/definition`.
|
|
--
|
|
--Since 3.14.0
|
|
definition?: {
|
|
--Whether definition supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports additional metadata in the form of definition links.
|
|
linkSupport?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/typeDefinition`
|
|
--
|
|
--Since 3.6.0
|
|
typeDefinition?: {
|
|
--Whether typeDefinition supports dynamic registration. If this is set to `true`
|
|
--the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
|
|
--return value for the corresponding server capability as well.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports additional metadata in the form of definition links.
|
|
--
|
|
--Since 3.14.0
|
|
linkSupport?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/implementation`.
|
|
--
|
|
--Since 3.6.0
|
|
implementation?: {
|
|
--Whether implementation supports dynamic registration. If this is set to `true`
|
|
--the client supports the new `(TextDocumentRegistrationOptions & StaticRegistrationOptions)`
|
|
--return value for the corresponding server capability as well.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports additional metadata in the form of definition links.
|
|
--
|
|
--Since 3.14.0
|
|
linkSupport?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/codeAction`
|
|
codeAction?: {
|
|
--Whether code action supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--The client support code action literals as a valid
|
|
--response of the `textDocument/codeAction` request.
|
|
--
|
|
--Since 3.8.0
|
|
codeActionLiteralSupport?: {
|
|
--The code action kind is support with the following value
|
|
--set.
|
|
codeActionKind: {
|
|
--The code action kind values the client supports. When this
|
|
--property exists the client also guarantees that it will
|
|
--handle values outside its set gracefully and falls back
|
|
--to a default value when unknown.
|
|
valueSet: CodeActionKind[];
|
|
};
|
|
};
|
|
};
|
|
--Capabilities specific to the `textDocument/codeLens`
|
|
codeLens?: {
|
|
--Whether code lens supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/documentLink`
|
|
documentLink?: {
|
|
--Whether document link supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `textDocument/documentColor` and the
|
|
--`textDocument/colorPresentation` request.
|
|
--
|
|
--Since 3.6.0
|
|
colorProvider?: {
|
|
--Whether colorProvider supports dynamic registration. If this is set to `true`
|
|
--the client supports the new `(ColorProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)`
|
|
--return value for the corresponding server capability as well.
|
|
dynamicRegistration?: boolean;
|
|
}
|
|
--Capabilities specific to the `textDocument/rename`
|
|
rename?: {
|
|
--Whether rename supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--The client supports testing for validity of rename operations
|
|
--before execution.
|
|
prepareSupport?: boolean;
|
|
};
|
|
--Capabilities specific to `textDocument/publishDiagnostics`.
|
|
publishDiagnostics?: {
|
|
--Whether the clients accepts diagnostics with related information.
|
|
relatedInformation?: boolean;
|
|
--Client supports the tag property to provide meta data about a diagnostic.
|
|
--Clients supporting tags have to handle unknown tags gracefully.
|
|
--Since 3.15.0
|
|
tagSupport?: {
|
|
--The tags supported by this client
|
|
valueSet: DiagnosticTag[];
|
|
};
|
|
};
|
|
--Capabilities specific to `textDocument/foldingRange` requests.
|
|
--
|
|
--Since 3.10.0
|
|
foldingRange?: {
|
|
--Whether implementation supports dynamic registration for folding range providers. If this is set to `true`
|
|
--the client supports the new `(FoldingRangeProviderOptions & TextDocumentRegistrationOptions & StaticRegistrationOptions)`
|
|
--return value for the corresponding server capability as well.
|
|
dynamicRegistration?: boolean;
|
|
--The maximum number of folding ranges that the client prefers to receive per document. The value serves as a
|
|
--hint, servers are free to follow the limit.
|
|
rangeLimit?: number;
|
|
--If set, the client signals that it only supports folding complete lines. If set, client will
|
|
--ignore specified `startCharacter` and `endCharacter` properties in a FoldingRange.
|
|
lineFoldingOnly?: boolean;
|
|
};
|
|
}
|
|
--]=]
|
|
|
|
--[=[
|
|
--Workspace specific client capabilities.
|
|
export interface WorkspaceClientCapabilities {
|
|
--The client supports applying batch edits to the workspace by supporting
|
|
--the request 'workspace/applyEdit'
|
|
applyEdit?: boolean;
|
|
--Capabilities specific to `WorkspaceEdit`s
|
|
workspaceEdit?: {
|
|
--The client supports versioned document changes in `WorkspaceEdit`s
|
|
documentChanges?: boolean;
|
|
--The resource operations the client supports. Clients should at least
|
|
--support 'create', 'rename' and 'delete' files and folders.
|
|
resourceOperations?: ResourceOperationKind[];
|
|
--The failure handling strategy of a client if applying the workspace edit
|
|
--fails.
|
|
failureHandling?: FailureHandlingKind;
|
|
};
|
|
--Capabilities specific to the `workspace/didChangeConfiguration` notification.
|
|
didChangeConfiguration?: {
|
|
--Did change configuration notification supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `workspace/didChangeWatchedFiles` notification.
|
|
didChangeWatchedFiles?: {
|
|
--Did change watched files notification supports dynamic registration. Please note
|
|
--that the current protocol doesn't support static configuration for file changes
|
|
--from the server side.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--Capabilities specific to the `workspace/symbol` request.
|
|
symbol?: {
|
|
--Symbol request supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
--Specific capabilities for the `SymbolKind` in the `workspace/symbol` request.
|
|
symbolKind?: {
|
|
--The symbol kind values the client supports. When this
|
|
--property exists the client also guarantees that it will
|
|
--handle values outside its set gracefully and falls back
|
|
--to a default value when unknown.
|
|
--
|
|
--If this property is not present the client only supports
|
|
--the symbol kinds from `File` to `Array` as defined in
|
|
--the initial version of the protocol.
|
|
valueSet?: SymbolKind[];
|
|
}
|
|
};
|
|
--Capabilities specific to the `workspace/executeCommand` request.
|
|
executeCommand?: {
|
|
--Execute command supports dynamic registration.
|
|
dynamicRegistration?: boolean;
|
|
};
|
|
--The client has support for workspace folders.
|
|
--
|
|
--Since 3.6.0
|
|
workspaceFolders?: boolean;
|
|
--The client supports `workspace/configuration` requests.
|
|
--
|
|
--Since 3.6.0
|
|
configuration?: boolean;
|
|
}
|
|
--]=]
|
|
|
|
--- Gets a new ClientCapabilities object describing the LSP client
|
|
--- capabilities.
|
|
--- @return lsp.ClientCapabilities
|
|
function protocol.make_client_capabilities()
|
|
return {
|
|
general = {
|
|
positionEncodings = {
|
|
'utf-16',
|
|
},
|
|
},
|
|
textDocument = {
|
|
diagnostic = {
|
|
dynamicRegistration = false,
|
|
},
|
|
inlayHint = {
|
|
dynamicRegistration = true,
|
|
resolveSupport = {
|
|
properties = {
|
|
'textEdits',
|
|
'tooltip',
|
|
'location',
|
|
'command',
|
|
},
|
|
},
|
|
},
|
|
semanticTokens = {
|
|
dynamicRegistration = false,
|
|
tokenTypes = {
|
|
'namespace',
|
|
'type',
|
|
'class',
|
|
'enum',
|
|
'interface',
|
|
'struct',
|
|
'typeParameter',
|
|
'parameter',
|
|
'variable',
|
|
'property',
|
|
'enumMember',
|
|
'event',
|
|
'function',
|
|
'method',
|
|
'macro',
|
|
'keyword',
|
|
'modifier',
|
|
'comment',
|
|
'string',
|
|
'number',
|
|
'regexp',
|
|
'operator',
|
|
'decorator',
|
|
},
|
|
tokenModifiers = {
|
|
'declaration',
|
|
'definition',
|
|
'readonly',
|
|
'static',
|
|
'deprecated',
|
|
'abstract',
|
|
'async',
|
|
'modification',
|
|
'documentation',
|
|
'defaultLibrary',
|
|
},
|
|
formats = { 'relative' },
|
|
requests = {
|
|
-- TODO(jdrouhard): Add support for this
|
|
range = false,
|
|
full = { delta = true },
|
|
},
|
|
|
|
overlappingTokenSupport = true,
|
|
-- TODO(jdrouhard): Add support for this
|
|
multilineTokenSupport = false,
|
|
serverCancelSupport = false,
|
|
augmentsSyntaxTokens = true,
|
|
},
|
|
synchronization = {
|
|
dynamicRegistration = false,
|
|
|
|
willSave = true,
|
|
willSaveWaitUntil = true,
|
|
|
|
-- Send textDocument/didSave after saving (BufWritePost)
|
|
didSave = true,
|
|
},
|
|
codeAction = {
|
|
dynamicRegistration = true,
|
|
|
|
codeActionLiteralSupport = {
|
|
codeActionKind = {
|
|
valueSet = get_value_set(constants.CodeActionKind),
|
|
},
|
|
},
|
|
isPreferredSupport = true,
|
|
dataSupport = true,
|
|
resolveSupport = {
|
|
properties = { 'edit' },
|
|
},
|
|
},
|
|
formatting = {
|
|
dynamicRegistration = true,
|
|
},
|
|
rangeFormatting = {
|
|
dynamicRegistration = true,
|
|
},
|
|
completion = {
|
|
dynamicRegistration = false,
|
|
completionItem = {
|
|
-- Until we can actually expand snippet, move cursor and allow for true snippet experience,
|
|
-- this should be disabled out of the box.
|
|
-- However, users can turn this back on if they have a snippet plugin.
|
|
snippetSupport = false,
|
|
commitCharactersSupport = false,
|
|
preselectSupport = false,
|
|
deprecatedSupport = false,
|
|
documentationFormat = { constants.MarkupKind.Markdown, constants.MarkupKind.PlainText },
|
|
},
|
|
completionItemKind = {
|
|
valueSet = get_value_set(constants.CompletionItemKind),
|
|
},
|
|
completionList = {
|
|
itemDefaults = {
|
|
'editRange',
|
|
'insertTextFormat',
|
|
'insertTextMode',
|
|
'data',
|
|
},
|
|
},
|
|
|
|
-- TODO(tjdevries): Implement this
|
|
contextSupport = false,
|
|
},
|
|
declaration = {
|
|
linkSupport = true,
|
|
},
|
|
definition = {
|
|
linkSupport = true,
|
|
dynamicRegistration = true,
|
|
},
|
|
implementation = {
|
|
linkSupport = true,
|
|
},
|
|
typeDefinition = {
|
|
linkSupport = true,
|
|
},
|
|
hover = {
|
|
dynamicRegistration = true,
|
|
contentFormat = { constants.MarkupKind.Markdown, constants.MarkupKind.PlainText },
|
|
},
|
|
signatureHelp = {
|
|
dynamicRegistration = false,
|
|
signatureInformation = {
|
|
activeParameterSupport = true,
|
|
documentationFormat = { constants.MarkupKind.Markdown, constants.MarkupKind.PlainText },
|
|
parameterInformation = {
|
|
labelOffsetSupport = true,
|
|
},
|
|
},
|
|
},
|
|
references = {
|
|
dynamicRegistration = false,
|
|
},
|
|
documentHighlight = {
|
|
dynamicRegistration = false,
|
|
},
|
|
documentSymbol = {
|
|
dynamicRegistration = false,
|
|
symbolKind = {
|
|
valueSet = get_value_set(constants.SymbolKind),
|
|
},
|
|
hierarchicalDocumentSymbolSupport = true,
|
|
},
|
|
rename = {
|
|
dynamicRegistration = true,
|
|
prepareSupport = true,
|
|
},
|
|
publishDiagnostics = {
|
|
relatedInformation = true,
|
|
tagSupport = {
|
|
valueSet = get_value_set(constants.DiagnosticTag),
|
|
},
|
|
dataSupport = true,
|
|
},
|
|
callHierarchy = {
|
|
dynamicRegistration = false,
|
|
},
|
|
},
|
|
workspace = {
|
|
symbol = {
|
|
dynamicRegistration = false,
|
|
symbolKind = {
|
|
valueSet = get_value_set(constants.SymbolKind),
|
|
},
|
|
},
|
|
configuration = true,
|
|
didChangeConfiguration = {
|
|
dynamicRegistration = false,
|
|
},
|
|
workspaceFolders = true,
|
|
applyEdit = true,
|
|
workspaceEdit = {
|
|
resourceOperations = { 'rename', 'create', 'delete' },
|
|
},
|
|
semanticTokens = {
|
|
refreshSupport = true,
|
|
},
|
|
didChangeWatchedFiles = {
|
|
-- TODO(lewis6991): do not advertise didChangeWatchedFiles on Linux
|
|
-- or BSD since all the current backends are too limited.
|
|
-- Ref: #27807, #28058, #23291, #26520
|
|
dynamicRegistration = sysname == 'Darwin' or sysname == 'Windows_NT',
|
|
relativePatternSupport = true,
|
|
},
|
|
inlayHint = {
|
|
refreshSupport = true,
|
|
},
|
|
},
|
|
experimental = nil,
|
|
window = {
|
|
workDoneProgress = true,
|
|
showMessage = {
|
|
messageActionItem = {
|
|
additionalPropertiesSupport = false,
|
|
},
|
|
},
|
|
showDocument = {
|
|
support = true,
|
|
},
|
|
},
|
|
}
|
|
end
|
|
|
|
--- Creates a normalized object describing LSP server capabilities.
|
|
---@param server_capabilities table Table of capabilities supported by the server
|
|
---@return lsp.ServerCapabilities|nil : Normalized table of capabilities
|
|
function protocol.resolve_capabilities(server_capabilities)
|
|
local TextDocumentSyncKind = protocol.TextDocumentSyncKind ---@type table<string|number, string|number>
|
|
local textDocumentSync = server_capabilities.textDocumentSync
|
|
if textDocumentSync == nil then
|
|
-- Defaults if omitted.
|
|
server_capabilities.textDocumentSync = {
|
|
openClose = false,
|
|
change = TextDocumentSyncKind.None,
|
|
willSave = false,
|
|
willSaveWaitUntil = false,
|
|
save = {
|
|
includeText = false,
|
|
},
|
|
}
|
|
elseif type(textDocumentSync) == 'number' then
|
|
-- Backwards compatibility
|
|
if not TextDocumentSyncKind[textDocumentSync] then
|
|
vim.notify('Invalid server TextDocumentSyncKind for textDocumentSync', vim.log.levels.ERROR)
|
|
return nil
|
|
end
|
|
server_capabilities.textDocumentSync = {
|
|
openClose = true,
|
|
change = textDocumentSync,
|
|
willSave = false,
|
|
willSaveWaitUntil = false,
|
|
save = {
|
|
includeText = false,
|
|
},
|
|
}
|
|
elseif type(textDocumentSync) ~= 'table' then
|
|
vim.notify(
|
|
string.format('Invalid type for textDocumentSync: %q', type(textDocumentSync)),
|
|
vim.log.levels.ERROR
|
|
)
|
|
return nil
|
|
end
|
|
return server_capabilities
|
|
end
|
|
|
|
-- Generated by gen_lsp.lua, keep at end of file.
|
|
--- LSP method names.
|
|
---
|
|
---@see https://microsoft.github.io/language-server-protocol/specification/#metaModel
|
|
protocol.Methods = {
|
|
--- A request to resolve the incoming calls for a given `CallHierarchyItem`.
|
|
--- @since 3.16.0
|
|
callHierarchy_incomingCalls = 'callHierarchy/incomingCalls',
|
|
--- A request to resolve the outgoing calls for a given `CallHierarchyItem`.
|
|
--- @since 3.16.0
|
|
callHierarchy_outgoingCalls = 'callHierarchy/outgoingCalls',
|
|
--- The `client/registerCapability` request is sent from the server to the client to register a new capability
|
|
--- handler on the client side.
|
|
client_registerCapability = 'client/registerCapability',
|
|
--- The `client/unregisterCapability` request is sent from the server to the client to unregister a previously registered capability
|
|
--- handler on the client side.
|
|
client_unregisterCapability = 'client/unregisterCapability',
|
|
--- Request to resolve additional information for a given code action.The request's
|
|
--- parameter is of type {@link CodeAction} the response
|
|
--- is of type {@link CodeAction} or a Thenable that resolves to such.
|
|
codeAction_resolve = 'codeAction/resolve',
|
|
--- A request to resolve a command for a given code lens.
|
|
codeLens_resolve = 'codeLens/resolve',
|
|
--- Request to resolve additional information for a given completion item.The request's
|
|
--- parameter is of type {@link CompletionItem} the response
|
|
--- is of type {@link CompletionItem} or a Thenable that resolves to such.
|
|
completionItem_resolve = 'completionItem/resolve',
|
|
--- Request to resolve additional information for a given document link. The request's
|
|
--- parameter is of type {@link DocumentLink} the response
|
|
--- is of type {@link DocumentLink} or a Thenable that resolves to such.
|
|
documentLink_resolve = 'documentLink/resolve',
|
|
dollar_cancelRequest = '$/cancelRequest',
|
|
dollar_logTrace = '$/logTrace',
|
|
dollar_progress = '$/progress',
|
|
dollar_setTrace = '$/setTrace',
|
|
--- The exit event is sent from the client to the server to
|
|
--- ask the server to exit its process.
|
|
exit = 'exit',
|
|
--- The initialize request is sent from the client to the server.
|
|
--- It is sent once as the request after starting up the server.
|
|
--- The requests parameter is of type {@link InitializeParams}
|
|
--- the response if of type {@link InitializeResult} of a Thenable that
|
|
--- resolves to such.
|
|
initialize = 'initialize',
|
|
--- The initialized notification is sent from the client to the
|
|
--- server after the client is fully initialized and the server
|
|
--- is allowed to send requests from the server to the client.
|
|
initialized = 'initialized',
|
|
--- A request to resolve additional properties for an inlay hint.
|
|
--- The request's parameter is of type {@link InlayHint}, the response is
|
|
--- of type {@link InlayHint} or a Thenable that resolves to such.
|
|
--- @since 3.17.0
|
|
inlayHint_resolve = 'inlayHint/resolve',
|
|
notebookDocument_didChange = 'notebookDocument/didChange',
|
|
--- A notification sent when a notebook closes.
|
|
--- @since 3.17.0
|
|
notebookDocument_didClose = 'notebookDocument/didClose',
|
|
--- A notification sent when a notebook opens.
|
|
--- @since 3.17.0
|
|
notebookDocument_didOpen = 'notebookDocument/didOpen',
|
|
--- A notification sent when a notebook document is saved.
|
|
--- @since 3.17.0
|
|
notebookDocument_didSave = 'notebookDocument/didSave',
|
|
--- A shutdown request is sent from the client to the server.
|
|
--- It is sent once when the client decides to shutdown the
|
|
--- server. The only notification that is sent after a shutdown request
|
|
--- is the exit event.
|
|
shutdown = 'shutdown',
|
|
--- The telemetry event notification is sent from the server to the client to ask
|
|
--- the client to log telemetry data.
|
|
telemetry_event = 'telemetry/event',
|
|
--- A request to provide commands for the given text document and range.
|
|
textDocument_codeAction = 'textDocument/codeAction',
|
|
--- A request to provide code lens for the given text document.
|
|
textDocument_codeLens = 'textDocument/codeLens',
|
|
--- A request to list all presentation for a color. The request's
|
|
--- parameter is of type {@link ColorPresentationParams} the
|
|
--- response is of type {@link ColorInformation ColorInformation[]} or a Thenable
|
|
--- that resolves to such.
|
|
textDocument_colorPresentation = 'textDocument/colorPresentation',
|
|
--- Request to request completion at a given text document position. The request's
|
|
--- parameter is of type {@link TextDocumentPosition} the response
|
|
--- is of type {@link CompletionItem CompletionItem[]} or {@link CompletionList}
|
|
--- or a Thenable that resolves to such.
|
|
--- The request can delay the computation of the {@link CompletionItem.detail `detail`}
|
|
--- and {@link CompletionItem.documentation `documentation`} properties to the `completionItem/resolve`
|
|
--- request. However, properties that are needed for the initial sorting and filtering, like `sortText`,
|
|
--- `filterText`, `insertText`, and `textEdit`, must not be changed during resolve.
|
|
textDocument_completion = 'textDocument/completion',
|
|
--- A request to resolve the type definition locations of a symbol at a given text
|
|
--- document position. The request's parameter is of type {@link TextDocumentPositionParams}
|
|
--- the response is of type {@link Declaration} or a typed array of {@link DeclarationLink}
|
|
--- or a Thenable that resolves to such.
|
|
textDocument_declaration = 'textDocument/declaration',
|
|
--- A request to resolve the definition location of a symbol at a given text
|
|
--- document position. The request's parameter is of type {@link TextDocumentPosition}
|
|
--- the response is of either type {@link Definition} or a typed array of
|
|
--- {@link DefinitionLink} or a Thenable that resolves to such.
|
|
textDocument_definition = 'textDocument/definition',
|
|
--- The document diagnostic request definition.
|
|
--- @since 3.17.0
|
|
textDocument_diagnostic = 'textDocument/diagnostic',
|
|
--- The document change notification is sent from the client to the server to signal
|
|
--- changes to a text document.
|
|
textDocument_didChange = 'textDocument/didChange',
|
|
--- The document close notification is sent from the client to the server when
|
|
--- the document got closed in the client. The document's truth now exists where
|
|
--- the document's uri points to (e.g. if the document's uri is a file uri the
|
|
--- truth now exists on disk). As with the open notification the close notification
|
|
--- is about managing the document's content. Receiving a close notification
|
|
--- doesn't mean that the document was open in an editor before. A close
|
|
--- notification requires a previous open notification to be sent.
|
|
textDocument_didClose = 'textDocument/didClose',
|
|
--- The document open notification is sent from the client to the server to signal
|
|
--- newly opened text documents. The document's truth is now managed by the client
|
|
--- and the server must not try to read the document's truth using the document's
|
|
--- uri. Open in this sense means it is managed by the client. It doesn't necessarily
|
|
--- mean that its content is presented in an editor. An open notification must not
|
|
--- be sent more than once without a corresponding close notification send before.
|
|
--- This means open and close notification must be balanced and the max open count
|
|
--- is one.
|
|
textDocument_didOpen = 'textDocument/didOpen',
|
|
--- The document save notification is sent from the client to the server when
|
|
--- the document got saved in the client.
|
|
textDocument_didSave = 'textDocument/didSave',
|
|
--- A request to list all color symbols found in a given text document. The request's
|
|
--- parameter is of type {@link DocumentColorParams} the
|
|
--- response is of type {@link ColorInformation ColorInformation[]} or a Thenable
|
|
--- that resolves to such.
|
|
textDocument_documentColor = 'textDocument/documentColor',
|
|
--- Request to resolve a {@link DocumentHighlight} for a given
|
|
--- text document position. The request's parameter is of type {@link TextDocumentPosition}
|
|
--- the request response is an array of type {@link DocumentHighlight}
|
|
--- or a Thenable that resolves to such.
|
|
textDocument_documentHighlight = 'textDocument/documentHighlight',
|
|
--- A request to provide document links
|
|
textDocument_documentLink = 'textDocument/documentLink',
|
|
--- A request to list all symbols found in a given text document. The request's
|
|
--- parameter is of type {@link TextDocumentIdentifier} the
|
|
--- response is of type {@link SymbolInformation SymbolInformation[]} or a Thenable
|
|
--- that resolves to such.
|
|
textDocument_documentSymbol = 'textDocument/documentSymbol',
|
|
--- A request to provide folding ranges in a document. The request's
|
|
--- parameter is of type {@link FoldingRangeParams}, the
|
|
--- response is of type {@link FoldingRangeList} or a Thenable
|
|
--- that resolves to such.
|
|
textDocument_foldingRange = 'textDocument/foldingRange',
|
|
--- A request to format a whole document.
|
|
textDocument_formatting = 'textDocument/formatting',
|
|
--- Request to request hover information at a given text document position. The request's
|
|
--- parameter is of type {@link TextDocumentPosition} the response is of
|
|
--- type {@link Hover} or a Thenable that resolves to such.
|
|
textDocument_hover = 'textDocument/hover',
|
|
--- A request to resolve the implementation locations of a symbol at a given text
|
|
--- document position. The request's parameter is of type {@link TextDocumentPositionParams}
|
|
--- the response is of type {@link Definition} or a Thenable that resolves to such.
|
|
textDocument_implementation = 'textDocument/implementation',
|
|
--- A request to provide inlay hints in a document. The request's parameter is of
|
|
--- type {@link InlayHintsParams}, the response is of type
|
|
--- {@link InlayHint InlayHint[]} or a Thenable that resolves to such.
|
|
--- @since 3.17.0
|
|
textDocument_inlayHint = 'textDocument/inlayHint',
|
|
--- A request to provide inline completions in a document. The request's parameter is of
|
|
--- type {@link InlineCompletionParams}, the response is of type
|
|
--- {@link InlineCompletion InlineCompletion[]} or a Thenable that resolves to such.
|
|
--- @since 3.18.0
|
|
--- @proposed
|
|
textDocument_inlineCompletion = 'textDocument/inlineCompletion',
|
|
--- A request to provide inline values in a document. The request's parameter is of
|
|
--- type {@link InlineValueParams}, the response is of type
|
|
--- {@link InlineValue InlineValue[]} or a Thenable that resolves to such.
|
|
--- @since 3.17.0
|
|
textDocument_inlineValue = 'textDocument/inlineValue',
|
|
--- A request to provide ranges that can be edited together.
|
|
--- @since 3.16.0
|
|
textDocument_linkedEditingRange = 'textDocument/linkedEditingRange',
|
|
--- A request to get the moniker of a symbol at a given text document position.
|
|
--- The request parameter is of type {@link TextDocumentPositionParams}.
|
|
--- The response is of type {@link Moniker Moniker[]} or `null`.
|
|
textDocument_moniker = 'textDocument/moniker',
|
|
--- A request to format a document on type.
|
|
textDocument_onTypeFormatting = 'textDocument/onTypeFormatting',
|
|
--- A request to result a `CallHierarchyItem` in a document at a given position.
|
|
--- Can be used as an input to an incoming or outgoing call hierarchy.
|
|
--- @since 3.16.0
|
|
textDocument_prepareCallHierarchy = 'textDocument/prepareCallHierarchy',
|
|
--- A request to test and perform the setup necessary for a rename.
|
|
--- @since 3.16 - support for default behavior
|
|
textDocument_prepareRename = 'textDocument/prepareRename',
|
|
--- A request to result a `TypeHierarchyItem` in a document at a given position.
|
|
--- Can be used as an input to a subtypes or supertypes type hierarchy.
|
|
--- @since 3.17.0
|
|
textDocument_prepareTypeHierarchy = 'textDocument/prepareTypeHierarchy',
|
|
--- Diagnostics notification are sent from the server to the client to signal
|
|
--- results of validation runs.
|
|
textDocument_publishDiagnostics = 'textDocument/publishDiagnostics',
|
|
--- A request to format a range in a document.
|
|
textDocument_rangeFormatting = 'textDocument/rangeFormatting',
|
|
--- A request to format ranges in a document.
|
|
--- @since 3.18.0
|
|
--- @proposed
|
|
textDocument_rangesFormatting = 'textDocument/rangesFormatting',
|
|
--- A request to resolve project-wide references for the symbol denoted
|
|
--- by the given text document position. The request's parameter is of
|
|
--- type {@link ReferenceParams} the response is of type
|
|
--- {@link Location Location[]} or a Thenable that resolves to such.
|
|
textDocument_references = 'textDocument/references',
|
|
--- A request to rename a symbol.
|
|
textDocument_rename = 'textDocument/rename',
|
|
--- A request to provide selection ranges in a document. The request's
|
|
--- parameter is of type {@link SelectionRangeParams}, the
|
|
--- response is of type {@link SelectionRange SelectionRange[]} or a Thenable
|
|
--- that resolves to such.
|
|
textDocument_selectionRange = 'textDocument/selectionRange',
|
|
--- @since 3.16.0
|
|
textDocument_semanticTokens_full = 'textDocument/semanticTokens/full',
|
|
--- @since 3.16.0
|
|
textDocument_semanticTokens_full_delta = 'textDocument/semanticTokens/full/delta',
|
|
--- @since 3.16.0
|
|
textDocument_semanticTokens_range = 'textDocument/semanticTokens/range',
|
|
textDocument_signatureHelp = 'textDocument/signatureHelp',
|
|
--- A request to resolve the type definition locations of a symbol at a given text
|
|
--- document position. The request's parameter is of type {@link TextDocumentPositionParams}
|
|
--- the response is of type {@link Definition} or a Thenable that resolves to such.
|
|
textDocument_typeDefinition = 'textDocument/typeDefinition',
|
|
--- A document will save notification is sent from the client to the server before
|
|
--- the document is actually saved.
|
|
textDocument_willSave = 'textDocument/willSave',
|
|
--- A document will save request is sent from the client to the server before
|
|
--- the document is actually saved. The request can return an array of TextEdits
|
|
--- which will be applied to the text document before it is saved. Please note that
|
|
--- clients might drop results if computing the text edits took too long or if a
|
|
--- server constantly fails on this request. This is done to keep the save fast and
|
|
--- reliable.
|
|
textDocument_willSaveWaitUntil = 'textDocument/willSaveWaitUntil',
|
|
--- A request to resolve the subtypes for a given `TypeHierarchyItem`.
|
|
--- @since 3.17.0
|
|
typeHierarchy_subtypes = 'typeHierarchy/subtypes',
|
|
--- A request to resolve the supertypes for a given `TypeHierarchyItem`.
|
|
--- @since 3.17.0
|
|
typeHierarchy_supertypes = 'typeHierarchy/supertypes',
|
|
--- The log message notification is sent from the server to the client to ask
|
|
--- the client to log a particular message.
|
|
window_logMessage = 'window/logMessage',
|
|
--- A request to show a document. This request might open an
|
|
--- external program depending on the value of the URI to open.
|
|
--- For example a request to open `https://code.visualstudio.com/`
|
|
--- will very likely open the URI in a WEB browser.
|
|
--- @since 3.16.0
|
|
window_showDocument = 'window/showDocument',
|
|
--- The show message notification is sent from a server to a client to ask
|
|
--- the client to display a particular message in the user interface.
|
|
window_showMessage = 'window/showMessage',
|
|
--- The show message request is sent from the server to the client to show a message
|
|
--- and a set of options actions to the user.
|
|
window_showMessageRequest = 'window/showMessageRequest',
|
|
--- The `window/workDoneProgress/cancel` notification is sent from the client to the server to cancel a progress
|
|
--- initiated on the server side.
|
|
window_workDoneProgress_cancel = 'window/workDoneProgress/cancel',
|
|
--- The `window/workDoneProgress/create` request is sent from the server to the client to initiate progress
|
|
--- reporting from the server.
|
|
window_workDoneProgress_create = 'window/workDoneProgress/create',
|
|
--- A request to resolve the range inside the workspace
|
|
--- symbol's location.
|
|
--- @since 3.17.0
|
|
workspaceSymbol_resolve = 'workspaceSymbol/resolve',
|
|
--- A request sent from the server to the client to modify certain resources.
|
|
workspace_applyEdit = 'workspace/applyEdit',
|
|
--- A request to refresh all code actions
|
|
--- @since 3.16.0
|
|
workspace_codeLens_refresh = 'workspace/codeLens/refresh',
|
|
--- The 'workspace/configuration' request is sent from the server to the client to fetch a certain
|
|
--- configuration setting.
|
|
--- This pull model replaces the old push model where the client signaled configuration change via an
|
|
--- event. If the server still needs to react to configuration changes (since the server caches the
|
|
--- result of `workspace/configuration` requests) the server should register for an empty configuration
|
|
--- change event and empty the cache if such an event is received.
|
|
workspace_configuration = 'workspace/configuration',
|
|
--- The workspace diagnostic request definition.
|
|
--- @since 3.17.0
|
|
workspace_diagnostic = 'workspace/diagnostic',
|
|
--- The diagnostic refresh request definition.
|
|
--- @since 3.17.0
|
|
workspace_diagnostic_refresh = 'workspace/diagnostic/refresh',
|
|
--- The configuration change notification is sent from the client to the server
|
|
--- when the client's configuration has changed. The notification contains
|
|
--- the changed configuration as defined by the language client.
|
|
workspace_didChangeConfiguration = 'workspace/didChangeConfiguration',
|
|
--- The watched files notification is sent from the client to the server when
|
|
--- the client detects changes to file watched by the language client.
|
|
workspace_didChangeWatchedFiles = 'workspace/didChangeWatchedFiles',
|
|
--- The `workspace/didChangeWorkspaceFolders` notification is sent from the client to the server when the workspace
|
|
--- folder configuration changes.
|
|
workspace_didChangeWorkspaceFolders = 'workspace/didChangeWorkspaceFolders',
|
|
--- The did create files notification is sent from the client to the server when
|
|
--- files were created from within the client.
|
|
--- @since 3.16.0
|
|
workspace_didCreateFiles = 'workspace/didCreateFiles',
|
|
--- The will delete files request is sent from the client to the server before files are actually
|
|
--- deleted as long as the deletion is triggered from within the client.
|
|
--- @since 3.16.0
|
|
workspace_didDeleteFiles = 'workspace/didDeleteFiles',
|
|
--- The did rename files notification is sent from the client to the server when
|
|
--- files were renamed from within the client.
|
|
--- @since 3.16.0
|
|
workspace_didRenameFiles = 'workspace/didRenameFiles',
|
|
--- A request sent from the client to the server to execute a command. The request might return
|
|
--- a workspace edit which the client will apply to the workspace.
|
|
workspace_executeCommand = 'workspace/executeCommand',
|
|
--- @since 3.18.0
|
|
--- @proposed
|
|
workspace_foldingRange_refresh = 'workspace/foldingRange/refresh',
|
|
--- @since 3.17.0
|
|
workspace_inlayHint_refresh = 'workspace/inlayHint/refresh',
|
|
--- @since 3.17.0
|
|
workspace_inlineValue_refresh = 'workspace/inlineValue/refresh',
|
|
--- @since 3.16.0
|
|
workspace_semanticTokens_refresh = 'workspace/semanticTokens/refresh',
|
|
--- A request to list project-wide symbols matching the query string given
|
|
--- by the {@link WorkspaceSymbolParams}. The response is
|
|
--- of type {@link SymbolInformation SymbolInformation[]} or a Thenable that
|
|
--- resolves to such.
|
|
--- @since 3.17.0 - support for WorkspaceSymbol in the returned data. Clients
|
|
--- need to advertise support for WorkspaceSymbols via the client capability
|
|
--- `workspace.symbol.resolveSupport`.
|
|
workspace_symbol = 'workspace/symbol',
|
|
--- The will create files request is sent from the client to the server before files are actually
|
|
--- created as long as the creation is triggered from within the client.
|
|
--- The request can return a `WorkspaceEdit` which will be applied to workspace before the
|
|
--- files are created. Hence the `WorkspaceEdit` can not manipulate the content of the file
|
|
--- to be created.
|
|
--- @since 3.16.0
|
|
workspace_willCreateFiles = 'workspace/willCreateFiles',
|
|
--- The did delete files notification is sent from the client to the server when
|
|
--- files were deleted from within the client.
|
|
--- @since 3.16.0
|
|
workspace_willDeleteFiles = 'workspace/willDeleteFiles',
|
|
--- The will rename files request is sent from the client to the server before files are actually
|
|
--- renamed as long as the rename is triggered from within the client.
|
|
--- @since 3.16.0
|
|
workspace_willRenameFiles = 'workspace/willRenameFiles',
|
|
--- The `workspace/workspaceFolders` is sent from the server to the client to fetch the open workspace folders.
|
|
workspace_workspaceFolders = 'workspace/workspaceFolders',
|
|
}
|
|
local function freeze(t)
|
|
return setmetatable({}, {
|
|
__index = t,
|
|
__newindex = function()
|
|
error('cannot modify immutable table')
|
|
end,
|
|
})
|
|
end
|
|
protocol.Methods = freeze(protocol.Methods)
|
|
|
|
return protocol
|