mirror of
https://github.com/golang/go
synced 2024-11-18 14:24:44 -07:00
ff3f684ce0
This is not intended to be a user friendly package, just the rawest correct implemenation of the protocol as a building block Change-Id: Ib672b7f1e2fd8284be422dc7964f1876e94c9578 Reviewed-on: https://go-review.googlesource.com/136676 Reviewed-by: Alan Donovan <adonovan@google.com> Reviewed-by: Rebecca Stambler <rstambler@golang.org>
1021 lines
27 KiB
Go
1021 lines
27 KiB
Go
// Copyright 2018 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// This file contains the corresponding structures to the
|
|
// "Language Features" part of the LSP specification.
|
|
|
|
package protocol
|
|
|
|
type CompletionParams struct {
|
|
TextDocumentPositionParams
|
|
|
|
/**
|
|
* The completion context. This is only available if the client specifies
|
|
* to send this using `ClientCapabilities.textDocument.completion.contextSupport === true`
|
|
*/
|
|
Context CompletionContext `json:"context,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* How a completion was triggered
|
|
*/
|
|
type CompletionTriggerKind float64
|
|
|
|
const (
|
|
/**
|
|
* Completion was triggered by typing an identifier (24x7 code
|
|
* complete), manual invocation (e.g Ctrl+Space) or via API.
|
|
*/
|
|
Invoked CompletionTriggerKind = 1
|
|
|
|
/**
|
|
* Completion was triggered by a trigger character specified by
|
|
* the `triggerCharacters` properties of the `CompletionRegistrationOptions`.
|
|
*/
|
|
TriggerCharacter CompletionTriggerKind = 2
|
|
|
|
/**
|
|
* Completion was re-triggered as the current completion list is incomplete.
|
|
*/
|
|
TriggerForIncompleteCompletions CompletionTriggerKind = 3
|
|
)
|
|
|
|
/**
|
|
* Contains additional information about the context in which a completion request is triggered.
|
|
*/
|
|
type CompletionContext struct {
|
|
/**
|
|
* How the completion was triggered.
|
|
*/
|
|
TriggerKind CompletionTriggerKind `json:"triggerKind"`
|
|
|
|
/**
|
|
* The trigger character (a single character) that has trigger code complete.
|
|
* Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter`
|
|
*/
|
|
TriggerCharacter string `json:"triggerCharacter,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* Represents a collection of [completion items](#CompletionItem) to be presented
|
|
* in the editor.
|
|
*/
|
|
type CompletionList struct {
|
|
/**
|
|
* This list it not complete. Further typing should result in recomputing
|
|
* this list.
|
|
*/
|
|
IsIncomplete bool `json:"isIncomplete"`
|
|
|
|
/**
|
|
* The completion items.
|
|
*/
|
|
Items []CompletionItem `json:"items"`
|
|
}
|
|
|
|
/**
|
|
* Defines whether the insert text in a completion item should be interpreted as
|
|
* plain text or a snippet.
|
|
*/
|
|
type InsertTextFormat float64
|
|
|
|
const (
|
|
/**
|
|
* The primary text to be inserted is treated as a plain string.
|
|
*/
|
|
PlainTextFormat InsertTextFormat = 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.
|
|
*/
|
|
SnippetTextFormat InsertTextFormat = 2
|
|
)
|
|
|
|
type CompletionItem struct {
|
|
/**
|
|
* The label of this completion item. By default
|
|
* also the text that is inserted when selecting
|
|
* this completion.
|
|
*/
|
|
Label string `json:"label"`
|
|
|
|
/**
|
|
* The kind of this completion item. Based of the kind
|
|
* an icon is chosen by the editor.
|
|
*/
|
|
Kind float64 `json:"kind,omitempty"`
|
|
|
|
/**
|
|
* A human-readable string with additional information
|
|
* about this item, like type or symbol information.
|
|
*/
|
|
Detail string `json:"detail,omitempty"`
|
|
|
|
/**
|
|
* A human-readable string that represents a doc-comment.
|
|
*/
|
|
Documentation interface{} `json:"documentation,omitempty"` // string | MarkupContent
|
|
|
|
/**
|
|
* Indicates if this item is deprecated.
|
|
*/
|
|
Deprecated bool `json:"deprecated,omitempty"`
|
|
|
|
/**
|
|
* Select this item when showing.
|
|
*
|
|
* *Note* that only one completion item can be selected and that the
|
|
* tool / client decides which item that is. The rule is that the *first*
|
|
* item of those that match best is selected.
|
|
*/
|
|
Preselect bool `json:"preselect,omitempty"`
|
|
|
|
/**
|
|
* A string that should be used when comparing this item
|
|
* with other items. When `falsy` the label is used.
|
|
*/
|
|
SortText string `json:"sortText,omitempty"`
|
|
|
|
/**
|
|
* A string that should be used when filtering a set of
|
|
* completion items. When `falsy` the label is used.
|
|
*/
|
|
FilterText string `json:"filterText,omitempty"`
|
|
|
|
/**
|
|
* A string that should be inserted into a document when selecting
|
|
* this completion. When `falsy` the label is used.
|
|
*
|
|
* The `insertText` is subject to interpretation by the client side.
|
|
* Some tools might not take the string literally. For example
|
|
* VS Code when code complete is requested in this example `con<cursor position>`
|
|
* and a completion item with an `insertText` of `console` is provided it
|
|
* will only insert `sole`. Therefore it is recommended to use `textEdit` instead
|
|
* since it avoids additional client side interpretation.
|
|
*
|
|
* @deprecated Use textEdit instead.
|
|
*/
|
|
InsertText string `json:"insertText,omitempty"`
|
|
|
|
/**
|
|
* The format of the insert text. The format applies to both the `insertText` property
|
|
* and the `newText` property of a provided `textEdit`.
|
|
*/
|
|
InsertTextFormat InsertTextFormat `json:"insertTextFormat,omitempty"`
|
|
|
|
/**
|
|
* An edit which is applied to a document when selecting this completion. When an edit is provided the value of
|
|
* `insertText` is ignored.
|
|
*
|
|
* *Note:* The range of the edit must be a single line range and it must contain the position at which completion
|
|
* has been requested.
|
|
*/
|
|
TextEdit TextEdit `json:"textEdit,omitempty"`
|
|
|
|
/**
|
|
* An optional array of additional text edits that are applied when
|
|
* selecting this completion. Edits must not overlap (including the same insert position)
|
|
* with the main edit nor with themselves.
|
|
*
|
|
* Additional text edits should be used to change text unrelated to the current cursor position
|
|
* (for example adding an import statement at the top of the file if the completion item will
|
|
* insert an unqualified type).
|
|
*/
|
|
AdditionalTextEdits []TextEdit `json:"additionalTextEdits,omitempty"`
|
|
|
|
/**
|
|
* An optional set of characters that when pressed while this completion is active will accept it first and
|
|
* then type that character. *Note* that all commit characters should have `length=1` and that superfluous
|
|
* characters will be ignored.
|
|
*/
|
|
CommitCharacters []string `json:"commitCharacters,omitempty"`
|
|
|
|
/**
|
|
* An optional command that is executed *after* inserting this completion. *Note* that
|
|
* additional modifications to the current document should be described with the
|
|
* additionalTextEdits-property.
|
|
*/
|
|
Command Command `json:"command,omitempty"`
|
|
|
|
/**
|
|
* An data entry field that is preserved on a completion item between
|
|
* a completion and a completion resolve request.
|
|
*/
|
|
Data interface{} `json:"data"`
|
|
}
|
|
|
|
/**
|
|
* The kind of a completion entry.
|
|
*/
|
|
type CompletionItemKind float64
|
|
|
|
const (
|
|
TextCompletion CompletionItemKind = 1
|
|
MethodCompletion CompletionItemKind = 2
|
|
FunctionCompletion CompletionItemKind = 3
|
|
ConstructorCompletion CompletionItemKind = 4
|
|
FieldCompletion CompletionItemKind = 5
|
|
VariableCompletion CompletionItemKind = 6
|
|
ClassCompletion CompletionItemKind = 7
|
|
InterfaceCompletion CompletionItemKind = 8
|
|
ModuleCompletion CompletionItemKind = 9
|
|
PropertyCompletion CompletionItemKind = 10
|
|
UnitCompletion CompletionItemKind = 11
|
|
ValueCompletion CompletionItemKind = 12
|
|
EnumCompletion CompletionItemKind = 13
|
|
KeywordCompletion CompletionItemKind = 14
|
|
SnippetCompletion CompletionItemKind = 15
|
|
ColorCompletion CompletionItemKind = 16
|
|
FileCompletion CompletionItemKind = 17
|
|
ReferenceCompletion CompletionItemKind = 18
|
|
FolderCompletion CompletionItemKind = 19
|
|
EnumMemberCompletion CompletionItemKind = 20
|
|
ConstantCompletion CompletionItemKind = 21
|
|
StructCompletion CompletionItemKind = 22
|
|
EventCompletion CompletionItemKind = 23
|
|
OperatorCompletion CompletionItemKind = 24
|
|
TypeParameterCompletion CompletionItemKind = 25
|
|
)
|
|
|
|
type CompletionRegistrationOptions struct {
|
|
TextDocumentRegistrationOptions
|
|
/**
|
|
* Most tools trigger completion request automatically without explicitly requesting
|
|
* it using a keyboard shortcut (e.g. Ctrl+Space). Typically they do so when the user
|
|
* starts to type an identifier. For example if the user types `c` in a JavaScript file
|
|
* code complete will automatically pop up present `console` besides others as a
|
|
* completion item. Characters that make up identifiers don't need to be listed here.
|
|
*
|
|
* If code complete should automatically be trigger on characters not being valid inside
|
|
* an identifier (for example `.` in JavaScript) list them in `triggerCharacters`.
|
|
*/
|
|
TriggerCharacters []string `json:"triggerCharacters,omitempty"`
|
|
|
|
/**
|
|
* The server provides support to resolve additional
|
|
* information for a completion item.
|
|
*/
|
|
ResolveProvider bool `json:"resolveProvider,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* The result of a hover request.
|
|
*/
|
|
type Hover struct {
|
|
/**
|
|
* The hover's content
|
|
*/
|
|
Contents MarkupContent `json:"contents"`
|
|
|
|
/**
|
|
* An optional range is a range inside a text document
|
|
* that is used to visualize a hover, e.g. by changing the background color.
|
|
*/
|
|
Range Range `json:"range,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* Signature help represents the signature of something
|
|
* callable. There can be multiple signature but only one
|
|
* active and only one active parameter.
|
|
*/
|
|
type SignatureHelp struct {
|
|
/**
|
|
* One or more signatures.
|
|
*/
|
|
Signatures []SignatureInformation `json:"signatures"`
|
|
|
|
/**
|
|
* The active signature. If omitted or the value lies outside the
|
|
* range of `signatures` the value defaults to zero or is ignored if
|
|
* `signatures.length === 0`. Whenever possible implementors should
|
|
* make an active decision about the active signature and shouldn't
|
|
* rely on a default value.
|
|
* In future version of the protocol this property might become
|
|
* mandatory to better express this.
|
|
*/
|
|
ActiveSignature float64 `json:"activeSignature,omitempty"`
|
|
|
|
/**
|
|
* The active parameter of the active signature. If omitted or the value
|
|
* lies outside the range of `signatures[activeSignature].parameters`
|
|
* defaults to 0 if the active signature has parameters. If
|
|
* the active signature has no parameters it is ignored.
|
|
* In future version of the protocol this property might become
|
|
* mandatory to better express the active parameter if the
|
|
* active signature does have any.
|
|
*/
|
|
ActiveParameter float64 `json:"activeParameter,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* Represents the signature of something callable. A signature
|
|
* can have a label, like a function-name, a doc-comment, and
|
|
* a set of parameters.
|
|
*/
|
|
type SignatureInformation struct {
|
|
/**
|
|
* The label of this signature. Will be shown in
|
|
* the UI.
|
|
*/
|
|
Label string `json:"label"`
|
|
|
|
/**
|
|
* The human-readable doc-comment of this signature. Will be shown
|
|
* in the UI but can be omitted.
|
|
*/
|
|
Documentation interface{} `json:"documentation,omitempty"` // string | MarkupContent
|
|
|
|
/**
|
|
* The parameters of this signature.
|
|
*/
|
|
Parameters []ParameterInformation `json:"parameters,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* Represents a parameter of a callable-signature. A parameter can
|
|
* have a label and a doc-comment.
|
|
*/
|
|
type ParameterInformation struct {
|
|
/**
|
|
* The label of this parameter. Will be shown in
|
|
* the UI.
|
|
*/
|
|
Label string `json:"label"`
|
|
|
|
/**
|
|
* The human-readable doc-comment of this parameter. Will be shown
|
|
* in the UI but can be omitted.
|
|
*/
|
|
Documentation interface{} `json:"documentation,omitempty"` // string | MarkupContent
|
|
}
|
|
|
|
type SignatureHelpRegistrationOptions struct {
|
|
TextDocumentRegistrationOptions
|
|
/**
|
|
* The characters that trigger signature help
|
|
* automatically.
|
|
*/
|
|
TriggerCharacters []string `json:"triggerCharacters,omitempty"`
|
|
}
|
|
|
|
type ReferenceParams struct {
|
|
TextDocumentPositionParams
|
|
Context ReferenceContext
|
|
}
|
|
|
|
type ReferenceContext struct {
|
|
/**
|
|
* Include the declaration of the current symbol.
|
|
*/
|
|
IncludeDeclaration bool `json:"includeDeclaration"`
|
|
}
|
|
|
|
/**
|
|
* A document highlight is a range inside a text document which deserves
|
|
* special attention. Usually a document highlight is visualized by changing
|
|
* the background color of its range.
|
|
*
|
|
*/
|
|
type DocumentHighlight struct {
|
|
/**
|
|
* The range this highlight applies to.
|
|
*/
|
|
Range Range `json:"range"`
|
|
|
|
/**
|
|
* The highlight kind, default is DocumentHighlightKind.Text.
|
|
*/
|
|
Kind float64 `json:"kind,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* A document highlight kind.
|
|
*/
|
|
type DocumentHighlightKind float64
|
|
|
|
const (
|
|
/**
|
|
* A textual occurrence.
|
|
*/
|
|
TextHighlight DocumentHighlightKind = 1
|
|
|
|
/**
|
|
* Read-access of a symbol, like reading a variable.
|
|
*/
|
|
ReadHighlight DocumentHighlightKind = 2
|
|
|
|
/**
|
|
* Write-access of a symbol, like writing to a variable.
|
|
*/
|
|
WriteHighlight DocumentHighlightKind = 3
|
|
)
|
|
|
|
type DocumentSymbolParams struct {
|
|
/**
|
|
* The text document.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
}
|
|
|
|
/**
|
|
* A symbol kind.
|
|
*/
|
|
type SymbolKind float64
|
|
|
|
const (
|
|
FileSymbol SymbolKind = 1
|
|
ModuleSymbol SymbolKind = 2
|
|
NamespaceSymbol SymbolKind = 3
|
|
PackageSymbol SymbolKind = 4
|
|
ClassSymbol SymbolKind = 5
|
|
MethodSymbol SymbolKind = 6
|
|
PropertySymbol SymbolKind = 7
|
|
FieldSymbol SymbolKind = 8
|
|
ConstructorSymbol SymbolKind = 9
|
|
EnumSymbol SymbolKind = 10
|
|
InterfaceSymbol SymbolKind = 11
|
|
FunctionSymbol SymbolKind = 12
|
|
VariableSymbol SymbolKind = 13
|
|
ConstantSymbol SymbolKind = 14
|
|
StringSymbol SymbolKind = 15
|
|
NumberSymbol SymbolKind = 16
|
|
BooleanSymbol SymbolKind = 17
|
|
ArraySymbol SymbolKind = 18
|
|
ObjectSymbol SymbolKind = 19
|
|
KeySymbol SymbolKind = 20
|
|
NullSymbol SymbolKind = 21
|
|
EnumMemberSymbol SymbolKind = 22
|
|
StructSymbol SymbolKind = 23
|
|
EventSymbol SymbolKind = 24
|
|
OperatorSymbol SymbolKind = 25
|
|
TypeParameterSymbol SymbolKind = 26
|
|
)
|
|
|
|
/**
|
|
* Represents programming constructs like variables, classes, interfaces etc. that appear in a document. Document symbols can be
|
|
* hierarchical and they have two ranges: one that encloses its definition and one that points to its most interesting range,
|
|
* e.g. the range of an identifier.
|
|
*/
|
|
type DocumentSymbol struct {
|
|
|
|
/**
|
|
* The name of this symbol.
|
|
*/
|
|
Name string `json:"name"`
|
|
|
|
/**
|
|
* More detail for this symbol, e.g the signature of a function. If not provided the
|
|
* name is used.
|
|
*/
|
|
Detail string `json:"detail,omitempty"`
|
|
|
|
/**
|
|
* The kind of this symbol.
|
|
*/
|
|
Kind SymbolKind `json:"kind"`
|
|
|
|
/**
|
|
* Indicates if this symbol is deprecated.
|
|
*/
|
|
Deprecated bool `json:"deprecated,omitempty"`
|
|
|
|
/**
|
|
* The range enclosing this symbol not including leading/trailing whitespace but everything else
|
|
* like comments. This information is typically used to determine if the clients cursor is
|
|
* inside the symbol to reveal in the symbol in the UI.
|
|
*/
|
|
Range Range `json:"range"`
|
|
|
|
/**
|
|
* The range that should be selected and revealed when this symbol is being picked, e.g the name of a function.
|
|
* Must be contained by the `range`.
|
|
*/
|
|
SelectionRange Range `json:"selectionRange"`
|
|
|
|
/**
|
|
* Children of this symbol, e.g. properties of a class.
|
|
*/
|
|
Children []DocumentSymbol `json:"children,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* Represents information about programming constructs like variables, classes,
|
|
* interfaces etc.
|
|
*/
|
|
type SymbolInformation struct {
|
|
/**
|
|
* The name of this symbol.
|
|
*/
|
|
Name string `json:"name"`
|
|
|
|
/**
|
|
* The kind of this symbol.
|
|
*/
|
|
Kind float64 `json:"kind"`
|
|
|
|
/**
|
|
* Indicates if this symbol is deprecated.
|
|
*/
|
|
Deprecated bool `json:"deprecated,omitempty"`
|
|
|
|
/**
|
|
* The location of this symbol. The location's range is used by a tool
|
|
* to reveal the location in the editor. If the symbol is selected in the
|
|
* tool the range's start information is used to position the cursor. So
|
|
* the range usually spans more then the actual symbol's name and does
|
|
* normally include things like visibility modifiers.
|
|
*
|
|
* The range doesn't have to denote a node range in the sense of a abstract
|
|
* syntax tree. It can therefore not be used to re-construct a hierarchy of
|
|
* the symbols.
|
|
*/
|
|
Location Location `json:"location"`
|
|
|
|
/**
|
|
* The name of the symbol containing this symbol. This information is for
|
|
* user interface purposes (e.g. to render a qualifier in the user interface
|
|
* if necessary). It can't be used to re-infer a hierarchy for the document
|
|
* symbols.
|
|
*/
|
|
ContainerName string `json:"containerName,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* Params for the CodeActionRequest
|
|
*/
|
|
type CodeActionParams struct {
|
|
/**
|
|
* The document in which the command was invoked.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
|
|
/**
|
|
* The range for which the command was invoked.
|
|
*/
|
|
Range Range `json:"range"`
|
|
|
|
/**
|
|
* Context carrying additional information.
|
|
*/
|
|
Context CodeActionContext `json:"context"`
|
|
}
|
|
|
|
/**
|
|
* The kind of a code action.
|
|
*
|
|
* Kinds are a hierarchical list of identifiers separated by `.`, e.g. `"refactor.extract.function"`.
|
|
*
|
|
* The set of kinds is open and client needs to announce the kinds it supports to the server during
|
|
* initialization.
|
|
*/
|
|
type CodeActionKind string
|
|
|
|
/**
|
|
* A set of predefined code action kinds
|
|
*/
|
|
const (
|
|
/**
|
|
* Base kind for quickfix actions: 'quickfix'
|
|
*/
|
|
QuickFix CodeActionKind = "quickfix"
|
|
|
|
/**
|
|
* Base kind for refactoring actions: 'refactor'
|
|
*/
|
|
Refactor CodeActionKind = "refactor"
|
|
|
|
/**
|
|
* Base kind for refactoring extraction actions: 'refactor.extract'
|
|
*
|
|
* Example extract actions:
|
|
*
|
|
* - Extract method
|
|
* - Extract function
|
|
* - Extract variable
|
|
* - Extract interface from class
|
|
* - ...
|
|
*/
|
|
RefactorExtract CodeActionKind = "refactor.extract"
|
|
|
|
/**
|
|
* Base kind for refactoring inline actions: 'refactor.inline'
|
|
*
|
|
* Example inline actions:
|
|
*
|
|
* - Inline function
|
|
* - Inline variable
|
|
* - Inline constant
|
|
* - ...
|
|
*/
|
|
RefactorInline CodeActionKind = "refactor.inline"
|
|
|
|
/**
|
|
* Base kind for refactoring rewrite actions: 'refactor.rewrite'
|
|
*
|
|
* Example rewrite actions:
|
|
*
|
|
* - Convert JavaScript function to class
|
|
* - Add or remove parameter
|
|
* - Encapsulate field
|
|
* - Make method static
|
|
* - Move method to base class
|
|
* - ...
|
|
*/
|
|
RefactorRewrite CodeActionKind = "refactor.rewrite"
|
|
|
|
/**
|
|
* Base kind for source actions: `source`
|
|
*
|
|
* Source code actions apply to the entire file.
|
|
*/
|
|
Source CodeActionKind = "source"
|
|
|
|
/**
|
|
* Base kind for an organize imports source action: `source.organizeImports`
|
|
*/
|
|
SourceOrganizeImports CodeActionKind = "source.organizeImports"
|
|
)
|
|
|
|
/**
|
|
* Contains additional diagnostic information about the context in which
|
|
* a code action is run.
|
|
*/
|
|
type CodeActionContext struct {
|
|
/**
|
|
* An array of diagnostics.
|
|
*/
|
|
Diagnostics []Diagnostic `json:"diagnostics"`
|
|
|
|
/**
|
|
* Requested kind of actions to return.
|
|
*
|
|
* Actions not of this kind are filtered out by the client before being shown. So servers
|
|
* can omit computing them.
|
|
*/
|
|
Only []CodeActionKind `json:"only,omitempty"`
|
|
}
|
|
|
|
/**
|
|
* A code action represents a change that can be performed in code, e.g. to fix a problem or
|
|
* to refactor code.
|
|
*
|
|
* A CodeAction must set either `edit` and/or a `command`. If both are supplied, the `edit` is applied first, then the `command` is executed.
|
|
*/
|
|
type CodeAction struct {
|
|
|
|
/**
|
|
* A short, human-readable, title for this code action.
|
|
*/
|
|
Title string `json:"title"`
|
|
|
|
/**
|
|
* The kind of the code action.
|
|
*
|
|
* Used to filter code actions.
|
|
*/
|
|
Kind CodeActionKind `json:"kind,omitempty"`
|
|
|
|
/**
|
|
* The diagnostics that this code action resolves.
|
|
*/
|
|
Diagnostics []Diagnostic `json:"diagnostics,omitempty"`
|
|
|
|
/**
|
|
* The workspace edit this code action performs.
|
|
*/
|
|
Edit WorkspaceEdit `json:"edit,omitempty"`
|
|
|
|
/**
|
|
* A command this code action executes. If a code action
|
|
* provides an edit and a command, first the edit is
|
|
* executed and then the command.
|
|
*/
|
|
Command Command `json:"command,omitempty"`
|
|
}
|
|
|
|
type CodeLensParams struct {
|
|
/**
|
|
* The document to request code lens for.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
}
|
|
|
|
/**
|
|
* A code lens represents a command that should be shown along with
|
|
* source text, like the number of references, a way to run tests, etc.
|
|
*
|
|
* A code lens is _unresolved_ when no command is associated to it. For performance
|
|
* reasons the creation of a code lens and resolving should be done in two stages.
|
|
*/
|
|
type CodeLens struct {
|
|
/**
|
|
* The range in which this code lens is valid. Should only span a single line.
|
|
*/
|
|
Range Range `json:"range"`
|
|
|
|
/**
|
|
* The command this code lens represents.
|
|
*/
|
|
Command Command `json:"command,omitempty"`
|
|
|
|
/**
|
|
* A data entry field that is preserved on a code lens item between
|
|
* a code lens and a code lens resolve request.
|
|
*/
|
|
Data interface{} `json:"data"`
|
|
}
|
|
|
|
type CodeLensRegistrationOptions struct {
|
|
TextDocumentRegistrationOptions
|
|
/**
|
|
* Code lens has a resolve provider as well.
|
|
*/
|
|
ResolveProvider bool `json:"resolveProvider,omitempty"`
|
|
}
|
|
|
|
type DocumentLinkParams struct {
|
|
/**
|
|
* The document to provide document links for.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
}
|
|
|
|
/**
|
|
* A document link is a range in a text document that links to an internal or external resource, like another
|
|
* text document or a web site.
|
|
*/
|
|
type DocumentLink struct {
|
|
/**
|
|
* The range this link applies to.
|
|
*/
|
|
Range Range `json:"range"`
|
|
/**
|
|
* The uri this link points to. If missing a resolve request is sent later.
|
|
*/
|
|
Target DocumentURI `json:"target,omitempty"`
|
|
/**
|
|
* A data entry field that is preserved on a document link between a
|
|
* DocumentLinkRequest and a DocumentLinkResolveRequest.
|
|
*/
|
|
Data interface{} `json:"data,omitempty"`
|
|
}
|
|
|
|
type DocumentLinkRegistrationOptions struct {
|
|
TextDocumentRegistrationOptions
|
|
/**
|
|
* Document links have a resolve provider as well.
|
|
*/
|
|
ResolveProvider bool `json:"resolveProvider,omitempty"`
|
|
}
|
|
|
|
type DocumentColorParams struct {
|
|
/**
|
|
* The text document.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
}
|
|
|
|
type ColorInformation struct {
|
|
/**
|
|
* The range in the document where this color appears.
|
|
*/
|
|
Range Range `json:"range"`
|
|
|
|
/**
|
|
* The actual color value for this color range.
|
|
*/
|
|
Color Color `json:"color"`
|
|
}
|
|
|
|
/**
|
|
* Represents a color in RGBA space.
|
|
*/
|
|
type Color struct {
|
|
|
|
/**
|
|
* The red component of this color in the range [0-1].
|
|
*/
|
|
Red float64 `json:"red"`
|
|
|
|
/**
|
|
* The green component of this color in the range [0-1].
|
|
*/
|
|
Green float64 `json:"green"`
|
|
|
|
/**
|
|
* The blue component of this color in the range [0-1].
|
|
*/
|
|
Blue float64 `json:"blue"`
|
|
|
|
/**
|
|
* The alpha component of this color in the range [0-1].
|
|
*/
|
|
Alpha float64 `json:"alpha"`
|
|
}
|
|
|
|
type ColorPresentationParams struct {
|
|
/**
|
|
* The text document.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
|
|
/**
|
|
* The color information to request presentations for.
|
|
*/
|
|
Color Color `json:"color"`
|
|
|
|
/**
|
|
* The range where the color would be inserted. Serves as a context.
|
|
*/
|
|
Range Range `json:"range"`
|
|
}
|
|
|
|
type ColorPresentation struct {
|
|
/**
|
|
* The label of this color presentation. It will be shown on the color
|
|
* picker header. By default this is also the text that is inserted when selecting
|
|
* this color presentation.
|
|
*/
|
|
Label string `json:"label"`
|
|
/**
|
|
* An [edit](#TextEdit) which is applied to a document when selecting
|
|
* this presentation for the color. When `falsy` the [label](#ColorPresentation.label)
|
|
* is used.
|
|
*/
|
|
TextEdit TextEdit `json:"textEdit,omitempty"`
|
|
/**
|
|
* An optional array of additional [text edits](#TextEdit) that are applied when
|
|
* selecting this color presentation. Edits must not overlap with the main [edit](#ColorPresentation.textEdit) nor with themselves.
|
|
*/
|
|
AdditionalTextEdits []TextEdit `json:"additionalTextEdits,omitempty"`
|
|
}
|
|
|
|
type DocumentFormattingParams struct {
|
|
/**
|
|
* The document to format.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
|
|
/**
|
|
* The format options.
|
|
*/
|
|
Options FormattingOptions `json:"options"`
|
|
}
|
|
|
|
/**
|
|
* Value-object describing what options formatting should use.
|
|
*/
|
|
type FormattingOptions struct {
|
|
/**
|
|
* Size of a tab in spaces.
|
|
*/
|
|
TabSize float64 `json:"tabSize"`
|
|
|
|
/**
|
|
* Prefer spaces over tabs.
|
|
*/
|
|
InsertSpaces bool `json:"insertSpaces"`
|
|
|
|
/**
|
|
* Signature for further properties.
|
|
*/
|
|
// TODO: [key: string]: boolean | number | string;
|
|
}
|
|
|
|
type DocumentRangeFormattingParams struct {
|
|
/**
|
|
* The document to format.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
|
|
/**
|
|
* The range to format
|
|
*/
|
|
Range Range `json:"range"`
|
|
|
|
/**
|
|
* The format options
|
|
*/
|
|
Options FormattingOptions `json:"options"`
|
|
}
|
|
|
|
type DocumentOnTypeFormattingParams struct {
|
|
/**
|
|
* The document to format.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
|
|
/**
|
|
* The position at which this request was sent.
|
|
*/
|
|
Position Position `json:"position"`
|
|
|
|
/**
|
|
* The character that has been typed.
|
|
*/
|
|
Ch string `json:"ch"`
|
|
|
|
/**
|
|
* The format options.
|
|
*/
|
|
Options FormattingOptions `json:"options"`
|
|
}
|
|
|
|
type DocumentOnTypeFormattingRegistrationOptions struct {
|
|
TextDocumentRegistrationOptions
|
|
/**
|
|
* A character on which formatting should be triggered, like `}`.
|
|
*/
|
|
FirstTriggerCharacter string `json:"firstTriggerCharacter"`
|
|
/**
|
|
* More trigger characters.
|
|
*/
|
|
MoreTriggerCharacter []string `json:"moreTriggerCharacter"`
|
|
}
|
|
|
|
type RenameParams struct {
|
|
/**
|
|
* The document to rename.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
|
|
/**
|
|
* The position at which this request was sent.
|
|
*/
|
|
Position Position `json:"position"`
|
|
|
|
/**
|
|
* The new name of the symbol. If the given name is not valid the
|
|
* request must return a [ResponseError](#ResponseError) with an
|
|
* appropriate message set.
|
|
*/
|
|
NewName string `json:"newName"`
|
|
}
|
|
|
|
type FoldingRangeRequestParam struct {
|
|
/**
|
|
* The text document.
|
|
*/
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
}
|
|
|
|
/**
|
|
* Enum of known range kinds
|
|
*/
|
|
type FoldingRangeKind string
|
|
|
|
const (
|
|
/**
|
|
* Folding range for a comment
|
|
*/
|
|
Comment FoldingRangeKind = "comment"
|
|
/**
|
|
* Folding range for a imports or includes
|
|
*/
|
|
Imports FoldingRangeKind = "imports"
|
|
/**
|
|
* Folding range for a region (e.g. `#region`)
|
|
*/
|
|
Region FoldingRangeKind = "region"
|
|
)
|
|
|
|
/**
|
|
* Represents a folding range.
|
|
*/
|
|
type FoldingRange struct {
|
|
|
|
/**
|
|
* The zero-based line number from where the folded range starts.
|
|
*/
|
|
StartLine float64 `json:"startLine"`
|
|
|
|
/**
|
|
* The zero-based character offset from where the folded range starts. If not defined, defaults to the length of the start line.
|
|
*/
|
|
StartCharacter float64 `json:"startCharacter,omitempty"`
|
|
|
|
/**
|
|
* The zero-based line number where the folded range ends.
|
|
*/
|
|
EndLine float64 `json:"endLine"`
|
|
|
|
/**
|
|
* The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line.
|
|
*/
|
|
EndCharacter float64 `json:"endCharacter,omitempty"`
|
|
|
|
/**
|
|
* Describes the kind of the folding range such as `comment' or 'region'. The kind
|
|
* is used to categorize folding ranges and used by commands like 'Fold all comments'. See
|
|
* [FoldingRangeKind](#FoldingRangeKind) for an enumeration of standardized kinds.
|
|
*/
|
|
Kind string `json:"kind,omitempty"`
|
|
}
|