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"`
 | 
						|
}
 |