diff options
| author | adamdottv <[email protected]> | 2025-05-29 15:10:44 -0500 |
|---|---|---|
| committer | adamdottv <[email protected]> | 2025-05-29 15:10:44 -0500 |
| commit | 37c0c1f358cadbc918319500cd2b1b3fcbe41a9e (patch) | |
| tree | f012aad2481ea47b062c630420ecc008287a65dc /internal/lsp/protocol | |
| parent | 2a132f86d687be767df4a7657e9c4441b8a4058d (diff) | |
| download | opencode-37c0c1f358cadbc918319500cd2b1b3fcbe41a9e.tar.gz opencode-37c0c1f358cadbc918319500cd2b1b3fcbe41a9e.zip | |
wip: refactoring tui
Diffstat (limited to 'internal/lsp/protocol')
| -rw-r--r-- | internal/lsp/protocol/LICENSE | 27 | ||||
| -rw-r--r-- | internal/lsp/protocol/interface.go | 117 | ||||
| -rw-r--r-- | internal/lsp/protocol/pattern_interfaces.go | 58 | ||||
| -rw-r--r-- | internal/lsp/protocol/tables.go | 30 | ||||
| -rw-r--r-- | internal/lsp/protocol/tsdocument-changes.go | 81 | ||||
| -rw-r--r-- | internal/lsp/protocol/tsjson.go | 3072 | ||||
| -rw-r--r-- | internal/lsp/protocol/tsprotocol.go | 6907 | ||||
| -rw-r--r-- | internal/lsp/protocol/uri.go | 218 |
8 files changed, 0 insertions, 10510 deletions
diff --git a/internal/lsp/protocol/LICENSE b/internal/lsp/protocol/LICENSE deleted file mode 100644 index 2a7cf70da..000000000 --- a/internal/lsp/protocol/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Copyright 2009 The Go Authors. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google LLC nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/internal/lsp/protocol/interface.go b/internal/lsp/protocol/interface.go deleted file mode 100644 index bfb868746..000000000 --- a/internal/lsp/protocol/interface.go +++ /dev/null @@ -1,117 +0,0 @@ -package protocol - -import "fmt" - -// TextEditResult is an interface for types that represent workspace symbols -type WorkspaceSymbolResult interface { - GetName() string - GetLocation() Location - isWorkspaceSymbol() // marker method -} - -func (ws *WorkspaceSymbol) GetName() string { return ws.Name } -func (ws *WorkspaceSymbol) GetLocation() Location { - switch v := ws.Location.Value.(type) { - case Location: - return v - case LocationUriOnly: - return Location{URI: v.URI} - } - return Location{} -} -func (ws *WorkspaceSymbol) isWorkspaceSymbol() {} - -func (si *SymbolInformation) GetName() string { return si.Name } -func (si *SymbolInformation) GetLocation() Location { return si.Location } -func (si *SymbolInformation) isWorkspaceSymbol() {} - -// Results converts the Value to a slice of WorkspaceSymbolResult -func (r Or_Result_workspace_symbol) Results() ([]WorkspaceSymbolResult, error) { - if r.Value == nil { - return make([]WorkspaceSymbolResult, 0), nil - } - switch v := r.Value.(type) { - case []WorkspaceSymbol: - results := make([]WorkspaceSymbolResult, len(v)) - for i := range v { - results[i] = &v[i] - } - return results, nil - case []SymbolInformation: - results := make([]WorkspaceSymbolResult, len(v)) - for i := range v { - results[i] = &v[i] - } - return results, nil - default: - return nil, fmt.Errorf("unknown symbol type: %T", r.Value) - } -} - -// TextEditResult is an interface for types that represent document symbols -type DocumentSymbolResult interface { - GetRange() Range - GetName() string - isDocumentSymbol() // marker method -} - -func (ds *DocumentSymbol) GetRange() Range { return ds.Range } -func (ds *DocumentSymbol) GetName() string { return ds.Name } -func (ds *DocumentSymbol) isDocumentSymbol() {} - -func (si *SymbolInformation) GetRange() Range { return si.Location.Range } - -// Note: SymbolInformation already has GetName() implemented above -func (si *SymbolInformation) isDocumentSymbol() {} - -// Results converts the Value to a slice of DocumentSymbolResult -func (r Or_Result_textDocument_documentSymbol) Results() ([]DocumentSymbolResult, error) { - if r.Value == nil { - return make([]DocumentSymbolResult, 0), nil - } - switch v := r.Value.(type) { - case []DocumentSymbol: - results := make([]DocumentSymbolResult, len(v)) - for i := range v { - results[i] = &v[i] - } - return results, nil - case []SymbolInformation: - results := make([]DocumentSymbolResult, len(v)) - for i := range v { - results[i] = &v[i] - } - return results, nil - default: - return nil, fmt.Errorf("unknown document symbol type: %T", v) - } -} - -// TextEditResult is an interface for types that can be used as text edits -type TextEditResult interface { - GetRange() Range - GetNewText() string - isTextEdit() // marker method -} - -func (te *TextEdit) GetRange() Range { return te.Range } -func (te *TextEdit) GetNewText() string { return te.NewText } -func (te *TextEdit) isTextEdit() {} - -// Convert Or_TextDocumentEdit_edits_Elem to TextEdit -func (e Or_TextDocumentEdit_edits_Elem) AsTextEdit() (TextEdit, error) { - if e.Value == nil { - return TextEdit{}, fmt.Errorf("nil text edit") - } - switch v := e.Value.(type) { - case TextEdit: - return v, nil - case AnnotatedTextEdit: - return TextEdit{ - Range: v.Range, - NewText: v.NewText, - }, nil - default: - return TextEdit{}, fmt.Errorf("unknown text edit type: %T", e.Value) - } -} diff --git a/internal/lsp/protocol/pattern_interfaces.go b/internal/lsp/protocol/pattern_interfaces.go deleted file mode 100644 index ebc7053dc..000000000 --- a/internal/lsp/protocol/pattern_interfaces.go +++ /dev/null @@ -1,58 +0,0 @@ -package protocol - -import ( - "fmt" - "strings" -) - -// PatternInfo is an interface for types that represent glob patterns -type PatternInfo interface { - GetPattern() string - GetBasePath() string - isPattern() // marker method -} - -// StringPattern implements PatternInfo for string patterns -type StringPattern struct { - Pattern string -} - -func (p StringPattern) GetPattern() string { return p.Pattern } -func (p StringPattern) GetBasePath() string { return "" } -func (p StringPattern) isPattern() {} - -// RelativePatternInfo implements PatternInfo for RelativePattern -type RelativePatternInfo struct { - RP RelativePattern - BasePath string -} - -func (p RelativePatternInfo) GetPattern() string { return string(p.RP.Pattern) } -func (p RelativePatternInfo) GetBasePath() string { return p.BasePath } -func (p RelativePatternInfo) isPattern() {} - -// AsPattern converts GlobPattern to a PatternInfo object -func (g *GlobPattern) AsPattern() (PatternInfo, error) { - if g.Value == nil { - return nil, fmt.Errorf("nil pattern") - } - - switch v := g.Value.(type) { - case string: - return StringPattern{Pattern: v}, nil - case RelativePattern: - // Handle BaseURI which could be string or DocumentUri - basePath := "" - switch baseURI := v.BaseURI.Value.(type) { - case string: - basePath = strings.TrimPrefix(baseURI, "file://") - case DocumentUri: - basePath = strings.TrimPrefix(string(baseURI), "file://") - default: - return nil, fmt.Errorf("unknown BaseURI type: %T", v.BaseURI.Value) - } - return RelativePatternInfo{RP: v, BasePath: basePath}, nil - default: - return nil, fmt.Errorf("unknown pattern type: %T", g.Value) - } -} diff --git a/internal/lsp/protocol/tables.go b/internal/lsp/protocol/tables.go deleted file mode 100644 index 6a8fb99e0..000000000 --- a/internal/lsp/protocol/tables.go +++ /dev/null @@ -1,30 +0,0 @@ -package protocol - -var TableKindMap = map[SymbolKind]string{ - File: "File", - Module: "Module", - Namespace: "Namespace", - Package: "Package", - Class: "Class", - Method: "Method", - Property: "Property", - Field: "Field", - Constructor: "Constructor", - Enum: "Enum", - Interface: "Interface", - Function: "Function", - Variable: "Variable", - Constant: "Constant", - String: "String", - Number: "Number", - Boolean: "Boolean", - Array: "Array", - Object: "Object", - Key: "Key", - Null: "Null", - EnumMember: "EnumMember", - Struct: "Struct", - Event: "Event", - Operator: "Operator", - TypeParameter: "TypeParameter", -} diff --git a/internal/lsp/protocol/tsdocument-changes.go b/internal/lsp/protocol/tsdocument-changes.go deleted file mode 100644 index 63b9914eb..000000000 --- a/internal/lsp/protocol/tsdocument-changes.go +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright 2022 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. - -package protocol - -import ( - "encoding/json" - "fmt" -) - -// DocumentChange is a union of various file edit operations. -// -// Exactly one field of this struct is non-nil; see [DocumentChange.Valid]. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#resourceChanges -type DocumentChange struct { - TextDocumentEdit *TextDocumentEdit - CreateFile *CreateFile - RenameFile *RenameFile - DeleteFile *DeleteFile -} - -// Valid reports whether the DocumentChange sum-type value is valid, -// that is, exactly one of create, delete, edit, or rename. -func (ch DocumentChange) Valid() bool { - n := 0 - if ch.TextDocumentEdit != nil { - n++ - } - if ch.CreateFile != nil { - n++ - } - if ch.RenameFile != nil { - n++ - } - if ch.DeleteFile != nil { - n++ - } - return n == 1 -} - -func (d *DocumentChange) UnmarshalJSON(data []byte) error { - var m map[string]any - if err := json.Unmarshal(data, &m); err != nil { - return err - } - - if _, ok := m["textDocument"]; ok { - d.TextDocumentEdit = new(TextDocumentEdit) - return json.Unmarshal(data, d.TextDocumentEdit) - } - - // The {Create,Rename,Delete}File types all share a 'kind' field. - kind := m["kind"] - switch kind { - case "create": - d.CreateFile = new(CreateFile) - return json.Unmarshal(data, d.CreateFile) - case "rename": - d.RenameFile = new(RenameFile) - return json.Unmarshal(data, d.RenameFile) - case "delete": - d.DeleteFile = new(DeleteFile) - return json.Unmarshal(data, d.DeleteFile) - } - return fmt.Errorf("DocumentChanges: unexpected kind: %q", kind) -} - -func (d *DocumentChange) MarshalJSON() ([]byte, error) { - if d.TextDocumentEdit != nil { - return json.Marshal(d.TextDocumentEdit) - } else if d.CreateFile != nil { - return json.Marshal(d.CreateFile) - } else if d.RenameFile != nil { - return json.Marshal(d.RenameFile) - } else if d.DeleteFile != nil { - return json.Marshal(d.DeleteFile) - } - return nil, fmt.Errorf("empty DocumentChanges union value") -} diff --git a/internal/lsp/protocol/tsjson.go b/internal/lsp/protocol/tsjson.go deleted file mode 100644 index 24eb515c0..000000000 --- a/internal/lsp/protocol/tsjson.go +++ /dev/null @@ -1,3072 +0,0 @@ -// Copyright 2023 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. - -// Code generated for LSP. DO NOT EDIT. - -package protocol - -// Code generated from protocol/metaModel.json at ref release/protocol/3.17.6-next.9 (hash c94395b5da53729e6dff931293b051009ccaaaa4). -// https://github.com/microsoft/vscode-languageserver-node/blob/release/protocol/3.17.6-next.9/protocol/metaModel.json -// LSP metaData.version = 3.17.0. - -import "bytes" -import "encoding/json" - -import "fmt" - -// UnmarshalError indicates that a JSON value did not conform to -// one of the expected cases of an LSP union type. -type UnmarshalError struct { - msg string -} - -func (e UnmarshalError) Error() string { - return e.msg -} -func (t Or_CancelParams_id) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case int32: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [int32 string]", t) -} - -func (t *Or_CancelParams_id) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder41 := json.NewDecoder(bytes.NewReader(x)) - decoder41.DisallowUnknownFields() - var int32Val int32 - if err := decoder41.Decode(&int32Val); err == nil { - t.Value = int32Val - return nil - } - decoder42 := json.NewDecoder(bytes.NewReader(x)) - decoder42.DisallowUnknownFields() - var stringVal string - if err := decoder42.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [int32 string]"} -} - -func (t Or_ClientSemanticTokensRequestOptions_full) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case ClientSemanticTokensRequestFullDelta: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [ClientSemanticTokensRequestFullDelta bool]", t) -} - -func (t *Or_ClientSemanticTokensRequestOptions_full) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder220 := json.NewDecoder(bytes.NewReader(x)) - decoder220.DisallowUnknownFields() - var boolVal bool - if err := decoder220.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder221 := json.NewDecoder(bytes.NewReader(x)) - decoder221.DisallowUnknownFields() - var h221 ClientSemanticTokensRequestFullDelta - if err := decoder221.Decode(&h221); err == nil { - t.Value = h221 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [ClientSemanticTokensRequestFullDelta bool]"} -} - -func (t Or_ClientSemanticTokensRequestOptions_range) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Lit_ClientSemanticTokensRequestOptions_range_Item1: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Lit_ClientSemanticTokensRequestOptions_range_Item1 bool]", t) -} - -func (t *Or_ClientSemanticTokensRequestOptions_range) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder217 := json.NewDecoder(bytes.NewReader(x)) - decoder217.DisallowUnknownFields() - var boolVal bool - if err := decoder217.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder218 := json.NewDecoder(bytes.NewReader(x)) - decoder218.DisallowUnknownFields() - var h218 Lit_ClientSemanticTokensRequestOptions_range_Item1 - if err := decoder218.Decode(&h218); err == nil { - t.Value = h218 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Lit_ClientSemanticTokensRequestOptions_range_Item1 bool]"} -} - -func (t Or_CompletionItemDefaults_editRange) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case EditRangeWithInsertReplace: - return json.Marshal(x) - case Range: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [EditRangeWithInsertReplace Range]", t) -} - -func (t *Or_CompletionItemDefaults_editRange) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder183 := json.NewDecoder(bytes.NewReader(x)) - decoder183.DisallowUnknownFields() - var h183 EditRangeWithInsertReplace - if err := decoder183.Decode(&h183); err == nil { - t.Value = h183 - return nil - } - decoder184 := json.NewDecoder(bytes.NewReader(x)) - decoder184.DisallowUnknownFields() - var h184 Range - if err := decoder184.Decode(&h184); err == nil { - t.Value = h184 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [EditRangeWithInsertReplace Range]"} -} - -func (t Or_CompletionItem_documentation) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case MarkupContent: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [MarkupContent string]", t) -} - -func (t *Or_CompletionItem_documentation) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder25 := json.NewDecoder(bytes.NewReader(x)) - decoder25.DisallowUnknownFields() - var stringVal string - if err := decoder25.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder26 := json.NewDecoder(bytes.NewReader(x)) - decoder26.DisallowUnknownFields() - var h26 MarkupContent - if err := decoder26.Decode(&h26); err == nil { - t.Value = h26 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [MarkupContent string]"} -} - -func (t Or_CompletionItem_textEdit) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case InsertReplaceEdit: - return json.Marshal(x) - case TextEdit: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [InsertReplaceEdit TextEdit]", t) -} - -func (t *Or_CompletionItem_textEdit) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder29 := json.NewDecoder(bytes.NewReader(x)) - decoder29.DisallowUnknownFields() - var h29 InsertReplaceEdit - if err := decoder29.Decode(&h29); err == nil { - t.Value = h29 - return nil - } - decoder30 := json.NewDecoder(bytes.NewReader(x)) - decoder30.DisallowUnknownFields() - var h30 TextEdit - if err := decoder30.Decode(&h30); err == nil { - t.Value = h30 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [InsertReplaceEdit TextEdit]"} -} - -func (t Or_Declaration) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Location: - return json.Marshal(x) - case []Location: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Location []Location]", t) -} - -func (t *Or_Declaration) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder237 := json.NewDecoder(bytes.NewReader(x)) - decoder237.DisallowUnknownFields() - var h237 Location - if err := decoder237.Decode(&h237); err == nil { - t.Value = h237 - return nil - } - decoder238 := json.NewDecoder(bytes.NewReader(x)) - decoder238.DisallowUnknownFields() - var h238 []Location - if err := decoder238.Decode(&h238); err == nil { - t.Value = h238 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Location []Location]"} -} - -func (t Or_Definition) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Location: - return json.Marshal(x) - case []Location: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Location []Location]", t) -} - -func (t *Or_Definition) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder224 := json.NewDecoder(bytes.NewReader(x)) - decoder224.DisallowUnknownFields() - var h224 Location - if err := decoder224.Decode(&h224); err == nil { - t.Value = h224 - return nil - } - decoder225 := json.NewDecoder(bytes.NewReader(x)) - decoder225.DisallowUnknownFields() - var h225 []Location - if err := decoder225.Decode(&h225); err == nil { - t.Value = h225 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Location []Location]"} -} - -func (t Or_Diagnostic_code) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case int32: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [int32 string]", t) -} - -func (t *Or_Diagnostic_code) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder179 := json.NewDecoder(bytes.NewReader(x)) - decoder179.DisallowUnknownFields() - var int32Val int32 - if err := decoder179.Decode(&int32Val); err == nil { - t.Value = int32Val - return nil - } - decoder180 := json.NewDecoder(bytes.NewReader(x)) - decoder180.DisallowUnknownFields() - var stringVal string - if err := decoder180.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [int32 string]"} -} - -func (t Or_DidChangeConfigurationRegistrationOptions_section) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case []string: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [[]string string]", t) -} - -func (t *Or_DidChangeConfigurationRegistrationOptions_section) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder22 := json.NewDecoder(bytes.NewReader(x)) - decoder22.DisallowUnknownFields() - var stringVal string - if err := decoder22.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder23 := json.NewDecoder(bytes.NewReader(x)) - decoder23.DisallowUnknownFields() - var h23 []string - if err := decoder23.Decode(&h23); err == nil { - t.Value = h23 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [[]string string]"} -} - -func (t Or_DocumentDiagnosticReport) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case RelatedFullDocumentDiagnosticReport: - return json.Marshal(x) - case RelatedUnchangedDocumentDiagnosticReport: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [RelatedFullDocumentDiagnosticReport RelatedUnchangedDocumentDiagnosticReport]", t) -} - -func (t *Or_DocumentDiagnosticReport) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder247 := json.NewDecoder(bytes.NewReader(x)) - decoder247.DisallowUnknownFields() - var h247 RelatedFullDocumentDiagnosticReport - if err := decoder247.Decode(&h247); err == nil { - t.Value = h247 - return nil - } - decoder248 := json.NewDecoder(bytes.NewReader(x)) - decoder248.DisallowUnknownFields() - var h248 RelatedUnchangedDocumentDiagnosticReport - if err := decoder248.Decode(&h248); err == nil { - t.Value = h248 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [RelatedFullDocumentDiagnosticReport RelatedUnchangedDocumentDiagnosticReport]"} -} - -func (t Or_DocumentDiagnosticReportPartialResult_relatedDocuments_Value) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case FullDocumentDiagnosticReport: - return json.Marshal(x) - case UnchangedDocumentDiagnosticReport: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]", t) -} - -func (t *Or_DocumentDiagnosticReportPartialResult_relatedDocuments_Value) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder16 := json.NewDecoder(bytes.NewReader(x)) - decoder16.DisallowUnknownFields() - var h16 FullDocumentDiagnosticReport - if err := decoder16.Decode(&h16); err == nil { - t.Value = h16 - return nil - } - decoder17 := json.NewDecoder(bytes.NewReader(x)) - decoder17.DisallowUnknownFields() - var h17 UnchangedDocumentDiagnosticReport - if err := decoder17.Decode(&h17); err == nil { - t.Value = h17 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]"} -} - -func (t Or_DocumentFilter) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case NotebookCellTextDocumentFilter: - return json.Marshal(x) - case TextDocumentFilter: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [NotebookCellTextDocumentFilter TextDocumentFilter]", t) -} - -func (t *Or_DocumentFilter) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder270 := json.NewDecoder(bytes.NewReader(x)) - decoder270.DisallowUnknownFields() - var h270 NotebookCellTextDocumentFilter - if err := decoder270.Decode(&h270); err == nil { - t.Value = h270 - return nil - } - decoder271 := json.NewDecoder(bytes.NewReader(x)) - decoder271.DisallowUnknownFields() - var h271 TextDocumentFilter - if err := decoder271.Decode(&h271); err == nil { - t.Value = h271 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [NotebookCellTextDocumentFilter TextDocumentFilter]"} -} - -func (t Or_GlobPattern) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Pattern: - return json.Marshal(x) - case RelativePattern: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Pattern RelativePattern]", t) -} - -func (t *Or_GlobPattern) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder274 := json.NewDecoder(bytes.NewReader(x)) - decoder274.DisallowUnknownFields() - var h274 Pattern - if err := decoder274.Decode(&h274); err == nil { - t.Value = h274 - return nil - } - decoder275 := json.NewDecoder(bytes.NewReader(x)) - decoder275.DisallowUnknownFields() - var h275 RelativePattern - if err := decoder275.Decode(&h275); err == nil { - t.Value = h275 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Pattern RelativePattern]"} -} - -func (t Or_Hover_contents) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case MarkedString: - return json.Marshal(x) - case MarkupContent: - return json.Marshal(x) - case []MarkedString: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [MarkedString MarkupContent []MarkedString]", t) -} - -func (t *Or_Hover_contents) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder34 := json.NewDecoder(bytes.NewReader(x)) - decoder34.DisallowUnknownFields() - var h34 MarkedString - if err := decoder34.Decode(&h34); err == nil { - t.Value = h34 - return nil - } - decoder35 := json.NewDecoder(bytes.NewReader(x)) - decoder35.DisallowUnknownFields() - var h35 MarkupContent - if err := decoder35.Decode(&h35); err == nil { - t.Value = h35 - return nil - } - decoder36 := json.NewDecoder(bytes.NewReader(x)) - decoder36.DisallowUnknownFields() - var h36 []MarkedString - if err := decoder36.Decode(&h36); err == nil { - t.Value = h36 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [MarkedString MarkupContent []MarkedString]"} -} - -func (t Or_InlayHintLabelPart_tooltip) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case MarkupContent: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [MarkupContent string]", t) -} - -func (t *Or_InlayHintLabelPart_tooltip) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder56 := json.NewDecoder(bytes.NewReader(x)) - decoder56.DisallowUnknownFields() - var stringVal string - if err := decoder56.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder57 := json.NewDecoder(bytes.NewReader(x)) - decoder57.DisallowUnknownFields() - var h57 MarkupContent - if err := decoder57.Decode(&h57); err == nil { - t.Value = h57 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [MarkupContent string]"} -} - -func (t Or_InlayHint_label) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case []InlayHintLabelPart: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [[]InlayHintLabelPart string]", t) -} - -func (t *Or_InlayHint_label) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder9 := json.NewDecoder(bytes.NewReader(x)) - decoder9.DisallowUnknownFields() - var stringVal string - if err := decoder9.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder10 := json.NewDecoder(bytes.NewReader(x)) - decoder10.DisallowUnknownFields() - var h10 []InlayHintLabelPart - if err := decoder10.Decode(&h10); err == nil { - t.Value = h10 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [[]InlayHintLabelPart string]"} -} - -func (t Or_InlayHint_tooltip) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case MarkupContent: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [MarkupContent string]", t) -} - -func (t *Or_InlayHint_tooltip) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder12 := json.NewDecoder(bytes.NewReader(x)) - decoder12.DisallowUnknownFields() - var stringVal string - if err := decoder12.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder13 := json.NewDecoder(bytes.NewReader(x)) - decoder13.DisallowUnknownFields() - var h13 MarkupContent - if err := decoder13.Decode(&h13); err == nil { - t.Value = h13 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [MarkupContent string]"} -} - -func (t Or_InlineCompletionItem_insertText) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case StringValue: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [StringValue string]", t) -} - -func (t *Or_InlineCompletionItem_insertText) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder19 := json.NewDecoder(bytes.NewReader(x)) - decoder19.DisallowUnknownFields() - var stringVal string - if err := decoder19.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder20 := json.NewDecoder(bytes.NewReader(x)) - decoder20.DisallowUnknownFields() - var h20 StringValue - if err := decoder20.Decode(&h20); err == nil { - t.Value = h20 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [StringValue string]"} -} - -func (t Or_InlineValue) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case InlineValueEvaluatableExpression: - return json.Marshal(x) - case InlineValueText: - return json.Marshal(x) - case InlineValueVariableLookup: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [InlineValueEvaluatableExpression InlineValueText InlineValueVariableLookup]", t) -} - -func (t *Or_InlineValue) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder242 := json.NewDecoder(bytes.NewReader(x)) - decoder242.DisallowUnknownFields() - var h242 InlineValueEvaluatableExpression - if err := decoder242.Decode(&h242); err == nil { - t.Value = h242 - return nil - } - decoder243 := json.NewDecoder(bytes.NewReader(x)) - decoder243.DisallowUnknownFields() - var h243 InlineValueText - if err := decoder243.Decode(&h243); err == nil { - t.Value = h243 - return nil - } - decoder244 := json.NewDecoder(bytes.NewReader(x)) - decoder244.DisallowUnknownFields() - var h244 InlineValueVariableLookup - if err := decoder244.Decode(&h244); err == nil { - t.Value = h244 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [InlineValueEvaluatableExpression InlineValueText InlineValueVariableLookup]"} -} - -func (t Or_LSPAny) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case LSPArray: - return json.Marshal(x) - case LSPObject: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case float64: - return json.Marshal(x) - case int32: - return json.Marshal(x) - case string: - return json.Marshal(x) - case uint32: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [LSPArray LSPObject bool float64 int32 string uint32]", t) -} - -func (t *Or_LSPAny) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder228 := json.NewDecoder(bytes.NewReader(x)) - decoder228.DisallowUnknownFields() - var boolVal bool - if err := decoder228.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder229 := json.NewDecoder(bytes.NewReader(x)) - decoder229.DisallowUnknownFields() - var float64Val float64 - if err := decoder229.Decode(&float64Val); err == nil { - t.Value = float64Val - return nil - } - decoder230 := json.NewDecoder(bytes.NewReader(x)) - decoder230.DisallowUnknownFields() - var int32Val int32 - if err := decoder230.Decode(&int32Val); err == nil { - t.Value = int32Val - return nil - } - decoder231 := json.NewDecoder(bytes.NewReader(x)) - decoder231.DisallowUnknownFields() - var stringVal string - if err := decoder231.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder232 := json.NewDecoder(bytes.NewReader(x)) - decoder232.DisallowUnknownFields() - var uint32Val uint32 - if err := decoder232.Decode(&uint32Val); err == nil { - t.Value = uint32Val - return nil - } - decoder233 := json.NewDecoder(bytes.NewReader(x)) - decoder233.DisallowUnknownFields() - var h233 LSPArray - if err := decoder233.Decode(&h233); err == nil { - t.Value = h233 - return nil - } - decoder234 := json.NewDecoder(bytes.NewReader(x)) - decoder234.DisallowUnknownFields() - var h234 LSPObject - if err := decoder234.Decode(&h234); err == nil { - t.Value = h234 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [LSPArray LSPObject bool float64 int32 string uint32]"} -} - -func (t Or_MarkedString) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case MarkedStringWithLanguage: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [MarkedStringWithLanguage string]", t) -} - -func (t *Or_MarkedString) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder266 := json.NewDecoder(bytes.NewReader(x)) - decoder266.DisallowUnknownFields() - var stringVal string - if err := decoder266.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder267 := json.NewDecoder(bytes.NewReader(x)) - decoder267.DisallowUnknownFields() - var h267 MarkedStringWithLanguage - if err := decoder267.Decode(&h267); err == nil { - t.Value = h267 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [MarkedStringWithLanguage string]"} -} - -func (t Or_NotebookCellTextDocumentFilter_notebook) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case NotebookDocumentFilter: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [NotebookDocumentFilter string]", t) -} - -func (t *Or_NotebookCellTextDocumentFilter_notebook) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder208 := json.NewDecoder(bytes.NewReader(x)) - decoder208.DisallowUnknownFields() - var stringVal string - if err := decoder208.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder209 := json.NewDecoder(bytes.NewReader(x)) - decoder209.DisallowUnknownFields() - var h209 NotebookDocumentFilter - if err := decoder209.Decode(&h209); err == nil { - t.Value = h209 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [NotebookDocumentFilter string]"} -} - -func (t Or_NotebookDocumentFilter) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case NotebookDocumentFilterNotebookType: - return json.Marshal(x) - case NotebookDocumentFilterPattern: - return json.Marshal(x) - case NotebookDocumentFilterScheme: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [NotebookDocumentFilterNotebookType NotebookDocumentFilterPattern NotebookDocumentFilterScheme]", t) -} - -func (t *Or_NotebookDocumentFilter) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder285 := json.NewDecoder(bytes.NewReader(x)) - decoder285.DisallowUnknownFields() - var h285 NotebookDocumentFilterNotebookType - if err := decoder285.Decode(&h285); err == nil { - t.Value = h285 - return nil - } - decoder286 := json.NewDecoder(bytes.NewReader(x)) - decoder286.DisallowUnknownFields() - var h286 NotebookDocumentFilterPattern - if err := decoder286.Decode(&h286); err == nil { - t.Value = h286 - return nil - } - decoder287 := json.NewDecoder(bytes.NewReader(x)) - decoder287.DisallowUnknownFields() - var h287 NotebookDocumentFilterScheme - if err := decoder287.Decode(&h287); err == nil { - t.Value = h287 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [NotebookDocumentFilterNotebookType NotebookDocumentFilterPattern NotebookDocumentFilterScheme]"} -} - -func (t Or_NotebookDocumentFilterWithCells_notebook) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case NotebookDocumentFilter: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [NotebookDocumentFilter string]", t) -} - -func (t *Or_NotebookDocumentFilterWithCells_notebook) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder192 := json.NewDecoder(bytes.NewReader(x)) - decoder192.DisallowUnknownFields() - var stringVal string - if err := decoder192.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder193 := json.NewDecoder(bytes.NewReader(x)) - decoder193.DisallowUnknownFields() - var h193 NotebookDocumentFilter - if err := decoder193.Decode(&h193); err == nil { - t.Value = h193 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [NotebookDocumentFilter string]"} -} - -func (t Or_NotebookDocumentFilterWithNotebook_notebook) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case NotebookDocumentFilter: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [NotebookDocumentFilter string]", t) -} - -func (t *Or_NotebookDocumentFilterWithNotebook_notebook) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder189 := json.NewDecoder(bytes.NewReader(x)) - decoder189.DisallowUnknownFields() - var stringVal string - if err := decoder189.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder190 := json.NewDecoder(bytes.NewReader(x)) - decoder190.DisallowUnknownFields() - var h190 NotebookDocumentFilter - if err := decoder190.Decode(&h190); err == nil { - t.Value = h190 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [NotebookDocumentFilter string]"} -} - -func (t Or_NotebookDocumentSyncOptions_notebookSelector_Elem) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case NotebookDocumentFilterWithCells: - return json.Marshal(x) - case NotebookDocumentFilterWithNotebook: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [NotebookDocumentFilterWithCells NotebookDocumentFilterWithNotebook]", t) -} - -func (t *Or_NotebookDocumentSyncOptions_notebookSelector_Elem) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder68 := json.NewDecoder(bytes.NewReader(x)) - decoder68.DisallowUnknownFields() - var h68 NotebookDocumentFilterWithCells - if err := decoder68.Decode(&h68); err == nil { - t.Value = h68 - return nil - } - decoder69 := json.NewDecoder(bytes.NewReader(x)) - decoder69.DisallowUnknownFields() - var h69 NotebookDocumentFilterWithNotebook - if err := decoder69.Decode(&h69); err == nil { - t.Value = h69 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [NotebookDocumentFilterWithCells NotebookDocumentFilterWithNotebook]"} -} - -func (t Or_ParameterInformation_documentation) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case MarkupContent: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [MarkupContent string]", t) -} - -func (t *Or_ParameterInformation_documentation) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder205 := json.NewDecoder(bytes.NewReader(x)) - decoder205.DisallowUnknownFields() - var stringVal string - if err := decoder205.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder206 := json.NewDecoder(bytes.NewReader(x)) - decoder206.DisallowUnknownFields() - var h206 MarkupContent - if err := decoder206.Decode(&h206); err == nil { - t.Value = h206 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [MarkupContent string]"} -} - -func (t Or_ParameterInformation_label) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Tuple_ParameterInformation_label_Item1: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Tuple_ParameterInformation_label_Item1 string]", t) -} - -func (t *Or_ParameterInformation_label) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder202 := json.NewDecoder(bytes.NewReader(x)) - decoder202.DisallowUnknownFields() - var stringVal string - if err := decoder202.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder203 := json.NewDecoder(bytes.NewReader(x)) - decoder203.DisallowUnknownFields() - var h203 Tuple_ParameterInformation_label_Item1 - if err := decoder203.Decode(&h203); err == nil { - t.Value = h203 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Tuple_ParameterInformation_label_Item1 string]"} -} - -func (t Or_PrepareRenameResult) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case PrepareRenameDefaultBehavior: - return json.Marshal(x) - case PrepareRenamePlaceholder: - return json.Marshal(x) - case Range: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [PrepareRenameDefaultBehavior PrepareRenamePlaceholder Range]", t) -} - -func (t *Or_PrepareRenameResult) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder252 := json.NewDecoder(bytes.NewReader(x)) - decoder252.DisallowUnknownFields() - var h252 PrepareRenameDefaultBehavior - if err := decoder252.Decode(&h252); err == nil { - t.Value = h252 - return nil - } - decoder253 := json.NewDecoder(bytes.NewReader(x)) - decoder253.DisallowUnknownFields() - var h253 PrepareRenamePlaceholder - if err := decoder253.Decode(&h253); err == nil { - t.Value = h253 - return nil - } - decoder254 := json.NewDecoder(bytes.NewReader(x)) - decoder254.DisallowUnknownFields() - var h254 Range - if err := decoder254.Decode(&h254); err == nil { - t.Value = h254 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [PrepareRenameDefaultBehavior PrepareRenamePlaceholder Range]"} -} - -func (t Or_ProgressToken) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case int32: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [int32 string]", t) -} - -func (t *Or_ProgressToken) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder255 := json.NewDecoder(bytes.NewReader(x)) - decoder255.DisallowUnknownFields() - var int32Val int32 - if err := decoder255.Decode(&int32Val); err == nil { - t.Value = int32Val - return nil - } - decoder256 := json.NewDecoder(bytes.NewReader(x)) - decoder256.DisallowUnknownFields() - var stringVal string - if err := decoder256.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [int32 string]"} -} - -func (t Or_RelatedFullDocumentDiagnosticReport_relatedDocuments_Value) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case FullDocumentDiagnosticReport: - return json.Marshal(x) - case UnchangedDocumentDiagnosticReport: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]", t) -} - -func (t *Or_RelatedFullDocumentDiagnosticReport_relatedDocuments_Value) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder60 := json.NewDecoder(bytes.NewReader(x)) - decoder60.DisallowUnknownFields() - var h60 FullDocumentDiagnosticReport - if err := decoder60.Decode(&h60); err == nil { - t.Value = h60 - return nil - } - decoder61 := json.NewDecoder(bytes.NewReader(x)) - decoder61.DisallowUnknownFields() - var h61 UnchangedDocumentDiagnosticReport - if err := decoder61.Decode(&h61); err == nil { - t.Value = h61 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]"} -} - -func (t Or_RelatedUnchangedDocumentDiagnosticReport_relatedDocuments_Value) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case FullDocumentDiagnosticReport: - return json.Marshal(x) - case UnchangedDocumentDiagnosticReport: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]", t) -} - -func (t *Or_RelatedUnchangedDocumentDiagnosticReport_relatedDocuments_Value) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder64 := json.NewDecoder(bytes.NewReader(x)) - decoder64.DisallowUnknownFields() - var h64 FullDocumentDiagnosticReport - if err := decoder64.Decode(&h64); err == nil { - t.Value = h64 - return nil - } - decoder65 := json.NewDecoder(bytes.NewReader(x)) - decoder65.DisallowUnknownFields() - var h65 UnchangedDocumentDiagnosticReport - if err := decoder65.Decode(&h65); err == nil { - t.Value = h65 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport]"} -} - -func (t Or_RelativePattern_baseUri) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case URI: - return json.Marshal(x) - case WorkspaceFolder: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [URI WorkspaceFolder]", t) -} - -func (t *Or_RelativePattern_baseUri) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder214 := json.NewDecoder(bytes.NewReader(x)) - decoder214.DisallowUnknownFields() - var h214 URI - if err := decoder214.Decode(&h214); err == nil { - t.Value = h214 - return nil - } - decoder215 := json.NewDecoder(bytes.NewReader(x)) - decoder215.DisallowUnknownFields() - var h215 WorkspaceFolder - if err := decoder215.Decode(&h215); err == nil { - t.Value = h215 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [URI WorkspaceFolder]"} -} - -func (t Or_Result_textDocument_codeAction_Item0_Elem) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case CodeAction: - return json.Marshal(x) - case Command: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [CodeAction Command]", t) -} - -func (t *Or_Result_textDocument_codeAction_Item0_Elem) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder322 := json.NewDecoder(bytes.NewReader(x)) - decoder322.DisallowUnknownFields() - var h322 CodeAction - if err := decoder322.Decode(&h322); err == nil { - t.Value = h322 - return nil - } - decoder323 := json.NewDecoder(bytes.NewReader(x)) - decoder323.DisallowUnknownFields() - var h323 Command - if err := decoder323.Decode(&h323); err == nil { - t.Value = h323 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [CodeAction Command]"} -} - -func (t Or_Result_textDocument_completion) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case CompletionList: - return json.Marshal(x) - case []CompletionItem: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [CompletionList []CompletionItem]", t) -} - -func (t *Or_Result_textDocument_completion) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder310 := json.NewDecoder(bytes.NewReader(x)) - decoder310.DisallowUnknownFields() - var h310 CompletionList - if err := decoder310.Decode(&h310); err == nil { - t.Value = h310 - return nil - } - decoder311 := json.NewDecoder(bytes.NewReader(x)) - decoder311.DisallowUnknownFields() - var h311 []CompletionItem - if err := decoder311.Decode(&h311); err == nil { - t.Value = h311 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [CompletionList []CompletionItem]"} -} - -func (t Or_Result_textDocument_declaration) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Declaration: - return json.Marshal(x) - case []DeclarationLink: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Declaration []DeclarationLink]", t) -} - -func (t *Or_Result_textDocument_declaration) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder298 := json.NewDecoder(bytes.NewReader(x)) - decoder298.DisallowUnknownFields() - var h298 Declaration - if err := decoder298.Decode(&h298); err == nil { - t.Value = h298 - return nil - } - decoder299 := json.NewDecoder(bytes.NewReader(x)) - decoder299.DisallowUnknownFields() - var h299 []DeclarationLink - if err := decoder299.Decode(&h299); err == nil { - t.Value = h299 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Declaration []DeclarationLink]"} -} - -func (t Or_Result_textDocument_definition) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Definition: - return json.Marshal(x) - case []DefinitionLink: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Definition []DefinitionLink]", t) -} - -func (t *Or_Result_textDocument_definition) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder314 := json.NewDecoder(bytes.NewReader(x)) - decoder314.DisallowUnknownFields() - var h314 Definition - if err := decoder314.Decode(&h314); err == nil { - t.Value = h314 - return nil - } - decoder315 := json.NewDecoder(bytes.NewReader(x)) - decoder315.DisallowUnknownFields() - var h315 []DefinitionLink - if err := decoder315.Decode(&h315); err == nil { - t.Value = h315 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Definition []DefinitionLink]"} -} - -func (t Or_Result_textDocument_documentSymbol) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case []DocumentSymbol: - return json.Marshal(x) - case []SymbolInformation: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [[]DocumentSymbol []SymbolInformation]", t) -} - -func (t *Or_Result_textDocument_documentSymbol) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder318 := json.NewDecoder(bytes.NewReader(x)) - decoder318.DisallowUnknownFields() - var h318 []DocumentSymbol - if err := decoder318.Decode(&h318); err == nil { - t.Value = h318 - return nil - } - decoder319 := json.NewDecoder(bytes.NewReader(x)) - decoder319.DisallowUnknownFields() - var h319 []SymbolInformation - if err := decoder319.Decode(&h319); err == nil { - t.Value = h319 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [[]DocumentSymbol []SymbolInformation]"} -} - -func (t Or_Result_textDocument_implementation) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Definition: - return json.Marshal(x) - case []DefinitionLink: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Definition []DefinitionLink]", t) -} - -func (t *Or_Result_textDocument_implementation) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder290 := json.NewDecoder(bytes.NewReader(x)) - decoder290.DisallowUnknownFields() - var h290 Definition - if err := decoder290.Decode(&h290); err == nil { - t.Value = h290 - return nil - } - decoder291 := json.NewDecoder(bytes.NewReader(x)) - decoder291.DisallowUnknownFields() - var h291 []DefinitionLink - if err := decoder291.Decode(&h291); err == nil { - t.Value = h291 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Definition []DefinitionLink]"} -} - -func (t Or_Result_textDocument_inlineCompletion) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case InlineCompletionList: - return json.Marshal(x) - case []InlineCompletionItem: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [InlineCompletionList []InlineCompletionItem]", t) -} - -func (t *Or_Result_textDocument_inlineCompletion) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder306 := json.NewDecoder(bytes.NewReader(x)) - decoder306.DisallowUnknownFields() - var h306 InlineCompletionList - if err := decoder306.Decode(&h306); err == nil { - t.Value = h306 - return nil - } - decoder307 := json.NewDecoder(bytes.NewReader(x)) - decoder307.DisallowUnknownFields() - var h307 []InlineCompletionItem - if err := decoder307.Decode(&h307); err == nil { - t.Value = h307 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [InlineCompletionList []InlineCompletionItem]"} -} - -func (t Or_Result_textDocument_semanticTokens_full_delta) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case SemanticTokens: - return json.Marshal(x) - case SemanticTokensDelta: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [SemanticTokens SemanticTokensDelta]", t) -} - -func (t *Or_Result_textDocument_semanticTokens_full_delta) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder302 := json.NewDecoder(bytes.NewReader(x)) - decoder302.DisallowUnknownFields() - var h302 SemanticTokens - if err := decoder302.Decode(&h302); err == nil { - t.Value = h302 - return nil - } - decoder303 := json.NewDecoder(bytes.NewReader(x)) - decoder303.DisallowUnknownFields() - var h303 SemanticTokensDelta - if err := decoder303.Decode(&h303); err == nil { - t.Value = h303 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [SemanticTokens SemanticTokensDelta]"} -} - -func (t Or_Result_textDocument_typeDefinition) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Definition: - return json.Marshal(x) - case []DefinitionLink: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Definition []DefinitionLink]", t) -} - -func (t *Or_Result_textDocument_typeDefinition) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder294 := json.NewDecoder(bytes.NewReader(x)) - decoder294.DisallowUnknownFields() - var h294 Definition - if err := decoder294.Decode(&h294); err == nil { - t.Value = h294 - return nil - } - decoder295 := json.NewDecoder(bytes.NewReader(x)) - decoder295.DisallowUnknownFields() - var h295 []DefinitionLink - if err := decoder295.Decode(&h295); err == nil { - t.Value = h295 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Definition []DefinitionLink]"} -} - -func (t Or_Result_workspace_symbol) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case []SymbolInformation: - return json.Marshal(x) - case []WorkspaceSymbol: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [[]SymbolInformation []WorkspaceSymbol]", t) -} - -func (t *Or_Result_workspace_symbol) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder326 := json.NewDecoder(bytes.NewReader(x)) - decoder326.DisallowUnknownFields() - var h326 []SymbolInformation - if err := decoder326.Decode(&h326); err == nil { - t.Value = h326 - return nil - } - decoder327 := json.NewDecoder(bytes.NewReader(x)) - decoder327.DisallowUnknownFields() - var h327 []WorkspaceSymbol - if err := decoder327.Decode(&h327); err == nil { - t.Value = h327 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [[]SymbolInformation []WorkspaceSymbol]"} -} - -func (t Or_SemanticTokensOptions_full) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case SemanticTokensFullDelta: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [SemanticTokensFullDelta bool]", t) -} - -func (t *Or_SemanticTokensOptions_full) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder47 := json.NewDecoder(bytes.NewReader(x)) - decoder47.DisallowUnknownFields() - var boolVal bool - if err := decoder47.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder48 := json.NewDecoder(bytes.NewReader(x)) - decoder48.DisallowUnknownFields() - var h48 SemanticTokensFullDelta - if err := decoder48.Decode(&h48); err == nil { - t.Value = h48 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [SemanticTokensFullDelta bool]"} -} - -func (t Or_SemanticTokensOptions_range) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Lit_SemanticTokensOptions_range_Item1: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Lit_SemanticTokensOptions_range_Item1 bool]", t) -} - -func (t *Or_SemanticTokensOptions_range) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder44 := json.NewDecoder(bytes.NewReader(x)) - decoder44.DisallowUnknownFields() - var boolVal bool - if err := decoder44.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder45 := json.NewDecoder(bytes.NewReader(x)) - decoder45.DisallowUnknownFields() - var h45 Lit_SemanticTokensOptions_range_Item1 - if err := decoder45.Decode(&h45); err == nil { - t.Value = h45 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Lit_SemanticTokensOptions_range_Item1 bool]"} -} - -func (t Or_ServerCapabilities_callHierarchyProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case CallHierarchyOptions: - return json.Marshal(x) - case CallHierarchyRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [CallHierarchyOptions CallHierarchyRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_callHierarchyProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder140 := json.NewDecoder(bytes.NewReader(x)) - decoder140.DisallowUnknownFields() - var boolVal bool - if err := decoder140.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder141 := json.NewDecoder(bytes.NewReader(x)) - decoder141.DisallowUnknownFields() - var h141 CallHierarchyOptions - if err := decoder141.Decode(&h141); err == nil { - t.Value = h141 - return nil - } - decoder142 := json.NewDecoder(bytes.NewReader(x)) - decoder142.DisallowUnknownFields() - var h142 CallHierarchyRegistrationOptions - if err := decoder142.Decode(&h142); err == nil { - t.Value = h142 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [CallHierarchyOptions CallHierarchyRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_codeActionProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case CodeActionOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [CodeActionOptions bool]", t) -} - -func (t *Or_ServerCapabilities_codeActionProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder109 := json.NewDecoder(bytes.NewReader(x)) - decoder109.DisallowUnknownFields() - var boolVal bool - if err := decoder109.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder110 := json.NewDecoder(bytes.NewReader(x)) - decoder110.DisallowUnknownFields() - var h110 CodeActionOptions - if err := decoder110.Decode(&h110); err == nil { - t.Value = h110 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [CodeActionOptions bool]"} -} - -func (t Or_ServerCapabilities_colorProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case DocumentColorOptions: - return json.Marshal(x) - case DocumentColorRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [DocumentColorOptions DocumentColorRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_colorProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder113 := json.NewDecoder(bytes.NewReader(x)) - decoder113.DisallowUnknownFields() - var boolVal bool - if err := decoder113.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder114 := json.NewDecoder(bytes.NewReader(x)) - decoder114.DisallowUnknownFields() - var h114 DocumentColorOptions - if err := decoder114.Decode(&h114); err == nil { - t.Value = h114 - return nil - } - decoder115 := json.NewDecoder(bytes.NewReader(x)) - decoder115.DisallowUnknownFields() - var h115 DocumentColorRegistrationOptions - if err := decoder115.Decode(&h115); err == nil { - t.Value = h115 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [DocumentColorOptions DocumentColorRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_declarationProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case DeclarationOptions: - return json.Marshal(x) - case DeclarationRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [DeclarationOptions DeclarationRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_declarationProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder83 := json.NewDecoder(bytes.NewReader(x)) - decoder83.DisallowUnknownFields() - var boolVal bool - if err := decoder83.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder84 := json.NewDecoder(bytes.NewReader(x)) - decoder84.DisallowUnknownFields() - var h84 DeclarationOptions - if err := decoder84.Decode(&h84); err == nil { - t.Value = h84 - return nil - } - decoder85 := json.NewDecoder(bytes.NewReader(x)) - decoder85.DisallowUnknownFields() - var h85 DeclarationRegistrationOptions - if err := decoder85.Decode(&h85); err == nil { - t.Value = h85 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [DeclarationOptions DeclarationRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_definitionProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case DefinitionOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [DefinitionOptions bool]", t) -} - -func (t *Or_ServerCapabilities_definitionProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder87 := json.NewDecoder(bytes.NewReader(x)) - decoder87.DisallowUnknownFields() - var boolVal bool - if err := decoder87.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder88 := json.NewDecoder(bytes.NewReader(x)) - decoder88.DisallowUnknownFields() - var h88 DefinitionOptions - if err := decoder88.Decode(&h88); err == nil { - t.Value = h88 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [DefinitionOptions bool]"} -} - -func (t Or_ServerCapabilities_diagnosticProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case DiagnosticOptions: - return json.Marshal(x) - case DiagnosticRegistrationOptions: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [DiagnosticOptions DiagnosticRegistrationOptions]", t) -} - -func (t *Or_ServerCapabilities_diagnosticProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder174 := json.NewDecoder(bytes.NewReader(x)) - decoder174.DisallowUnknownFields() - var h174 DiagnosticOptions - if err := decoder174.Decode(&h174); err == nil { - t.Value = h174 - return nil - } - decoder175 := json.NewDecoder(bytes.NewReader(x)) - decoder175.DisallowUnknownFields() - var h175 DiagnosticRegistrationOptions - if err := decoder175.Decode(&h175); err == nil { - t.Value = h175 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [DiagnosticOptions DiagnosticRegistrationOptions]"} -} - -func (t Or_ServerCapabilities_documentFormattingProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case DocumentFormattingOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [DocumentFormattingOptions bool]", t) -} - -func (t *Or_ServerCapabilities_documentFormattingProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder120 := json.NewDecoder(bytes.NewReader(x)) - decoder120.DisallowUnknownFields() - var boolVal bool - if err := decoder120.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder121 := json.NewDecoder(bytes.NewReader(x)) - decoder121.DisallowUnknownFields() - var h121 DocumentFormattingOptions - if err := decoder121.Decode(&h121); err == nil { - t.Value = h121 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [DocumentFormattingOptions bool]"} -} - -func (t Or_ServerCapabilities_documentHighlightProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case DocumentHighlightOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [DocumentHighlightOptions bool]", t) -} - -func (t *Or_ServerCapabilities_documentHighlightProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder103 := json.NewDecoder(bytes.NewReader(x)) - decoder103.DisallowUnknownFields() - var boolVal bool - if err := decoder103.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder104 := json.NewDecoder(bytes.NewReader(x)) - decoder104.DisallowUnknownFields() - var h104 DocumentHighlightOptions - if err := decoder104.Decode(&h104); err == nil { - t.Value = h104 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [DocumentHighlightOptions bool]"} -} - -func (t Or_ServerCapabilities_documentRangeFormattingProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case DocumentRangeFormattingOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [DocumentRangeFormattingOptions bool]", t) -} - -func (t *Or_ServerCapabilities_documentRangeFormattingProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder123 := json.NewDecoder(bytes.NewReader(x)) - decoder123.DisallowUnknownFields() - var boolVal bool - if err := decoder123.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder124 := json.NewDecoder(bytes.NewReader(x)) - decoder124.DisallowUnknownFields() - var h124 DocumentRangeFormattingOptions - if err := decoder124.Decode(&h124); err == nil { - t.Value = h124 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [DocumentRangeFormattingOptions bool]"} -} - -func (t Or_ServerCapabilities_documentSymbolProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case DocumentSymbolOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [DocumentSymbolOptions bool]", t) -} - -func (t *Or_ServerCapabilities_documentSymbolProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder106 := json.NewDecoder(bytes.NewReader(x)) - decoder106.DisallowUnknownFields() - var boolVal bool - if err := decoder106.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder107 := json.NewDecoder(bytes.NewReader(x)) - decoder107.DisallowUnknownFields() - var h107 DocumentSymbolOptions - if err := decoder107.Decode(&h107); err == nil { - t.Value = h107 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [DocumentSymbolOptions bool]"} -} - -func (t Or_ServerCapabilities_foldingRangeProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case FoldingRangeOptions: - return json.Marshal(x) - case FoldingRangeRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [FoldingRangeOptions FoldingRangeRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_foldingRangeProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder130 := json.NewDecoder(bytes.NewReader(x)) - decoder130.DisallowUnknownFields() - var boolVal bool - if err := decoder130.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder131 := json.NewDecoder(bytes.NewReader(x)) - decoder131.DisallowUnknownFields() - var h131 FoldingRangeOptions - if err := decoder131.Decode(&h131); err == nil { - t.Value = h131 - return nil - } - decoder132 := json.NewDecoder(bytes.NewReader(x)) - decoder132.DisallowUnknownFields() - var h132 FoldingRangeRegistrationOptions - if err := decoder132.Decode(&h132); err == nil { - t.Value = h132 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [FoldingRangeOptions FoldingRangeRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_hoverProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case HoverOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [HoverOptions bool]", t) -} - -func (t *Or_ServerCapabilities_hoverProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder79 := json.NewDecoder(bytes.NewReader(x)) - decoder79.DisallowUnknownFields() - var boolVal bool - if err := decoder79.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder80 := json.NewDecoder(bytes.NewReader(x)) - decoder80.DisallowUnknownFields() - var h80 HoverOptions - if err := decoder80.Decode(&h80); err == nil { - t.Value = h80 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [HoverOptions bool]"} -} - -func (t Or_ServerCapabilities_implementationProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case ImplementationOptions: - return json.Marshal(x) - case ImplementationRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [ImplementationOptions ImplementationRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_implementationProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder96 := json.NewDecoder(bytes.NewReader(x)) - decoder96.DisallowUnknownFields() - var boolVal bool - if err := decoder96.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder97 := json.NewDecoder(bytes.NewReader(x)) - decoder97.DisallowUnknownFields() - var h97 ImplementationOptions - if err := decoder97.Decode(&h97); err == nil { - t.Value = h97 - return nil - } - decoder98 := json.NewDecoder(bytes.NewReader(x)) - decoder98.DisallowUnknownFields() - var h98 ImplementationRegistrationOptions - if err := decoder98.Decode(&h98); err == nil { - t.Value = h98 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [ImplementationOptions ImplementationRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_inlayHintProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case InlayHintOptions: - return json.Marshal(x) - case InlayHintRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [InlayHintOptions InlayHintRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_inlayHintProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder169 := json.NewDecoder(bytes.NewReader(x)) - decoder169.DisallowUnknownFields() - var boolVal bool - if err := decoder169.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder170 := json.NewDecoder(bytes.NewReader(x)) - decoder170.DisallowUnknownFields() - var h170 InlayHintOptions - if err := decoder170.Decode(&h170); err == nil { - t.Value = h170 - return nil - } - decoder171 := json.NewDecoder(bytes.NewReader(x)) - decoder171.DisallowUnknownFields() - var h171 InlayHintRegistrationOptions - if err := decoder171.Decode(&h171); err == nil { - t.Value = h171 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [InlayHintOptions InlayHintRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_inlineCompletionProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case InlineCompletionOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [InlineCompletionOptions bool]", t) -} - -func (t *Or_ServerCapabilities_inlineCompletionProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder177 := json.NewDecoder(bytes.NewReader(x)) - decoder177.DisallowUnknownFields() - var boolVal bool - if err := decoder177.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder178 := json.NewDecoder(bytes.NewReader(x)) - decoder178.DisallowUnknownFields() - var h178 InlineCompletionOptions - if err := decoder178.Decode(&h178); err == nil { - t.Value = h178 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [InlineCompletionOptions bool]"} -} - -func (t Or_ServerCapabilities_inlineValueProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case InlineValueOptions: - return json.Marshal(x) - case InlineValueRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [InlineValueOptions InlineValueRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_inlineValueProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder164 := json.NewDecoder(bytes.NewReader(x)) - decoder164.DisallowUnknownFields() - var boolVal bool - if err := decoder164.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder165 := json.NewDecoder(bytes.NewReader(x)) - decoder165.DisallowUnknownFields() - var h165 InlineValueOptions - if err := decoder165.Decode(&h165); err == nil { - t.Value = h165 - return nil - } - decoder166 := json.NewDecoder(bytes.NewReader(x)) - decoder166.DisallowUnknownFields() - var h166 InlineValueRegistrationOptions - if err := decoder166.Decode(&h166); err == nil { - t.Value = h166 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [InlineValueOptions InlineValueRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_linkedEditingRangeProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case LinkedEditingRangeOptions: - return json.Marshal(x) - case LinkedEditingRangeRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [LinkedEditingRangeOptions LinkedEditingRangeRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_linkedEditingRangeProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder145 := json.NewDecoder(bytes.NewReader(x)) - decoder145.DisallowUnknownFields() - var boolVal bool - if err := decoder145.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder146 := json.NewDecoder(bytes.NewReader(x)) - decoder146.DisallowUnknownFields() - var h146 LinkedEditingRangeOptions - if err := decoder146.Decode(&h146); err == nil { - t.Value = h146 - return nil - } - decoder147 := json.NewDecoder(bytes.NewReader(x)) - decoder147.DisallowUnknownFields() - var h147 LinkedEditingRangeRegistrationOptions - if err := decoder147.Decode(&h147); err == nil { - t.Value = h147 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [LinkedEditingRangeOptions LinkedEditingRangeRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_monikerProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case MonikerOptions: - return json.Marshal(x) - case MonikerRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [MonikerOptions MonikerRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_monikerProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder154 := json.NewDecoder(bytes.NewReader(x)) - decoder154.DisallowUnknownFields() - var boolVal bool - if err := decoder154.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder155 := json.NewDecoder(bytes.NewReader(x)) - decoder155.DisallowUnknownFields() - var h155 MonikerOptions - if err := decoder155.Decode(&h155); err == nil { - t.Value = h155 - return nil - } - decoder156 := json.NewDecoder(bytes.NewReader(x)) - decoder156.DisallowUnknownFields() - var h156 MonikerRegistrationOptions - if err := decoder156.Decode(&h156); err == nil { - t.Value = h156 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [MonikerOptions MonikerRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_notebookDocumentSync) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case NotebookDocumentSyncOptions: - return json.Marshal(x) - case NotebookDocumentSyncRegistrationOptions: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [NotebookDocumentSyncOptions NotebookDocumentSyncRegistrationOptions]", t) -} - -func (t *Or_ServerCapabilities_notebookDocumentSync) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder76 := json.NewDecoder(bytes.NewReader(x)) - decoder76.DisallowUnknownFields() - var h76 NotebookDocumentSyncOptions - if err := decoder76.Decode(&h76); err == nil { - t.Value = h76 - return nil - } - decoder77 := json.NewDecoder(bytes.NewReader(x)) - decoder77.DisallowUnknownFields() - var h77 NotebookDocumentSyncRegistrationOptions - if err := decoder77.Decode(&h77); err == nil { - t.Value = h77 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [NotebookDocumentSyncOptions NotebookDocumentSyncRegistrationOptions]"} -} - -func (t Or_ServerCapabilities_referencesProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case ReferenceOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [ReferenceOptions bool]", t) -} - -func (t *Or_ServerCapabilities_referencesProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder100 := json.NewDecoder(bytes.NewReader(x)) - decoder100.DisallowUnknownFields() - var boolVal bool - if err := decoder100.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder101 := json.NewDecoder(bytes.NewReader(x)) - decoder101.DisallowUnknownFields() - var h101 ReferenceOptions - if err := decoder101.Decode(&h101); err == nil { - t.Value = h101 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [ReferenceOptions bool]"} -} - -func (t Or_ServerCapabilities_renameProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case RenameOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [RenameOptions bool]", t) -} - -func (t *Or_ServerCapabilities_renameProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder126 := json.NewDecoder(bytes.NewReader(x)) - decoder126.DisallowUnknownFields() - var boolVal bool - if err := decoder126.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder127 := json.NewDecoder(bytes.NewReader(x)) - decoder127.DisallowUnknownFields() - var h127 RenameOptions - if err := decoder127.Decode(&h127); err == nil { - t.Value = h127 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [RenameOptions bool]"} -} - -func (t Or_ServerCapabilities_selectionRangeProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case SelectionRangeOptions: - return json.Marshal(x) - case SelectionRangeRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [SelectionRangeOptions SelectionRangeRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_selectionRangeProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder135 := json.NewDecoder(bytes.NewReader(x)) - decoder135.DisallowUnknownFields() - var boolVal bool - if err := decoder135.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder136 := json.NewDecoder(bytes.NewReader(x)) - decoder136.DisallowUnknownFields() - var h136 SelectionRangeOptions - if err := decoder136.Decode(&h136); err == nil { - t.Value = h136 - return nil - } - decoder137 := json.NewDecoder(bytes.NewReader(x)) - decoder137.DisallowUnknownFields() - var h137 SelectionRangeRegistrationOptions - if err := decoder137.Decode(&h137); err == nil { - t.Value = h137 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [SelectionRangeOptions SelectionRangeRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_semanticTokensProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case SemanticTokensOptions: - return json.Marshal(x) - case SemanticTokensRegistrationOptions: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [SemanticTokensOptions SemanticTokensRegistrationOptions]", t) -} - -func (t *Or_ServerCapabilities_semanticTokensProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder150 := json.NewDecoder(bytes.NewReader(x)) - decoder150.DisallowUnknownFields() - var h150 SemanticTokensOptions - if err := decoder150.Decode(&h150); err == nil { - t.Value = h150 - return nil - } - decoder151 := json.NewDecoder(bytes.NewReader(x)) - decoder151.DisallowUnknownFields() - var h151 SemanticTokensRegistrationOptions - if err := decoder151.Decode(&h151); err == nil { - t.Value = h151 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [SemanticTokensOptions SemanticTokensRegistrationOptions]"} -} - -func (t Or_ServerCapabilities_textDocumentSync) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case TextDocumentSyncKind: - return json.Marshal(x) - case TextDocumentSyncOptions: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [TextDocumentSyncKind TextDocumentSyncOptions]", t) -} - -func (t *Or_ServerCapabilities_textDocumentSync) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder72 := json.NewDecoder(bytes.NewReader(x)) - decoder72.DisallowUnknownFields() - var h72 TextDocumentSyncKind - if err := decoder72.Decode(&h72); err == nil { - t.Value = h72 - return nil - } - decoder73 := json.NewDecoder(bytes.NewReader(x)) - decoder73.DisallowUnknownFields() - var h73 TextDocumentSyncOptions - if err := decoder73.Decode(&h73); err == nil { - t.Value = h73 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [TextDocumentSyncKind TextDocumentSyncOptions]"} -} - -func (t Or_ServerCapabilities_typeDefinitionProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case TypeDefinitionOptions: - return json.Marshal(x) - case TypeDefinitionRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [TypeDefinitionOptions TypeDefinitionRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_typeDefinitionProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder91 := json.NewDecoder(bytes.NewReader(x)) - decoder91.DisallowUnknownFields() - var boolVal bool - if err := decoder91.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder92 := json.NewDecoder(bytes.NewReader(x)) - decoder92.DisallowUnknownFields() - var h92 TypeDefinitionOptions - if err := decoder92.Decode(&h92); err == nil { - t.Value = h92 - return nil - } - decoder93 := json.NewDecoder(bytes.NewReader(x)) - decoder93.DisallowUnknownFields() - var h93 TypeDefinitionRegistrationOptions - if err := decoder93.Decode(&h93); err == nil { - t.Value = h93 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [TypeDefinitionOptions TypeDefinitionRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_typeHierarchyProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case TypeHierarchyOptions: - return json.Marshal(x) - case TypeHierarchyRegistrationOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [TypeHierarchyOptions TypeHierarchyRegistrationOptions bool]", t) -} - -func (t *Or_ServerCapabilities_typeHierarchyProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder159 := json.NewDecoder(bytes.NewReader(x)) - decoder159.DisallowUnknownFields() - var boolVal bool - if err := decoder159.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder160 := json.NewDecoder(bytes.NewReader(x)) - decoder160.DisallowUnknownFields() - var h160 TypeHierarchyOptions - if err := decoder160.Decode(&h160); err == nil { - t.Value = h160 - return nil - } - decoder161 := json.NewDecoder(bytes.NewReader(x)) - decoder161.DisallowUnknownFields() - var h161 TypeHierarchyRegistrationOptions - if err := decoder161.Decode(&h161); err == nil { - t.Value = h161 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [TypeHierarchyOptions TypeHierarchyRegistrationOptions bool]"} -} - -func (t Or_ServerCapabilities_workspaceSymbolProvider) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case WorkspaceSymbolOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [WorkspaceSymbolOptions bool]", t) -} - -func (t *Or_ServerCapabilities_workspaceSymbolProvider) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder117 := json.NewDecoder(bytes.NewReader(x)) - decoder117.DisallowUnknownFields() - var boolVal bool - if err := decoder117.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder118 := json.NewDecoder(bytes.NewReader(x)) - decoder118.DisallowUnknownFields() - var h118 WorkspaceSymbolOptions - if err := decoder118.Decode(&h118); err == nil { - t.Value = h118 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [WorkspaceSymbolOptions bool]"} -} - -func (t Or_SignatureInformation_documentation) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case MarkupContent: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [MarkupContent string]", t) -} - -func (t *Or_SignatureInformation_documentation) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder186 := json.NewDecoder(bytes.NewReader(x)) - decoder186.DisallowUnknownFields() - var stringVal string - if err := decoder186.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - decoder187 := json.NewDecoder(bytes.NewReader(x)) - decoder187.DisallowUnknownFields() - var h187 MarkupContent - if err := decoder187.Decode(&h187); err == nil { - t.Value = h187 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [MarkupContent string]"} -} - -func (t Or_TextDocumentContentChangeEvent) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case TextDocumentContentChangePartial: - return json.Marshal(x) - case TextDocumentContentChangeWholeDocument: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [TextDocumentContentChangePartial TextDocumentContentChangeWholeDocument]", t) -} - -func (t *Or_TextDocumentContentChangeEvent) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder263 := json.NewDecoder(bytes.NewReader(x)) - decoder263.DisallowUnknownFields() - var h263 TextDocumentContentChangePartial - if err := decoder263.Decode(&h263); err == nil { - t.Value = h263 - return nil - } - decoder264 := json.NewDecoder(bytes.NewReader(x)) - decoder264.DisallowUnknownFields() - var h264 TextDocumentContentChangeWholeDocument - if err := decoder264.Decode(&h264); err == nil { - t.Value = h264 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [TextDocumentContentChangePartial TextDocumentContentChangeWholeDocument]"} -} - -func (t Or_TextDocumentEdit_edits_Elem) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case AnnotatedTextEdit: - return json.Marshal(x) - case SnippetTextEdit: - return json.Marshal(x) - case TextEdit: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [AnnotatedTextEdit SnippetTextEdit TextEdit]", t) -} - -func (t *Or_TextDocumentEdit_edits_Elem) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder52 := json.NewDecoder(bytes.NewReader(x)) - decoder52.DisallowUnknownFields() - var h52 AnnotatedTextEdit - if err := decoder52.Decode(&h52); err == nil { - t.Value = h52 - return nil - } - decoder53 := json.NewDecoder(bytes.NewReader(x)) - decoder53.DisallowUnknownFields() - var h53 SnippetTextEdit - if err := decoder53.Decode(&h53); err == nil { - t.Value = h53 - return nil - } - decoder54 := json.NewDecoder(bytes.NewReader(x)) - decoder54.DisallowUnknownFields() - var h54 TextEdit - if err := decoder54.Decode(&h54); err == nil { - t.Value = h54 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [AnnotatedTextEdit SnippetTextEdit TextEdit]"} -} - -func (t Or_TextDocumentFilter) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case TextDocumentFilterLanguage: - return json.Marshal(x) - case TextDocumentFilterPattern: - return json.Marshal(x) - case TextDocumentFilterScheme: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [TextDocumentFilterLanguage TextDocumentFilterPattern TextDocumentFilterScheme]", t) -} - -func (t *Or_TextDocumentFilter) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder279 := json.NewDecoder(bytes.NewReader(x)) - decoder279.DisallowUnknownFields() - var h279 TextDocumentFilterLanguage - if err := decoder279.Decode(&h279); err == nil { - t.Value = h279 - return nil - } - decoder280 := json.NewDecoder(bytes.NewReader(x)) - decoder280.DisallowUnknownFields() - var h280 TextDocumentFilterPattern - if err := decoder280.Decode(&h280); err == nil { - t.Value = h280 - return nil - } - decoder281 := json.NewDecoder(bytes.NewReader(x)) - decoder281.DisallowUnknownFields() - var h281 TextDocumentFilterScheme - if err := decoder281.Decode(&h281); err == nil { - t.Value = h281 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [TextDocumentFilterLanguage TextDocumentFilterPattern TextDocumentFilterScheme]"} -} - -func (t Or_TextDocumentSyncOptions_save) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case SaveOptions: - return json.Marshal(x) - case bool: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [SaveOptions bool]", t) -} - -func (t *Or_TextDocumentSyncOptions_save) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder195 := json.NewDecoder(bytes.NewReader(x)) - decoder195.DisallowUnknownFields() - var boolVal bool - if err := decoder195.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder196 := json.NewDecoder(bytes.NewReader(x)) - decoder196.DisallowUnknownFields() - var h196 SaveOptions - if err := decoder196.Decode(&h196); err == nil { - t.Value = h196 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [SaveOptions bool]"} -} - -func (t Or_WorkspaceDocumentDiagnosticReport) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case WorkspaceFullDocumentDiagnosticReport: - return json.Marshal(x) - case WorkspaceUnchangedDocumentDiagnosticReport: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [WorkspaceFullDocumentDiagnosticReport WorkspaceUnchangedDocumentDiagnosticReport]", t) -} - -func (t *Or_WorkspaceDocumentDiagnosticReport) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder259 := json.NewDecoder(bytes.NewReader(x)) - decoder259.DisallowUnknownFields() - var h259 WorkspaceFullDocumentDiagnosticReport - if err := decoder259.Decode(&h259); err == nil { - t.Value = h259 - return nil - } - decoder260 := json.NewDecoder(bytes.NewReader(x)) - decoder260.DisallowUnknownFields() - var h260 WorkspaceUnchangedDocumentDiagnosticReport - if err := decoder260.Decode(&h260); err == nil { - t.Value = h260 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [WorkspaceFullDocumentDiagnosticReport WorkspaceUnchangedDocumentDiagnosticReport]"} -} - -func (t Or_WorkspaceEdit_documentChanges_Elem) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case CreateFile: - return json.Marshal(x) - case DeleteFile: - return json.Marshal(x) - case RenameFile: - return json.Marshal(x) - case TextDocumentEdit: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [CreateFile DeleteFile RenameFile TextDocumentEdit]", t) -} - -func (t *Or_WorkspaceEdit_documentChanges_Elem) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder4 := json.NewDecoder(bytes.NewReader(x)) - decoder4.DisallowUnknownFields() - var h4 CreateFile - if err := decoder4.Decode(&h4); err == nil { - t.Value = h4 - return nil - } - decoder5 := json.NewDecoder(bytes.NewReader(x)) - decoder5.DisallowUnknownFields() - var h5 DeleteFile - if err := decoder5.Decode(&h5); err == nil { - t.Value = h5 - return nil - } - decoder6 := json.NewDecoder(bytes.NewReader(x)) - decoder6.DisallowUnknownFields() - var h6 RenameFile - if err := decoder6.Decode(&h6); err == nil { - t.Value = h6 - return nil - } - decoder7 := json.NewDecoder(bytes.NewReader(x)) - decoder7.DisallowUnknownFields() - var h7 TextDocumentEdit - if err := decoder7.Decode(&h7); err == nil { - t.Value = h7 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [CreateFile DeleteFile RenameFile TextDocumentEdit]"} -} - -func (t Or_WorkspaceFoldersServerCapabilities_changeNotifications) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case bool: - return json.Marshal(x) - case string: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [bool string]", t) -} - -func (t *Or_WorkspaceFoldersServerCapabilities_changeNotifications) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder210 := json.NewDecoder(bytes.NewReader(x)) - decoder210.DisallowUnknownFields() - var boolVal bool - if err := decoder210.Decode(&boolVal); err == nil { - t.Value = boolVal - return nil - } - decoder211 := json.NewDecoder(bytes.NewReader(x)) - decoder211.DisallowUnknownFields() - var stringVal string - if err := decoder211.Decode(&stringVal); err == nil { - t.Value = stringVal - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [bool string]"} -} - -func (t Or_WorkspaceOptions_textDocumentContent) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case TextDocumentContentOptions: - return json.Marshal(x) - case TextDocumentContentRegistrationOptions: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [TextDocumentContentOptions TextDocumentContentRegistrationOptions]", t) -} - -func (t *Or_WorkspaceOptions_textDocumentContent) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder199 := json.NewDecoder(bytes.NewReader(x)) - decoder199.DisallowUnknownFields() - var h199 TextDocumentContentOptions - if err := decoder199.Decode(&h199); err == nil { - t.Value = h199 - return nil - } - decoder200 := json.NewDecoder(bytes.NewReader(x)) - decoder200.DisallowUnknownFields() - var h200 TextDocumentContentRegistrationOptions - if err := decoder200.Decode(&h200); err == nil { - t.Value = h200 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [TextDocumentContentOptions TextDocumentContentRegistrationOptions]"} -} - -func (t Or_WorkspaceSymbol_location) MarshalJSON() ([]byte, error) { - switch x := t.Value.(type) { - case Location: - return json.Marshal(x) - case LocationUriOnly: - return json.Marshal(x) - case nil: - return []byte("null"), nil - } - return nil, fmt.Errorf("type %T not one of [Location LocationUriOnly]", t) -} - -func (t *Or_WorkspaceSymbol_location) UnmarshalJSON(x []byte) error { - if string(x) == "null" { - t.Value = nil - return nil - } - decoder39 := json.NewDecoder(bytes.NewReader(x)) - decoder39.DisallowUnknownFields() - var h39 Location - if err := decoder39.Decode(&h39); err == nil { - t.Value = h39 - return nil - } - decoder40 := json.NewDecoder(bytes.NewReader(x)) - decoder40.DisallowUnknownFields() - var h40 LocationUriOnly - if err := decoder40.Decode(&h40); err == nil { - t.Value = h40 - return nil - } - return &UnmarshalError{"unmarshal failed to match one of [Location LocationUriOnly]"} -} diff --git a/internal/lsp/protocol/tsprotocol.go b/internal/lsp/protocol/tsprotocol.go deleted file mode 100644 index 7f60e6f1b..000000000 --- a/internal/lsp/protocol/tsprotocol.go +++ /dev/null @@ -1,6907 +0,0 @@ -// Copyright 2023 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. - -// Code generated for LSP. DO NOT EDIT. - -package protocol - -// Code generated from protocol/metaModel.json at ref release/protocol/3.17.6-next.9 (hash c94395b5da53729e6dff931293b051009ccaaaa4). -// https://github.com/microsoft/vscode-languageserver-node/blob/release/protocol/3.17.6-next.9/protocol/metaModel.json -// LSP metaData.version = 3.17.0. - -import "encoding/json" - -// created for And -type And_RegOpt_textDocument_colorPresentation struct { - WorkDoneProgressOptions - TextDocumentRegistrationOptions -} - -// A special text edit with an additional change annotation. -// -// @since 3.16.0. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#annotatedTextEdit -type AnnotatedTextEdit struct { - // The actual identifier of the change annotation - AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"` - TextEdit -} - -// The parameters passed via an apply workspace edit request. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#applyWorkspaceEditParams -type ApplyWorkspaceEditParams struct { - // An optional label of the workspace edit. This label is - // presented in the user interface for example on an undo - // stack to undo the workspace edit. - Label string `json:"label,omitempty"` - // The edits to apply. - Edit WorkspaceEdit `json:"edit"` - // Additional data about the edit. - // - // @since 3.18.0 - // @proposed - Metadata *WorkspaceEditMetadata `json:"metadata,omitempty"` -} - -// The result returned from the apply workspace edit request. -// -// @since 3.17 renamed from ApplyWorkspaceEditResponse -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#applyWorkspaceEditResult -type ApplyWorkspaceEditResult struct { - // Indicates whether the edit was applied or not. - Applied bool `json:"applied"` - // An optional textual description for why the edit was not applied. - // This may be used by the server for diagnostic logging or to provide - // a suitable error for a request that triggered the edit. - FailureReason string `json:"failureReason,omitempty"` - // Depending on the client's failure handling strategy `failedChange` might - // contain the index of the change that failed. This property is only available - // if the client signals a `failureHandlingStrategy` in its client capabilities. - FailedChange uint32 `json:"failedChange,omitempty"` -} - -// A base for all symbol information. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#baseSymbolInformation -type BaseSymbolInformation struct { - // The name of this symbol. - Name string `json:"name"` - // The kind of this symbol. - Kind SymbolKind `json:"kind"` - // Tags for this symbol. - // - // @since 3.16.0 - Tags []SymbolTag `json:"tags,omitempty"` - // 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"` -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyClientCapabilities -type CallHierarchyClientCapabilities struct { - // 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 bool `json:"dynamicRegistration,omitempty"` -} - -// Represents an incoming call, e.g. a caller of a method or constructor. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyIncomingCall -type CallHierarchyIncomingCall struct { - // The item that makes the call. - From CallHierarchyItem `json:"from"` - // The ranges at which the calls appear. This is relative to the caller - // denoted by {@link CallHierarchyIncomingCall.from `this.from`}. - FromRanges []Range `json:"fromRanges"` -} - -// The parameter of a `callHierarchy/incomingCalls` request. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyIncomingCallsParams -type CallHierarchyIncomingCallsParams struct { - Item CallHierarchyItem `json:"item"` - WorkDoneProgressParams - PartialResultParams -} - -// Represents programming constructs like functions or constructors in the context -// of call hierarchy. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyItem -type CallHierarchyItem struct { - // The name of this item. - Name string `json:"name"` - // The kind of this item. - Kind SymbolKind `json:"kind"` - // Tags for this item. - Tags []SymbolTag `json:"tags,omitempty"` - // More detail for this item, e.g. the signature of a function. - Detail string `json:"detail,omitempty"` - // The resource identifier of this item. - URI DocumentUri `json:"uri"` - // The range enclosing this symbol not including leading/trailing whitespace but everything else, e.g. comments and code. - 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 {@link CallHierarchyItem.range `range`}. - SelectionRange Range `json:"selectionRange"` - // A data entry field that is preserved between a call hierarchy prepare and - // incoming calls or outgoing calls requests. - Data interface{} `json:"data,omitempty"` -} - -// Call hierarchy options used during static registration. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOptions -type CallHierarchyOptions struct { - WorkDoneProgressOptions -} - -// Represents an outgoing call, e.g. calling a getter from a method or a method from a constructor etc. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOutgoingCall -type CallHierarchyOutgoingCall struct { - // The item that is called. - To CallHierarchyItem `json:"to"` - // The range at which this item is called. This is the range relative to the caller, e.g the item - // passed to {@link CallHierarchyItemProvider.provideCallHierarchyOutgoingCalls `provideCallHierarchyOutgoingCalls`} - // and not {@link CallHierarchyOutgoingCall.to `this.to`}. - FromRanges []Range `json:"fromRanges"` -} - -// The parameter of a `callHierarchy/outgoingCalls` request. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyOutgoingCallsParams -type CallHierarchyOutgoingCallsParams struct { - Item CallHierarchyItem `json:"item"` - WorkDoneProgressParams - PartialResultParams -} - -// The parameter of a `textDocument/prepareCallHierarchy` request. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyPrepareParams -type CallHierarchyPrepareParams struct { - TextDocumentPositionParams - WorkDoneProgressParams -} - -// Call hierarchy options used during static or dynamic registration. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#callHierarchyRegistrationOptions -type CallHierarchyRegistrationOptions struct { - TextDocumentRegistrationOptions - CallHierarchyOptions - StaticRegistrationOptions -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#cancelParams -type CancelParams struct { - // The request id to cancel. - ID interface{} `json:"id"` -} - -// Additional information that describes document changes. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotation -type ChangeAnnotation struct { - // A human-readable string describing the actual change. The string - // is rendered prominent in the user interface. - Label string `json:"label"` - // A flag which indicates that user confirmation is needed - // before applying the change. - NeedsConfirmation bool `json:"needsConfirmation,omitempty"` - // A human-readable string which is rendered less prominent in - // the user interface. - Description string `json:"description,omitempty"` -} - -// An identifier to refer to a change annotation stored with a workspace edit. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotationIdentifier -type ChangeAnnotationIdentifier = string // (alias) -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#changeAnnotationsSupportOptions -type ChangeAnnotationsSupportOptions struct { - // Whether the client groups edits with equal labels into tree nodes, - // for instance all edits labelled with "Changes in Strings" would - // be a tree node. - GroupsOnLabel bool `json:"groupsOnLabel,omitempty"` -} - -// Defines the capabilities provided by the client. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCapabilities -type ClientCapabilities struct { - // Workspace specific client capabilities. - Workspace WorkspaceClientCapabilities `json:"workspace,omitempty"` - // Text document specific client capabilities. - TextDocument TextDocumentClientCapabilities `json:"textDocument,omitempty"` - // Capabilities specific to the notebook document support. - // - // @since 3.17.0 - NotebookDocument *NotebookDocumentClientCapabilities `json:"notebookDocument,omitempty"` - // Window specific client capabilities. - Window WindowClientCapabilities `json:"window,omitempty"` - // General client capabilities. - // - // @since 3.16.0 - General *GeneralClientCapabilities `json:"general,omitempty"` - // Experimental client capabilities. - Experimental interface{} `json:"experimental,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionKindOptions -type ClientCodeActionKindOptions struct { - // 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 `json:"valueSet"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionLiteralOptions -type ClientCodeActionLiteralOptions struct { - // The code action kind is support with the following value - // set. - CodeActionKind ClientCodeActionKindOptions `json:"codeActionKind"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeActionResolveOptions -type ClientCodeActionResolveOptions struct { - // The properties that a client can resolve lazily. - Properties []string `json:"properties"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCodeLensResolveOptions -type ClientCodeLensResolveOptions struct { - // The properties that a client can resolve lazily. - Properties []string `json:"properties"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemInsertTextModeOptions -type ClientCompletionItemInsertTextModeOptions struct { - ValueSet []InsertTextMode `json:"valueSet"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemOptions -type ClientCompletionItemOptions struct { - // 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 bool `json:"snippetSupport,omitempty"` - // Client supports commit characters on a completion item. - CommitCharactersSupport bool `json:"commitCharactersSupport,omitempty"` - // Client supports the following content formats for the documentation - // property. The order describes the preferred format of the client. - DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"` - // Client supports the deprecated property on a completion item. - DeprecatedSupport bool `json:"deprecatedSupport,omitempty"` - // Client supports the preselect property on a completion item. - PreselectSupport bool `json:"preselectSupport,omitempty"` - // Client supports the tag property on a completion item. Clients supporting - // tags have to handle unknown tags gracefully. Clients especially need to - // preserve unknown tags when sending a completion item back to the server in - // a resolve call. - // - // @since 3.15.0 - TagSupport *CompletionItemTagOptions `json:"tagSupport,omitempty"` - // Client support insert replace edit to control different behavior if a - // completion item is inserted in the text or should replace text. - // - // @since 3.16.0 - InsertReplaceSupport bool `json:"insertReplaceSupport,omitempty"` - // Indicates which properties a client can resolve lazily on a completion - // item. Before version 3.16.0 only the predefined properties `documentation` - // and `details` could be resolved lazily. - // - // @since 3.16.0 - ResolveSupport *ClientCompletionItemResolveOptions `json:"resolveSupport,omitempty"` - // The client supports the `insertTextMode` property on - // a completion item to override the whitespace handling mode - // as defined by the client (see `insertTextMode`). - // - // @since 3.16.0 - InsertTextModeSupport *ClientCompletionItemInsertTextModeOptions `json:"insertTextModeSupport,omitempty"` - // The client has support for completion item label - // details (see also `CompletionItemLabelDetails`). - // - // @since 3.17.0 - LabelDetailsSupport bool `json:"labelDetailsSupport,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemOptionsKind -type ClientCompletionItemOptionsKind struct { - // 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 `json:"valueSet,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientCompletionItemResolveOptions -type ClientCompletionItemResolveOptions struct { - // The properties that a client can resolve lazily. - Properties []string `json:"properties"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientDiagnosticsTagOptions -type ClientDiagnosticsTagOptions struct { - // The tags supported by the client. - ValueSet []DiagnosticTag `json:"valueSet"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientFoldingRangeKindOptions -type ClientFoldingRangeKindOptions struct { - // The folding range 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 []FoldingRangeKind `json:"valueSet,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientFoldingRangeOptions -type ClientFoldingRangeOptions struct { - // If set, the client signals that it supports setting collapsedText on - // folding ranges to display custom labels instead of the default text. - // - // @since 3.17.0 - CollapsedText bool `json:"collapsedText,omitempty"` -} - -// Information about the client -// -// @since 3.15.0 -// @since 3.18.0 ClientInfo type name added. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientInfo -type ClientInfo struct { - // The name of the client as defined by the client. - Name string `json:"name"` - // The client's version as defined by the client. - Version string `json:"version,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientInlayHintResolveOptions -type ClientInlayHintResolveOptions struct { - // The properties that a client can resolve lazily. - Properties []string `json:"properties"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSemanticTokensRequestFullDelta -type ClientSemanticTokensRequestFullDelta struct { - // The client will send the `textDocument/semanticTokens/full/delta` request if - // the server provides a corresponding handler. - Delta bool `json:"delta,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSemanticTokensRequestOptions -type ClientSemanticTokensRequestOptions struct { - // The client will send the `textDocument/semanticTokens/range` request if - // the server provides a corresponding handler. - Range *Or_ClientSemanticTokensRequestOptions_range `json:"range,omitempty"` - // The client will send the `textDocument/semanticTokens/full` request if - // the server provides a corresponding handler. - Full *Or_ClientSemanticTokensRequestOptions_full `json:"full,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientShowMessageActionItemOptions -type ClientShowMessageActionItemOptions struct { - // Whether the client supports additional attributes which - // are preserved and send back to the server in the - // request's response. - AdditionalPropertiesSupport bool `json:"additionalPropertiesSupport,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSignatureInformationOptions -type ClientSignatureInformationOptions struct { - // Client supports the following content formats for the documentation - // property. The order describes the preferred format of the client. - DocumentationFormat []MarkupKind `json:"documentationFormat,omitempty"` - // Client capabilities specific to parameter information. - ParameterInformation *ClientSignatureParameterInformationOptions `json:"parameterInformation,omitempty"` - // The client supports the `activeParameter` property on `SignatureInformation` - // literal. - // - // @since 3.16.0 - ActiveParameterSupport bool `json:"activeParameterSupport,omitempty"` - // The client supports the `activeParameter` property on - // `SignatureHelp`/`SignatureInformation` being set to `null` to - // indicate that no parameter should be active. - // - // @since 3.18.0 - // @proposed - NoActiveParameterSupport bool `json:"noActiveParameterSupport,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSignatureParameterInformationOptions -type ClientSignatureParameterInformationOptions struct { - // The client supports processing label offsets instead of a - // simple label string. - // - // @since 3.14.0 - LabelOffsetSupport bool `json:"labelOffsetSupport,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolKindOptions -type ClientSymbolKindOptions struct { - // 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 `json:"valueSet,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolResolveOptions -type ClientSymbolResolveOptions struct { - // The properties that a client can resolve lazily. Usually - // `location.range` - Properties []string `json:"properties"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#clientSymbolTagOptions -type ClientSymbolTagOptions struct { - // The tags supported by the client. - ValueSet []SymbolTag `json:"valueSet"` -} - -// 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. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeAction -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"` - // Marks this as a preferred action. Preferred actions are used by the `auto fix` command and can be targeted - // by keybindings. - // - // A quick fix should be marked preferred if it properly addresses the underlying error. - // A refactoring should be marked preferred if it is the most reasonable choice of actions to take. - // - // @since 3.15.0 - IsPreferred bool `json:"isPreferred,omitempty"` - // Marks that the code action cannot currently be applied. - // - // Clients should follow the following guidelines regarding disabled code actions: - // - // - Disabled code actions are not shown in automatic [lightbulbs](https://code.visualstudio.com/docs/editor/editingevolved#_code-action) - // code action menus. - // - // - Disabled actions are shown as faded out in the code action menu when the user requests a more specific type - // of code action, such as refactorings. - // - // - If the user has a [keybinding](https://code.visualstudio.com/docs/editor/refactoring#_keybindings-for-code-actions) - // that auto applies a code action and only disabled code actions are returned, the client should show the user an - // error message with `reason` in the editor. - // - // @since 3.16.0 - Disabled *CodeActionDisabled `json:"disabled,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"` - // A data entry field that is preserved on a code action between - // a `textDocument/codeAction` and a `codeAction/resolve` request. - // - // @since 3.16.0 - Data *json.RawMessage `json:"data,omitempty"` -} - -// The Client Capabilities of a {@link CodeActionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionClientCapabilities -type CodeActionClientCapabilities struct { - // Whether code action supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client support code action literals of type `CodeAction` as a valid - // response of the `textDocument/codeAction` request. If the property is not - // set the request can only return `Command` literals. - // - // @since 3.8.0 - CodeActionLiteralSupport ClientCodeActionLiteralOptions `json:"codeActionLiteralSupport,omitempty"` - // Whether code action supports the `isPreferred` property. - // - // @since 3.15.0 - IsPreferredSupport bool `json:"isPreferredSupport,omitempty"` - // Whether code action supports the `disabled` property. - // - // @since 3.16.0 - DisabledSupport bool `json:"disabledSupport,omitempty"` - // Whether code action supports the `data` property which is - // preserved between a `textDocument/codeAction` and a - // `codeAction/resolve` request. - // - // @since 3.16.0 - DataSupport bool `json:"dataSupport,omitempty"` - // Whether the client supports resolving additional code action - // properties via a separate `codeAction/resolve` request. - // - // @since 3.16.0 - ResolveSupport *ClientCodeActionResolveOptions `json:"resolveSupport,omitempty"` - // Whether the client honors the change annotations in - // text edits and resource operations returned via the - // `CodeAction#edit` property by for example presenting - // the workspace edit in the user interface and asking - // for confirmation. - // - // @since 3.16.0 - HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitempty"` - // Whether the client supports documentation for a class of - // code actions. - // - // @since 3.18.0 - // @proposed - DocumentationSupport bool `json:"documentationSupport,omitempty"` -} - -// Contains additional diagnostic information about the context in which -// a {@link CodeActionProvider.provideCodeActions code action} is run. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionContext -type CodeActionContext struct { - // An array of diagnostics known on the client side overlapping the range provided to the - // `textDocument/codeAction` request. They are provided so that the server knows which - // errors are currently presented to the user for the given range. There is no guarantee - // that these accurately reflect the error state of the resource. The primary parameter - // to compute code actions is the provided range. - 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"` - // The reason why code actions were requested. - // - // @since 3.17.0 - TriggerKind *CodeActionTriggerKind `json:"triggerKind,omitempty"` -} - -// Captures why the code action is currently disabled. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionDisabled -type CodeActionDisabled struct { - // Human readable description of why the code action is currently disabled. - // - // This is displayed in the code actions UI. - Reason string `json:"reason"` -} - -// A set of predefined code action kinds -type CodeActionKind string - -// Documentation for a class of code actions. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionKindDocumentation -type CodeActionKindDocumentation struct { - // The kind of the code action being documented. - // - // If the kind is generic, such as `CodeActionKind.Refactor`, the documentation will be shown whenever any - // refactorings are returned. If the kind if more specific, such as `CodeActionKind.RefactorExtract`, the - // documentation will only be shown when extract refactoring code actions are returned. - Kind CodeActionKind `json:"kind"` - // Command that is ued to display the documentation to the user. - // - // The title of this documentation code action is taken from {@linkcode Command.title} - Command Command `json:"command"` -} - -// Provider options for a {@link CodeActionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionOptions -type CodeActionOptions struct { - // CodeActionKinds that this server may return. - // - // The list of kinds may be generic, such as `CodeActionKind.Refactor`, or the server - // may list out every specific kind they provide. - CodeActionKinds []CodeActionKind `json:"codeActionKinds,omitempty"` - // Static documentation for a class of code actions. - // - // Documentation from the provider should be shown in the code actions menu if either: - // - // - // - Code actions of `kind` are requested by the editor. In this case, the editor will show the documentation that - // most closely matches the requested code action kind. For example, if a provider has documentation for - // both `Refactor` and `RefactorExtract`, when the user requests code actions for `RefactorExtract`, - // the editor will use the documentation for `RefactorExtract` instead of the documentation for `Refactor`. - // - // - // - Any code actions of `kind` are returned by the provider. - // - // At most one documentation entry should be shown per provider. - // - // @since 3.18.0 - // @proposed - Documentation []CodeActionKindDocumentation `json:"documentation,omitempty"` - // The server provides support to resolve additional - // information for a code action. - // - // @since 3.16.0 - ResolveProvider bool `json:"resolveProvider,omitempty"` - WorkDoneProgressOptions -} - -// The parameters of a {@link CodeActionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionParams -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"` - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link CodeActionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeActionRegistrationOptions -type CodeActionRegistrationOptions struct { - TextDocumentRegistrationOptions - CodeActionOptions -} - -// The reason why code actions were requested. -// -// @since 3.17.0 -type CodeActionTriggerKind uint32 - -// Structure to capture a description for an error code. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeDescription -type CodeDescription struct { - // An URI to open with more information about the diagnostic error. - Href URI `json:"href"` -} - -// A code lens represents a {@link Command 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. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLens -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 {@link CodeLensRequest} and a {@link CodeLensResolveRequest} - Data interface{} `json:"data,omitempty"` -} - -// The client capabilities of a {@link CodeLensRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensClientCapabilities -type CodeLensClientCapabilities struct { - // Whether code lens supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // Whether the client supports resolving additional code lens - // properties via a separate `codeLens/resolve` request. - // - // @since 3.18.0 - ResolveSupport *ClientCodeLensResolveOptions `json:"resolveSupport,omitempty"` -} - -// Code Lens provider options of a {@link CodeLensRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensOptions -type CodeLensOptions struct { - // Code lens has a resolve provider as well. - ResolveProvider bool `json:"resolveProvider,omitempty"` - WorkDoneProgressOptions -} - -// The parameters of a {@link CodeLensRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensParams -type CodeLensParams struct { - // The document to request code lens for. - TextDocument TextDocumentIdentifier `json:"textDocument"` - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link CodeLensRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensRegistrationOptions -type CodeLensRegistrationOptions struct { - TextDocumentRegistrationOptions - CodeLensOptions -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#codeLensWorkspaceClientCapabilities -type CodeLensWorkspaceClientCapabilities struct { - // Whether the client implementation supports a refresh request sent from the - // server to the client. - // - // Note that this event is global and will force the client to refresh all - // code lenses currently shown. It should be used with absolute care and is - // useful for situation where a server for example detect a project wide - // change that requires such a calculation. - RefreshSupport bool `json:"refreshSupport,omitempty"` -} - -// Represents a color in RGBA space. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#color -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"` -} - -// Represents a color range from a document. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorInformation -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"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorPresentation -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 {@link TextEdit edit} which is applied to a document when selecting - // this presentation for the color. When `falsy` the {@link ColorPresentation.label label} - // is used. - TextEdit *TextEdit `json:"textEdit,omitempty"` - // An optional array of additional {@link TextEdit text edits} that are applied when - // selecting this color presentation. Edits must not overlap with the main {@link ColorPresentation.textEdit edit} nor with themselves. - AdditionalTextEdits []TextEdit `json:"additionalTextEdits,omitempty"` -} - -// Parameters for a {@link ColorPresentationRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#colorPresentationParams -type ColorPresentationParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The color to request presentations for. - Color Color `json:"color"` - // The range where the color would be inserted. Serves as a context. - Range Range `json:"range"` - WorkDoneProgressParams - PartialResultParams -} - -// Represents a reference to a command. Provides a title which -// will be used to represent a command in the UI and, optionally, -// an array of arguments which will be passed to the command handler -// function when invoked. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#command -type Command struct { - // Title of the command, like `save`. - Title string `json:"title"` - // An optional tooltip. - // - // @since 3.18.0 - // @proposed - Tooltip string `json:"tooltip,omitempty"` - // The identifier of the actual command handler. - Command string `json:"command"` - // Arguments that the command handler should be - // invoked with. - Arguments []json.RawMessage `json:"arguments,omitempty"` -} - -// Completion client capabilities -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionClientCapabilities -type CompletionClientCapabilities struct { - // Whether completion supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client supports the following `CompletionItem` specific - // capabilities. - CompletionItem ClientCompletionItemOptions `json:"completionItem,omitempty"` - CompletionItemKind *ClientCompletionItemOptionsKind `json:"completionItemKind,omitempty"` - // Defines how the client handles whitespace and indentation - // when accepting a completion item that uses multi line - // text in either `insertText` or `textEdit`. - // - // @since 3.17.0 - InsertTextMode InsertTextMode `json:"insertTextMode,omitempty"` - // The client supports to send additional context information for a - // `textDocument/completion` request. - ContextSupport bool `json:"contextSupport,omitempty"` - // The client supports the following `CompletionList` specific - // capabilities. - // - // @since 3.17.0 - CompletionList *CompletionListCapabilities `json:"completionList,omitempty"` -} - -// Contains additional information about the context in which a completion request is triggered. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionContext -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"` -} - -// A completion item represents a text snippet that is -// proposed to complete text that is being typed. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItem -type CompletionItem struct { - // The label of this completion item. - // - // The label property is also by default the text that - // is inserted when selecting this completion. - // - // If label details are provided the label itself should - // be an unqualified name of the completion item. - Label string `json:"label"` - // Additional details for the label - // - // @since 3.17.0 - LabelDetails *CompletionItemLabelDetails `json:"labelDetails,omitempty"` - // The kind of this completion item. Based of the kind - // an icon is chosen by the editor. - Kind CompletionItemKind `json:"kind,omitempty"` - // Tags for this completion item. - // - // @since 3.15.0 - Tags []CompletionItemTag `json:"tags,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 *Or_CompletionItem_documentation `json:"documentation,omitempty"` - // Indicates if this item is deprecated. - // @deprecated Use `tags` instead. - 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 {@link CompletionItem.label label} - // is used. - SortText string `json:"sortText,omitempty"` - // A string that should be used when filtering a set of - // completion items. When `falsy` the {@link CompletionItem.label label} - // is used. - FilterText string `json:"filterText,omitempty"` - // A string that should be inserted into a document when selecting - // this completion. When `falsy` the {@link CompletionItem.label 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. - 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`. If omitted defaults to `InsertTextFormat.PlainText`. - // - // Please note that the insertTextFormat doesn't apply to - // `additionalTextEdits`. - InsertTextFormat *InsertTextFormat `json:"insertTextFormat,omitempty"` - // How whitespace and indentation is handled during completion - // item insertion. If not provided the clients default value depends on - // the `textDocument.completion.insertTextMode` client capability. - // - // @since 3.16.0 - InsertTextMode *InsertTextMode `json:"insertTextMode,omitempty"` - // An {@link TextEdit edit} which is applied to a document when selecting - // this completion. When an edit is provided the value of - // {@link CompletionItem.insertText insertText} is ignored. - // - // Most editors support two different operations when accepting a completion - // item. One is to insert a completion text and the other is to replace an - // existing text with a completion text. Since this can usually not be - // predetermined by a server it can report both ranges. Clients need to - // signal support for `InsertReplaceEdits` via the - // `textDocument.completion.insertReplaceSupport` client capability - // property. - // - // *Note 1:* The text edit's range as well as both ranges from an insert - // replace edit must be a [single line] and they must contain the position - // at which completion has been requested. - // *Note 2:* If an `InsertReplaceEdit` is returned the edit's insert range - // must be a prefix of the edit's replace range, that means it must be - // contained and starting at the same position. - // - // @since 3.16.0 additional type `InsertReplaceEdit` - TextEdit *Or_CompletionItem_textEdit `json:"textEdit,omitempty"` - // The edit text used if the completion item is part of a CompletionList and - // CompletionList defines an item default for the text edit range. - // - // Clients will only honor this property if they opt into completion list - // item defaults using the capability `completionList.itemDefaults`. - // - // If not provided and a list's default range is provided the label - // property is used as a text. - // - // @since 3.17.0 - TextEditText string `json:"textEditText,omitempty"` - // An optional array of additional {@link TextEdit text edits} that are applied when - // selecting this completion. Edits must not overlap (including the same insert position) - // with the main {@link CompletionItem.textEdit 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 {@link Command command} that is executed *after* inserting this completion. *Note* that - // additional modifications to the current document should be described with the - // {@link CompletionItem.additionalTextEdits additionalTextEdits}-property. - Command *Command `json:"command,omitempty"` - // A data entry field that is preserved on a completion item between a - // {@link CompletionRequest} and a {@link CompletionResolveRequest}. - Data interface{} `json:"data,omitempty"` -} - -// In many cases the items of an actual completion result share the same -// value for properties like `commitCharacters` or the range of a text -// edit. A completion list can therefore define item defaults which will -// be used if a completion item itself doesn't specify the value. -// -// If a completion list specifies a default value and a completion item -// also specifies a corresponding value the one from the item is used. -// -// Servers are only allowed to return default values if the client -// signals support for this via the `completionList.itemDefaults` -// capability. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemDefaults -type CompletionItemDefaults struct { - // A default commit character set. - // - // @since 3.17.0 - CommitCharacters []string `json:"commitCharacters,omitempty"` - // A default edit range. - // - // @since 3.17.0 - EditRange *Or_CompletionItemDefaults_editRange `json:"editRange,omitempty"` - // A default insert text format. - // - // @since 3.17.0 - InsertTextFormat *InsertTextFormat `json:"insertTextFormat,omitempty"` - // A default insert text mode. - // - // @since 3.17.0 - InsertTextMode *InsertTextMode `json:"insertTextMode,omitempty"` - // A default data value. - // - // @since 3.17.0 - Data interface{} `json:"data,omitempty"` -} - -// The kind of a completion entry. -type CompletionItemKind uint32 - -// Additional details for a completion item label. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemLabelDetails -type CompletionItemLabelDetails struct { - // An optional string which is rendered less prominently directly after {@link CompletionItem.label label}, - // without any spacing. Should be used for function signatures and type annotations. - Detail string `json:"detail,omitempty"` - // An optional string which is rendered less prominently after {@link CompletionItem.detail}. Should be used - // for fully qualified names and file paths. - Description string `json:"description,omitempty"` -} - -// Completion item tags are extra annotations that tweak the rendering of a completion -// item. -// -// @since 3.15.0 -type CompletionItemTag uint32 - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionItemTagOptions -type CompletionItemTagOptions struct { - // The tags supported by the client. - ValueSet []CompletionItemTag `json:"valueSet"` -} - -// Represents a collection of {@link CompletionItem completion items} to be presented -// in the editor. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionList -type CompletionList struct { - // This list it not complete. Further typing results in recomputing this list. - // - // Recomputed lists have all their items replaced (not appended) in the - // incomplete completion sessions. - IsIncomplete bool `json:"isIncomplete"` - // In many cases the items of an actual completion result share the same - // value for properties like `commitCharacters` or the range of a text - // edit. A completion list can therefore define item defaults which will - // be used if a completion item itself doesn't specify the value. - // - // If a completion list specifies a default value and a completion item - // also specifies a corresponding value the one from the item is used. - // - // Servers are only allowed to return default values if the client - // signals support for this via the `completionList.itemDefaults` - // capability. - // - // @since 3.17.0 - ItemDefaults *CompletionItemDefaults `json:"itemDefaults,omitempty"` - // The completion items. - Items []CompletionItem `json:"items"` -} - -// The client supports the following `CompletionList` specific -// capabilities. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionListCapabilities -type CompletionListCapabilities struct { - // The client supports the following itemDefaults on - // a completion list. - // - // The value lists the supported property names of the - // `CompletionList.itemDefaults` object. If omitted - // no properties are supported. - // - // @since 3.17.0 - ItemDefaults []string `json:"itemDefaults,omitempty"` -} - -// Completion options. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionOptions -type CompletionOptions struct { - // 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 list of all possible characters that commit a completion. This field can be used - // if clients don't support individual commit characters per completion item. See - // `ClientCapabilities.textDocument.completion.completionItem.commitCharactersSupport` - // - // If a server provides both `allCommitCharacters` and commit characters on an individual - // completion item the ones on the completion item win. - // - // @since 3.2.0 - AllCommitCharacters []string `json:"allCommitCharacters,omitempty"` - // The server provides support to resolve additional - // information for a completion item. - ResolveProvider bool `json:"resolveProvider,omitempty"` - // The server supports the following `CompletionItem` specific - // capabilities. - // - // @since 3.17.0 - CompletionItem *ServerCompletionItemOptions `json:"completionItem,omitempty"` - WorkDoneProgressOptions -} - -// Completion parameters -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionParams -type CompletionParams struct { - // The completion context. This is only available it the client specifies - // to send this using the client capability `textDocument.completion.contextSupport === true` - Context CompletionContext `json:"context,omitempty"` - TextDocumentPositionParams - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link CompletionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#completionRegistrationOptions -type CompletionRegistrationOptions struct { - TextDocumentRegistrationOptions - CompletionOptions -} - -// How a completion was triggered -type CompletionTriggerKind uint32 - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationItem -type ConfigurationItem struct { - // The scope to get the configuration section for. - ScopeURI *URI `json:"scopeUri,omitempty"` - // The configuration section asked for. - Section string `json:"section,omitempty"` -} - -// The parameters of a configuration request. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationParams -type ConfigurationParams struct { - Items []ConfigurationItem `json:"items"` -} - -// Create file operation. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFile -type CreateFile struct { - // A create - Kind string `json:"kind"` - // The resource to create. - URI DocumentUri `json:"uri"` - // Additional options - Options *CreateFileOptions `json:"options,omitempty"` - ResourceOperation -} - -// Options to create a file. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFileOptions -type CreateFileOptions struct { - // Overwrite existing file. Overwrite wins over `ignoreIfExists` - Overwrite bool `json:"overwrite,omitempty"` - // Ignore if exists. - IgnoreIfExists bool `json:"ignoreIfExists,omitempty"` -} - -// The parameters sent in notifications/requests for user-initiated creation of -// files. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#createFilesParams -type CreateFilesParams struct { - // An array of all files/folders created in this operation. - Files []FileCreate `json:"files"` -} - -// The declaration of a symbol representation as one or many {@link Location locations}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declaration -type Declaration = Or_Declaration // (alias) -// @since 3.14.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationClientCapabilities -type DeclarationClientCapabilities struct { - // Whether declaration supports dynamic registration. If this is set to `true` - // the client supports the new `DeclarationRegistrationOptions` return value - // for the corresponding server capability as well. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client supports additional metadata in the form of declaration links. - LinkSupport bool `json:"linkSupport,omitempty"` -} - -// Information about where a symbol is declared. -// -// Provides additional metadata over normal {@link Location location} declarations, including the range of -// the declaring symbol. -// -// Servers should prefer returning `DeclarationLink` over `Declaration` if supported -// by the client. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationLink -type DeclarationLink = LocationLink // (alias) -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationOptions -type DeclarationOptions struct { - WorkDoneProgressOptions -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationParams -type DeclarationParams struct { - TextDocumentPositionParams - WorkDoneProgressParams - PartialResultParams -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#declarationRegistrationOptions -type DeclarationRegistrationOptions struct { - DeclarationOptions - TextDocumentRegistrationOptions - StaticRegistrationOptions -} - -// The definition of a symbol represented as one or many {@link Location locations}. -// For most programming languages there is only one location at which a symbol is -// defined. -// -// Servers should prefer returning `DefinitionLink` over `Definition` if supported -// by the client. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definition -type Definition = Or_Definition // (alias) -// Client Capabilities for a {@link DefinitionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionClientCapabilities -type DefinitionClientCapabilities struct { - // Whether definition supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client supports additional metadata in the form of definition links. - // - // @since 3.14.0 - LinkSupport bool `json:"linkSupport,omitempty"` -} - -// Information about where a symbol is defined. -// -// Provides additional metadata over normal {@link Location location} definitions, including the range of -// the defining symbol -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionLink -type DefinitionLink = LocationLink // (alias) -// Server Capabilities for a {@link DefinitionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionOptions -type DefinitionOptions struct { - WorkDoneProgressOptions -} - -// Parameters for a {@link DefinitionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionParams -type DefinitionParams struct { - TextDocumentPositionParams - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link DefinitionRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#definitionRegistrationOptions -type DefinitionRegistrationOptions struct { - TextDocumentRegistrationOptions - DefinitionOptions -} - -// Delete file operation -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFile -type DeleteFile struct { - // A delete - Kind string `json:"kind"` - // The file to delete. - URI DocumentUri `json:"uri"` - // Delete options. - Options *DeleteFileOptions `json:"options,omitempty"` - ResourceOperation -} - -// Delete file options -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFileOptions -type DeleteFileOptions struct { - // Delete the content recursively if a folder is denoted. - Recursive bool `json:"recursive,omitempty"` - // Ignore the operation if the file doesn't exist. - IgnoreIfNotExists bool `json:"ignoreIfNotExists,omitempty"` -} - -// The parameters sent in notifications/requests for user-initiated deletes of -// files. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#deleteFilesParams -type DeleteFilesParams struct { - // An array of all files/folders deleted in this operation. - Files []FileDelete `json:"files"` -} - -// Represents a diagnostic, such as a compiler error or warning. Diagnostic objects -// are only valid in the scope of a resource. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnostic -type Diagnostic struct { - // The range at which the message applies - Range Range `json:"range"` - // The diagnostic's severity. To avoid interpretation mismatches when a - // server is used with different clients it is highly recommended that servers - // always provide a severity value. - Severity DiagnosticSeverity `json:"severity,omitempty"` - // The diagnostic's code, which usually appear in the user interface. - Code interface{} `json:"code,omitempty"` - // An optional property to describe the error code. - // Requires the code field (above) to be present/not null. - // - // @since 3.16.0 - CodeDescription *CodeDescription `json:"codeDescription,omitempty"` - // A human-readable string describing the source of this - // diagnostic, e.g. 'typescript' or 'super lint'. It usually - // appears in the user interface. - Source string `json:"source,omitempty"` - // The diagnostic's message. It usually appears in the user interface - Message string `json:"message"` - // Additional metadata about the diagnostic. - // - // @since 3.15.0 - Tags []DiagnosticTag `json:"tags,omitempty"` - // An array of related diagnostic information, e.g. when symbol-names within - // a scope collide all definitions can be marked via this property. - RelatedInformation []DiagnosticRelatedInformation `json:"relatedInformation,omitempty"` - // A data entry field that is preserved between a `textDocument/publishDiagnostics` - // notification and `textDocument/codeAction` request. - // - // @since 3.16.0 - Data *json.RawMessage `json:"data,omitempty"` -} - -// Client capabilities specific to diagnostic pull requests. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticClientCapabilities -type DiagnosticClientCapabilities struct { - // 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 bool `json:"dynamicRegistration,omitempty"` - // Whether the clients supports related documents for document diagnostic pulls. - RelatedDocumentSupport bool `json:"relatedDocumentSupport,omitempty"` - DiagnosticsCapabilities -} - -// Diagnostic options. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticOptions -type DiagnosticOptions struct { - // An optional identifier under which the diagnostics are - // managed by the client. - Identifier string `json:"identifier,omitempty"` - // Whether the language has inter file dependencies meaning that - // editing code in one file can result in a different diagnostic - // set in another file. Inter file dependencies are common for - // most programming languages and typically uncommon for linters. - InterFileDependencies bool `json:"interFileDependencies"` - // The server provides support for workspace diagnostics as well. - WorkspaceDiagnostics bool `json:"workspaceDiagnostics"` - WorkDoneProgressOptions -} - -// Diagnostic registration options. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticRegistrationOptions -type DiagnosticRegistrationOptions struct { - TextDocumentRegistrationOptions - DiagnosticOptions - StaticRegistrationOptions -} - -// Represents a related message and source code location for a diagnostic. This should be -// used to point to code locations that cause or related to a diagnostics, e.g when duplicating -// a symbol in a scope. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticRelatedInformation -type DiagnosticRelatedInformation struct { - // The location of this related diagnostic information. - Location Location `json:"location"` - // The message of this related diagnostic information. - Message string `json:"message"` -} - -// Cancellation data returned from a diagnostic request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticServerCancellationData -type DiagnosticServerCancellationData struct { - RetriggerRequest bool `json:"retriggerRequest"` -} - -// The diagnostic's severity. -type DiagnosticSeverity uint32 - -// The diagnostic tags. -// -// @since 3.15.0 -type DiagnosticTag uint32 - -// Workspace client capabilities specific to diagnostic pull requests. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticWorkspaceClientCapabilities -type DiagnosticWorkspaceClientCapabilities struct { - // Whether the client implementation supports a refresh request sent from - // the server to the client. - // - // Note that this event is global and will force the client to refresh all - // pulled diagnostics currently shown. It should be used with absolute care and - // is useful for situation where a server for example detects a project wide - // change that requires such a calculation. - RefreshSupport bool `json:"refreshSupport,omitempty"` -} - -// General diagnostics capabilities for pull and push model. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#diagnosticsCapabilities -type DiagnosticsCapabilities struct { - // Whether the clients accepts diagnostics with related information. - RelatedInformation bool `json:"relatedInformation,omitempty"` - // 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 *ClientDiagnosticsTagOptions `json:"tagSupport,omitempty"` - // Client supports a codeDescription property - // - // @since 3.16.0 - CodeDescriptionSupport bool `json:"codeDescriptionSupport,omitempty"` - // Whether code action supports the `data` property which is - // preserved between a `textDocument/publishDiagnostics` and - // `textDocument/codeAction` request. - // - // @since 3.16.0 - DataSupport bool `json:"dataSupport,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationClientCapabilities -type DidChangeConfigurationClientCapabilities struct { - // Did change configuration notification supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// The parameters of a change configuration notification. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationParams -type DidChangeConfigurationParams struct { - // The actual changed settings - Settings interface{} `json:"settings"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeConfigurationRegistrationOptions -type DidChangeConfigurationRegistrationOptions struct { - Section *Or_DidChangeConfigurationRegistrationOptions_section `json:"section,omitempty"` -} - -// The params sent in a change notebook document notification. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeNotebookDocumentParams -type DidChangeNotebookDocumentParams struct { - // The notebook document that did change. The version number points - // to the version after all provided changes have been applied. If - // only the text document content of a cell changes the notebook version - // doesn't necessarily have to change. - NotebookDocument VersionedNotebookDocumentIdentifier `json:"notebookDocument"` - // The actual changes to the notebook document. - // - // The changes describe single state changes to the notebook document. - // So if there are two changes c1 (at array index 0) and c2 (at array - // index 1) for a notebook in state S then c1 moves the notebook from - // S to S' and c2 from S' to S''. So c1 is computed on the state S and - // c2 is computed on the state S'. - // - // To mirror the content of a notebook using change events use the following approach: - // - // - start with the same initial content - // - apply the 'notebookDocument/didChange' notifications in the order you receive them. - // - apply the `NotebookChangeEvent`s in a single notification in the order - // you receive them. - Change NotebookDocumentChangeEvent `json:"change"` -} - -// The change text document notification's parameters. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeTextDocumentParams -type DidChangeTextDocumentParams struct { - // The document that did change. The version number points - // to the version after all provided content changes have - // been applied. - TextDocument VersionedTextDocumentIdentifier `json:"textDocument"` - // The actual content changes. The content changes describe single state changes - // to the document. So if there are two content changes c1 (at array index 0) and - // c2 (at array index 1) for a document in state S then c1 moves the document from - // S to S' and c2 from S' to S''. So c1 is computed on the state S and c2 is computed - // on the state S'. - // - // To mirror the content of a document using change events use the following approach: - // - // - start with the same initial content - // - apply the 'textDocument/didChange' notifications in the order you receive them. - // - apply the `TextDocumentContentChangeEvent`s in a single notification in the order - // you receive them. - ContentChanges []TextDocumentContentChangeEvent `json:"contentChanges"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesClientCapabilities -type DidChangeWatchedFilesClientCapabilities struct { - // 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 bool `json:"dynamicRegistration,omitempty"` - // Whether the client has support for {@link RelativePattern relative pattern} - // or not. - // - // @since 3.17.0 - RelativePatternSupport bool `json:"relativePatternSupport,omitempty"` -} - -// The watched files change notification's parameters. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesParams -type DidChangeWatchedFilesParams struct { - // The actual file events. - Changes []FileEvent `json:"changes"` -} - -// Describe options to be used when registered for text document change events. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWatchedFilesRegistrationOptions -type DidChangeWatchedFilesRegistrationOptions struct { - // The watchers to register. - Watchers []FileSystemWatcher `json:"watchers"` -} - -// The parameters of a `workspace/didChangeWorkspaceFolders` notification. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didChangeWorkspaceFoldersParams -type DidChangeWorkspaceFoldersParams struct { - // The actual workspace folder change event. - Event WorkspaceFoldersChangeEvent `json:"event"` -} - -// The params sent in a close notebook document notification. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didCloseNotebookDocumentParams -type DidCloseNotebookDocumentParams struct { - // The notebook document that got closed. - NotebookDocument NotebookDocumentIdentifier `json:"notebookDocument"` - // The text documents that represent the content - // of a notebook cell that got closed. - CellTextDocuments []TextDocumentIdentifier `json:"cellTextDocuments"` -} - -// The parameters sent in a close text document notification -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didCloseTextDocumentParams -type DidCloseTextDocumentParams struct { - // The document that was closed. - TextDocument TextDocumentIdentifier `json:"textDocument"` -} - -// The params sent in an open notebook document notification. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didOpenNotebookDocumentParams -type DidOpenNotebookDocumentParams struct { - // The notebook document that got opened. - NotebookDocument NotebookDocument `json:"notebookDocument"` - // The text documents that represent the content - // of a notebook cell. - CellTextDocuments []TextDocumentItem `json:"cellTextDocuments"` -} - -// The parameters sent in an open text document notification -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didOpenTextDocumentParams -type DidOpenTextDocumentParams struct { - // The document that was opened. - TextDocument TextDocumentItem `json:"textDocument"` -} - -// The params sent in a save notebook document notification. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didSaveNotebookDocumentParams -type DidSaveNotebookDocumentParams struct { - // The notebook document that got saved. - NotebookDocument NotebookDocumentIdentifier `json:"notebookDocument"` -} - -// The parameters sent in a save text document notification -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#didSaveTextDocumentParams -type DidSaveTextDocumentParams struct { - // The document that was saved. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // Optional the content when saved. Depends on the includeText value - // when the save notification was requested. - Text *string `json:"text,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorClientCapabilities -type DocumentColorClientCapabilities struct { - // Whether implementation supports dynamic registration. If this is set to `true` - // the client supports the new `DocumentColorRegistrationOptions` return value - // for the corresponding server capability as well. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorOptions -type DocumentColorOptions struct { - WorkDoneProgressOptions -} - -// Parameters for a {@link DocumentColorRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorParams -type DocumentColorParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - WorkDoneProgressParams - PartialResultParams -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentColorRegistrationOptions -type DocumentColorRegistrationOptions struct { - TextDocumentRegistrationOptions - DocumentColorOptions - StaticRegistrationOptions -} - -// Parameters of the document diagnostic request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticParams -type DocumentDiagnosticParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The additional identifier provided during registration. - Identifier string `json:"identifier,omitempty"` - // The result id of a previous response if provided. - PreviousResultID string `json:"previousResultId,omitempty"` - WorkDoneProgressParams - PartialResultParams -} - -// The result of a document diagnostic pull request. A report can -// either be a full report containing all diagnostics for the -// requested document or an unchanged report indicating that nothing -// has changed in terms of diagnostics in comparison to the last -// pull request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticReport -type DocumentDiagnosticReport = Or_DocumentDiagnosticReport // (alias) -// The document diagnostic report kinds. -// -// @since 3.17.0 -type DocumentDiagnosticReportKind string - -// A partial result for a document diagnostic report. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentDiagnosticReportPartialResult -type DocumentDiagnosticReportPartialResult struct { - RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments"` -} - -// A document filter describes a top level text document or -// a notebook cell document. -// -// @since 3.17.0 - proposed support for NotebookCellTextDocumentFilter. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFilter -type DocumentFilter = Or_DocumentFilter // (alias) -// Client capabilities of a {@link DocumentFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingClientCapabilities -type DocumentFormattingClientCapabilities struct { - // Whether formatting supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// Provider options for a {@link DocumentFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingOptions -type DocumentFormattingOptions struct { - WorkDoneProgressOptions -} - -// The parameters of a {@link DocumentFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingParams -type DocumentFormattingParams struct { - // The document to format. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The format options. - Options FormattingOptions `json:"options"` - WorkDoneProgressParams -} - -// Registration options for a {@link DocumentFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentFormattingRegistrationOptions -type DocumentFormattingRegistrationOptions struct { - TextDocumentRegistrationOptions - DocumentFormattingOptions -} - -// 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. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlight -type DocumentHighlight struct { - // The range this highlight applies to. - Range Range `json:"range"` - // The highlight kind, default is {@link DocumentHighlightKind.Text text}. - Kind DocumentHighlightKind `json:"kind,omitempty"` -} - -// Client Capabilities for a {@link DocumentHighlightRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightClientCapabilities -type DocumentHighlightClientCapabilities struct { - // Whether document highlight supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// A document highlight kind. -type DocumentHighlightKind uint32 - -// Provider options for a {@link DocumentHighlightRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightOptions -type DocumentHighlightOptions struct { - WorkDoneProgressOptions -} - -// Parameters for a {@link DocumentHighlightRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightParams -type DocumentHighlightParams struct { - TextDocumentPositionParams - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link DocumentHighlightRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentHighlightRegistrationOptions -type DocumentHighlightRegistrationOptions struct { - TextDocumentRegistrationOptions - DocumentHighlightOptions -} - -// 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. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLink -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 *URI `json:"target,omitempty"` - // The tooltip text when you hover over this link. - // - // If a tooltip is provided, is will be displayed in a string that includes instructions on how to - // trigger the link, such as `{0} (ctrl + click)`. The specific instructions vary depending on OS, - // user settings, and localization. - // - // @since 3.15.0 - Tooltip string `json:"tooltip,omitempty"` - // A data entry field that is preserved on a document link between a - // DocumentLinkRequest and a DocumentLinkResolveRequest. - Data interface{} `json:"data,omitempty"` -} - -// The client capabilities of a {@link DocumentLinkRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkClientCapabilities -type DocumentLinkClientCapabilities struct { - // Whether document link supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // Whether the client supports the `tooltip` property on `DocumentLink`. - // - // @since 3.15.0 - TooltipSupport bool `json:"tooltipSupport,omitempty"` -} - -// Provider options for a {@link DocumentLinkRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkOptions -type DocumentLinkOptions struct { - // Document links have a resolve provider as well. - ResolveProvider bool `json:"resolveProvider,omitempty"` - WorkDoneProgressOptions -} - -// The parameters of a {@link DocumentLinkRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkParams -type DocumentLinkParams struct { - // The document to provide document links for. - TextDocument TextDocumentIdentifier `json:"textDocument"` - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link DocumentLinkRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentLinkRegistrationOptions -type DocumentLinkRegistrationOptions struct { - TextDocumentRegistrationOptions - DocumentLinkOptions -} - -// Client capabilities of a {@link DocumentOnTypeFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingClientCapabilities -type DocumentOnTypeFormattingClientCapabilities struct { - // Whether on type formatting supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// Provider options for a {@link DocumentOnTypeFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingOptions -type DocumentOnTypeFormattingOptions struct { - // A character on which formatting should be triggered, like `{`. - FirstTriggerCharacter string `json:"firstTriggerCharacter"` - // More trigger characters. - MoreTriggerCharacter []string `json:"moreTriggerCharacter,omitempty"` -} - -// The parameters of a {@link DocumentOnTypeFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingParams -type DocumentOnTypeFormattingParams struct { - // The document to format. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The position around which the on type formatting should happen. - // This is not necessarily the exact position where the character denoted - // by the property `ch` got typed. - Position Position `json:"position"` - // The character that has been typed that triggered the formatting - // on type request. That is not necessarily the last character that - // got inserted into the document since the client could auto insert - // characters as well (e.g. like automatic brace completion). - Ch string `json:"ch"` - // The formatting options. - Options FormattingOptions `json:"options"` -} - -// Registration options for a {@link DocumentOnTypeFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentOnTypeFormattingRegistrationOptions -type DocumentOnTypeFormattingRegistrationOptions struct { - TextDocumentRegistrationOptions - DocumentOnTypeFormattingOptions -} - -// Client capabilities of a {@link DocumentRangeFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingClientCapabilities -type DocumentRangeFormattingClientCapabilities struct { - // Whether range formatting supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // Whether the client supports formatting multiple ranges at once. - // - // @since 3.18.0 - // @proposed - RangesSupport bool `json:"rangesSupport,omitempty"` -} - -// Provider options for a {@link DocumentRangeFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingOptions -type DocumentRangeFormattingOptions struct { - // Whether the server supports formatting multiple ranges at once. - // - // @since 3.18.0 - // @proposed - RangesSupport bool `json:"rangesSupport,omitempty"` - WorkDoneProgressOptions -} - -// The parameters of a {@link DocumentRangeFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingParams -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"` - WorkDoneProgressParams -} - -// Registration options for a {@link DocumentRangeFormattingRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangeFormattingRegistrationOptions -type DocumentRangeFormattingRegistrationOptions struct { - TextDocumentRegistrationOptions - DocumentRangeFormattingOptions -} - -// The parameters of a {@link DocumentRangesFormattingRequest}. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentRangesFormattingParams -type DocumentRangesFormattingParams struct { - // The document to format. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The ranges to format - Ranges []Range `json:"ranges"` - // The format options - Options FormattingOptions `json:"options"` - WorkDoneProgressParams -} - -// A document selector is the combination of one or many document filters. -// -// @sample `let sel:DocumentSelector = [{ language: 'typescript' }, { language: 'json', pattern: '**∕tsconfig.json' }]`; -// -// The use of a string as a document filter is deprecated @since 3.16.0. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSelector -type DocumentSelector = []DocumentFilter // (alias) -// 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. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbol -type DocumentSymbol struct { - // The name of this symbol. Will be displayed in the user interface and therefore must not be - // an empty string or a string only consisting of white spaces. - Name string `json:"name"` - // More detail for this symbol, e.g the signature of a function. - Detail string `json:"detail,omitempty"` - // The kind of this symbol. - Kind SymbolKind `json:"kind"` - // Tags for this document symbol. - // - // @since 3.16.0 - Tags []SymbolTag `json:"tags,omitempty"` - // Indicates if this symbol is deprecated. - // - // @deprecated Use tags instead - 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"` -} - -// Client Capabilities for a {@link DocumentSymbolRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolClientCapabilities -type DocumentSymbolClientCapabilities struct { - // Whether document symbol supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // Specific capabilities for the `SymbolKind` in the - // `textDocument/documentSymbol` request. - SymbolKind *ClientSymbolKindOptions `json:"symbolKind,omitempty"` - // The client supports hierarchical document symbols. - HierarchicalDocumentSymbolSupport bool `json:"hierarchicalDocumentSymbolSupport,omitempty"` - // The client supports tags on `SymbolInformation`. Tags are supported on - // `DocumentSymbol` if `hierarchicalDocumentSymbolSupport` is set to true. - // Clients supporting tags have to handle unknown tags gracefully. - // - // @since 3.16.0 - TagSupport *ClientSymbolTagOptions `json:"tagSupport,omitempty"` - // The client supports an additional label presented in the UI when - // registering a document symbol provider. - // - // @since 3.16.0 - LabelSupport bool `json:"labelSupport,omitempty"` -} - -// Provider options for a {@link DocumentSymbolRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolOptions -type DocumentSymbolOptions struct { - // A human-readable string that is shown when multiple outlines trees - // are shown for the same document. - // - // @since 3.16.0 - Label string `json:"label,omitempty"` - WorkDoneProgressOptions -} - -// Parameters for a {@link DocumentSymbolRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolParams -type DocumentSymbolParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link DocumentSymbolRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#documentSymbolRegistrationOptions -type DocumentSymbolRegistrationOptions struct { - TextDocumentRegistrationOptions - DocumentSymbolOptions -} - -// Edit range variant that includes ranges for insert and replace operations. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#editRangeWithInsertReplace -type EditRangeWithInsertReplace struct { - Insert Range `json:"insert"` - Replace Range `json:"replace"` -} - -// Predefined error codes. -type ErrorCodes int32 - -// The client capabilities of a {@link ExecuteCommandRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandClientCapabilities -type ExecuteCommandClientCapabilities struct { - // Execute command supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// The server capabilities of a {@link ExecuteCommandRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandOptions -type ExecuteCommandOptions struct { - // The commands to be executed on the server - Commands []string `json:"commands"` - WorkDoneProgressOptions -} - -// The parameters of a {@link ExecuteCommandRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandParams -type ExecuteCommandParams struct { - // The identifier of the actual command handler. - Command string `json:"command"` - // Arguments that the command should be invoked with. - Arguments []json.RawMessage `json:"arguments,omitempty"` - WorkDoneProgressParams -} - -// Registration options for a {@link ExecuteCommandRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executeCommandRegistrationOptions -type ExecuteCommandRegistrationOptions struct { - ExecuteCommandOptions -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#executionSummary -type ExecutionSummary struct { - // A strict monotonically increasing value - // indicating the execution order of a cell - // inside a notebook. - ExecutionOrder uint32 `json:"executionOrder"` - // Whether the execution was successful or - // not if known by the client. - Success bool `json:"success,omitempty"` -} -type FailureHandlingKind string - -// The file event type -type FileChangeType uint32 - -// Represents information on a file/folder create. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileCreate -type FileCreate struct { - // A file:// URI for the location of the file/folder being created. - URI string `json:"uri"` -} - -// Represents information on a file/folder delete. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileDelete -type FileDelete struct { - // A file:// URI for the location of the file/folder being deleted. - URI string `json:"uri"` -} - -// An event describing a file change. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileEvent -type FileEvent struct { - // The file's uri. - URI DocumentUri `json:"uri"` - // The change type. - Type FileChangeType `json:"type"` -} - -// Capabilities relating to events from file operations by the user in the client. -// -// These events do not come from the file system, they come from user operations -// like renaming a file in the UI. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationClientCapabilities -type FileOperationClientCapabilities struct { - // Whether the client supports dynamic registration for file requests/notifications. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client has support for sending didCreateFiles notifications. - DidCreate bool `json:"didCreate,omitempty"` - // The client has support for sending willCreateFiles requests. - WillCreate bool `json:"willCreate,omitempty"` - // The client has support for sending didRenameFiles notifications. - DidRename bool `json:"didRename,omitempty"` - // The client has support for sending willRenameFiles requests. - WillRename bool `json:"willRename,omitempty"` - // The client has support for sending didDeleteFiles notifications. - DidDelete bool `json:"didDelete,omitempty"` - // The client has support for sending willDeleteFiles requests. - WillDelete bool `json:"willDelete,omitempty"` -} - -// A filter to describe in which file operation requests or notifications -// the server is interested in receiving. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationFilter -type FileOperationFilter struct { - // A Uri scheme like `file` or `untitled`. - Scheme string `json:"scheme,omitempty"` - // The actual file operation pattern. - Pattern FileOperationPattern `json:"pattern"` -} - -// Options for notifications/requests for user operations on files. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationOptions -type FileOperationOptions struct { - // The server is interested in receiving didCreateFiles notifications. - DidCreate *FileOperationRegistrationOptions `json:"didCreate,omitempty"` - // The server is interested in receiving willCreateFiles requests. - WillCreate *FileOperationRegistrationOptions `json:"willCreate,omitempty"` - // The server is interested in receiving didRenameFiles notifications. - DidRename *FileOperationRegistrationOptions `json:"didRename,omitempty"` - // The server is interested in receiving willRenameFiles requests. - WillRename *FileOperationRegistrationOptions `json:"willRename,omitempty"` - // The server is interested in receiving didDeleteFiles file notifications. - DidDelete *FileOperationRegistrationOptions `json:"didDelete,omitempty"` - // The server is interested in receiving willDeleteFiles file requests. - WillDelete *FileOperationRegistrationOptions `json:"willDelete,omitempty"` -} - -// A pattern to describe in which file operation requests or notifications -// the server is interested in receiving. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationPattern -type FileOperationPattern struct { - // The glob pattern to match. Glob patterns can have the following syntax: - // - // - `*` to match one or more characters in a path segment - // - `?` to match on one character in a path segment - // - `**` to match any number of path segments, including none - // - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}` matches all TypeScript and JavaScript files) - // - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) - // - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) - Glob string `json:"glob"` - // Whether to match files or folders with this pattern. - // - // Matches both if undefined. - Matches *FileOperationPatternKind `json:"matches,omitempty"` - // Additional options used during matching. - Options *FileOperationPatternOptions `json:"options,omitempty"` -} - -// A pattern kind describing if a glob pattern matches a file a folder or -// both. -// -// @since 3.16.0 -type FileOperationPatternKind string - -// Matching options for the file operation pattern. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationPatternOptions -type FileOperationPatternOptions struct { - // The pattern should be matched ignoring casing. - IgnoreCase bool `json:"ignoreCase,omitempty"` -} - -// The options to register for file operations. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileOperationRegistrationOptions -type FileOperationRegistrationOptions struct { - // The actual filters. - Filters []FileOperationFilter `json:"filters"` -} - -// Represents information on a file/folder rename. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileRename -type FileRename struct { - // A file:// URI for the original location of the file/folder being renamed. - OldURI string `json:"oldUri"` - // A file:// URI for the new location of the file/folder being renamed. - NewURI string `json:"newUri"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fileSystemWatcher -type FileSystemWatcher struct { - // The glob pattern to watch. See {@link GlobPattern glob pattern} for more detail. - // - // @since 3.17.0 support for relative patterns. - GlobPattern GlobPattern `json:"globPattern"` - // The kind of events of interest. If omitted it defaults - // to WatchKind.Create | WatchKind.Change | WatchKind.Delete - // which is 7. - Kind *WatchKind `json:"kind,omitempty"` -} - -// Represents a folding range. To be valid, start and end line must be bigger than zero and smaller -// than the number of lines in the document. Clients are free to ignore invalid ranges. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRange -type FoldingRange struct { - // The zero-based start line of the range to fold. The folded area starts after the line's last character. - // To be valid, the end must be zero or larger and smaller than the number of lines in the document. - StartLine uint32 `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 uint32 `json:"startCharacter,omitempty"` - // The zero-based end line of the range to fold. The folded area ends with the line's last character. - // To be valid, the end must be zero or larger and smaller than the number of lines in the document. - EndLine uint32 `json:"endLine"` - // The zero-based character offset before the folded range ends. If not defined, defaults to the length of the end line. - EndCharacter uint32 `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 {@link FoldingRangeKind} for an enumeration of standardized kinds. - Kind string `json:"kind,omitempty"` - // The text that the client should show when the specified range is - // collapsed. If not defined or not supported by the client, a default - // will be chosen by the client. - // - // @since 3.17.0 - CollapsedText string `json:"collapsedText,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeClientCapabilities -type FoldingRangeClientCapabilities struct { - // Whether implementation supports dynamic registration for folding range - // providers. If this is set to `true` the client supports the new - // `FoldingRangeRegistrationOptions` return value for the corresponding - // server capability as well. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // 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 uint32 `json:"rangeLimit,omitempty"` - // 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 bool `json:"lineFoldingOnly,omitempty"` - // Specific options for the folding range kind. - // - // @since 3.17.0 - FoldingRangeKind *ClientFoldingRangeKindOptions `json:"foldingRangeKind,omitempty"` - // Specific options for the folding range. - // - // @since 3.17.0 - FoldingRange *ClientFoldingRangeOptions `json:"foldingRange,omitempty"` -} - -// A set of predefined range kinds. -type FoldingRangeKind string - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeOptions -type FoldingRangeOptions struct { - WorkDoneProgressOptions -} - -// Parameters for a {@link FoldingRangeRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeParams -type FoldingRangeParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - WorkDoneProgressParams - PartialResultParams -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeRegistrationOptions -type FoldingRangeRegistrationOptions struct { - TextDocumentRegistrationOptions - FoldingRangeOptions - StaticRegistrationOptions -} - -// Client workspace capabilities specific to folding ranges -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#foldingRangeWorkspaceClientCapabilities -type FoldingRangeWorkspaceClientCapabilities struct { - // Whether the client implementation supports a refresh request sent from the - // server to the client. - // - // Note that this event is global and will force the client to refresh all - // folding ranges currently shown. It should be used with absolute care and is - // useful for situation where a server for example detects a project wide - // change that requires such a calculation. - // - // @since 3.18.0 - // @proposed - RefreshSupport bool `json:"refreshSupport,omitempty"` -} - -// Value-object describing what options formatting should use. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#formattingOptions -type FormattingOptions struct { - // Size of a tab in spaces. - TabSize uint32 `json:"tabSize"` - // Prefer spaces over tabs. - InsertSpaces bool `json:"insertSpaces"` - // Trim trailing whitespace on a line. - // - // @since 3.15.0 - TrimTrailingWhitespace bool `json:"trimTrailingWhitespace,omitempty"` - // Insert a newline character at the end of the file if one does not exist. - // - // @since 3.15.0 - InsertFinalNewline bool `json:"insertFinalNewline,omitempty"` - // Trim all newlines after the final newline at the end of the file. - // - // @since 3.15.0 - TrimFinalNewlines bool `json:"trimFinalNewlines,omitempty"` -} - -// A diagnostic report with a full set of problems. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#fullDocumentDiagnosticReport -type FullDocumentDiagnosticReport struct { - // A full document diagnostic report. - Kind string `json:"kind"` - // An optional result id. If provided it will - // be sent on the next diagnostic request for the - // same document. - ResultID string `json:"resultId,omitempty"` - // The actual items. - Items []Diagnostic `json:"items"` -} - -// General client capabilities. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#generalClientCapabilities -type GeneralClientCapabilities struct { - // Client capability that signals how the client - // handles stale requests (e.g. a request - // for which the client will not process the response - // anymore since the information is outdated). - // - // @since 3.17.0 - StaleRequestSupport *StaleRequestSupportOptions `json:"staleRequestSupport,omitempty"` - // Client capabilities specific to regular expressions. - // - // @since 3.16.0 - RegularExpressions *RegularExpressionsClientCapabilities `json:"regularExpressions,omitempty"` - // Client capabilities specific to the client's markdown parser. - // - // @since 3.16.0 - Markdown *MarkdownClientCapabilities `json:"markdown,omitempty"` - // The position encodings supported by the client. Client and server - // have to agree on the same position encoding to ensure that offsets - // (e.g. character position in a line) are interpreted the same on both - // sides. - // - // To keep the protocol backwards compatible the following applies: if - // the value 'utf-16' is missing from the array of position encodings - // servers can assume that the client supports UTF-16. UTF-16 is - // therefore a mandatory encoding. - // - // If omitted it defaults to ['utf-16']. - // - // Implementation considerations: since the conversion from one encoding - // into another requires the content of the file / line the conversion - // is best done where the file is read which is usually on the server - // side. - // - // @since 3.17.0 - PositionEncodings []PositionEncodingKind `json:"positionEncodings,omitempty"` -} - -// The glob pattern. Either a string pattern or a relative pattern. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#globPattern -type GlobPattern = Or_GlobPattern // (alias) -// The result of a hover request. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hover -type Hover struct { - // The hover's content - Contents MarkupContent `json:"contents"` - // An optional range inside the text document that is used to - // visualize the hover, e.g. by changing the background color. - Range Range `json:"range,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverClientCapabilities -type HoverClientCapabilities struct { - // Whether hover supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // Client supports the following content formats for the content - // property. The order describes the preferred format of the client. - ContentFormat []MarkupKind `json:"contentFormat,omitempty"` -} - -// Hover options. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverOptions -type HoverOptions struct { - WorkDoneProgressOptions -} - -// Parameters for a {@link HoverRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverParams -type HoverParams struct { - TextDocumentPositionParams - WorkDoneProgressParams -} - -// Registration options for a {@link HoverRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#hoverRegistrationOptions -type HoverRegistrationOptions struct { - TextDocumentRegistrationOptions - HoverOptions -} - -// @since 3.6.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationClientCapabilities -type ImplementationClientCapabilities struct { - // Whether implementation supports dynamic registration. If this is set to `true` - // the client supports the new `ImplementationRegistrationOptions` return value - // for the corresponding server capability as well. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client supports additional metadata in the form of definition links. - // - // @since 3.14.0 - LinkSupport bool `json:"linkSupport,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationOptions -type ImplementationOptions struct { - WorkDoneProgressOptions -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationParams -type ImplementationParams struct { - TextDocumentPositionParams - WorkDoneProgressParams - PartialResultParams -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#implementationRegistrationOptions -type ImplementationRegistrationOptions struct { - TextDocumentRegistrationOptions - ImplementationOptions - StaticRegistrationOptions -} - -// The data type of the ResponseError if the -// initialize request fails. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeError -type InitializeError struct { - // Indicates whether the client execute the following retry logic: - // (1) show the message provided by the ResponseError to the user - // (2) user selects retry or cancel - // (3) if user selected retry the initialize method is sent again. - Retry bool `json:"retry"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeParams -type InitializeParams struct { - XInitializeParams - WorkspaceFoldersInitializeParams -} - -// The result returned from an initialize request. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeResult -type InitializeResult struct { - // The capabilities the language server provides. - Capabilities ServerCapabilities `json:"capabilities"` - // Information about the server. - // - // @since 3.15.0 - ServerInfo *ServerInfo `json:"serverInfo,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializedParams -type InitializedParams struct { -} - -// Inlay hint information. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHint -type InlayHint struct { - // The position of this hint. - // - // If multiple hints have the same position, they will be shown in the order - // they appear in the response. - Position Position `json:"position"` - // The label of this hint. A human readable string or an array of - // InlayHintLabelPart label parts. - // - // *Note* that neither the string nor the label part can be empty. - Label []InlayHintLabelPart `json:"label"` - // The kind of this hint. Can be omitted in which case the client - // should fall back to a reasonable default. - Kind InlayHintKind `json:"kind,omitempty"` - // Optional text edits that are performed when accepting this inlay hint. - // - // *Note* that edits are expected to change the document so that the inlay - // hint (or its nearest variant) is now part of the document and the inlay - // hint itself is now obsolete. - TextEdits []TextEdit `json:"textEdits,omitempty"` - // The tooltip text when you hover over this item. - Tooltip *Or_InlayHint_tooltip `json:"tooltip,omitempty"` - // Render padding before the hint. - // - // Note: Padding should use the editor's background color, not the - // background color of the hint itself. That means padding can be used - // to visually align/separate an inlay hint. - PaddingLeft bool `json:"paddingLeft,omitempty"` - // Render padding after the hint. - // - // Note: Padding should use the editor's background color, not the - // background color of the hint itself. That means padding can be used - // to visually align/separate an inlay hint. - PaddingRight bool `json:"paddingRight,omitempty"` - // A data entry field that is preserved on an inlay hint between - // a `textDocument/inlayHint` and a `inlayHint/resolve` request. - Data interface{} `json:"data,omitempty"` -} - -// Inlay hint client capabilities. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintClientCapabilities -type InlayHintClientCapabilities struct { - // Whether inlay hints support dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // Indicates which properties a client can resolve lazily on an inlay - // hint. - ResolveSupport *ClientInlayHintResolveOptions `json:"resolveSupport,omitempty"` -} - -// Inlay hint kinds. -// -// @since 3.17.0 -type InlayHintKind uint32 - -// An inlay hint label part allows for interactive and composite labels -// of inlay hints. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintLabelPart -type InlayHintLabelPart struct { - // The value of this label part. - Value string `json:"value"` - // The tooltip text when you hover over this label part. Depending on - // the client capability `inlayHint.resolveSupport` clients might resolve - // this property late using the resolve request. - Tooltip *Or_InlayHintLabelPart_tooltip `json:"tooltip,omitempty"` - // An optional source code location that represents this - // label part. - // - // The editor will use this location for the hover and for code navigation - // features: This part will become a clickable link that resolves to the - // definition of the symbol at the given location (not necessarily the - // location itself), it shows the hover that shows at the given location, - // and it shows a context menu with further code navigation commands. - // - // Depending on the client capability `inlayHint.resolveSupport` clients - // might resolve this property late using the resolve request. - Location *Location `json:"location,omitempty"` - // An optional command for this label part. - // - // Depending on the client capability `inlayHint.resolveSupport` clients - // might resolve this property late using the resolve request. - Command *Command `json:"command,omitempty"` -} - -// Inlay hint options used during static registration. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintOptions -type InlayHintOptions struct { - // The server provides support to resolve additional - // information for an inlay hint item. - ResolveProvider bool `json:"resolveProvider,omitempty"` - WorkDoneProgressOptions -} - -// A parameter literal used in inlay hint requests. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintParams -type InlayHintParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The document range for which inlay hints should be computed. - Range Range `json:"range"` - WorkDoneProgressParams -} - -// Inlay hint options used during static or dynamic registration. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintRegistrationOptions -type InlayHintRegistrationOptions struct { - InlayHintOptions - TextDocumentRegistrationOptions - StaticRegistrationOptions -} - -// Client workspace capabilities specific to inlay hints. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlayHintWorkspaceClientCapabilities -type InlayHintWorkspaceClientCapabilities struct { - // Whether the client implementation supports a refresh request sent from - // the server to the client. - // - // Note that this event is global and will force the client to refresh all - // inlay hints currently shown. It should be used with absolute care and - // is useful for situation where a server for example detects a project wide - // change that requires such a calculation. - RefreshSupport bool `json:"refreshSupport,omitempty"` -} - -// Client capabilities specific to inline completions. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionClientCapabilities -type InlineCompletionClientCapabilities struct { - // Whether implementation supports dynamic registration for inline completion providers. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// Provides information about the context in which an inline completion was requested. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionContext -type InlineCompletionContext struct { - // Describes how the inline completion was triggered. - TriggerKind InlineCompletionTriggerKind `json:"triggerKind"` - // Provides information about the currently selected item in the autocomplete widget if it is visible. - SelectedCompletionInfo *SelectedCompletionInfo `json:"selectedCompletionInfo,omitempty"` -} - -// An inline completion item represents a text snippet that is proposed inline to complete text that is being typed. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionItem -type InlineCompletionItem struct { - // The text to replace the range with. Must be set. - InsertText Or_InlineCompletionItem_insertText `json:"insertText"` - // A text that is used to decide if this inline completion should be shown. When `falsy` the {@link InlineCompletionItem.insertText} is used. - FilterText string `json:"filterText,omitempty"` - // The range to replace. Must begin and end on the same line. - Range *Range `json:"range,omitempty"` - // An optional {@link Command} that is executed *after* inserting this completion. - Command *Command `json:"command,omitempty"` -} - -// Represents a collection of {@link InlineCompletionItem inline completion items} to be presented in the editor. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionList -type InlineCompletionList struct { - // The inline completion items - Items []InlineCompletionItem `json:"items"` -} - -// Inline completion options used during static registration. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionOptions -type InlineCompletionOptions struct { - WorkDoneProgressOptions -} - -// A parameter literal used in inline completion requests. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionParams -type InlineCompletionParams struct { - // Additional information about the context in which inline completions were - // requested. - Context InlineCompletionContext `json:"context"` - TextDocumentPositionParams - WorkDoneProgressParams -} - -// Inline completion options used during static or dynamic registration. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineCompletionRegistrationOptions -type InlineCompletionRegistrationOptions struct { - InlineCompletionOptions - TextDocumentRegistrationOptions - StaticRegistrationOptions -} - -// Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered. -// -// @since 3.18.0 -// @proposed -type InlineCompletionTriggerKind uint32 - -// Inline value information can be provided by different means: -// -// - directly as a text value (class InlineValueText). -// - as a name to use for a variable lookup (class InlineValueVariableLookup) -// - as an evaluatable expression (class InlineValueEvaluatableExpression) -// -// The InlineValue types combines all inline value types into one type. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValue -type InlineValue = Or_InlineValue // (alias) -// Client capabilities specific to inline values. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueClientCapabilities -type InlineValueClientCapabilities struct { - // Whether implementation supports dynamic registration for inline value providers. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueContext -type InlineValueContext struct { - // The stack frame (as a DAP Id) where the execution has stopped. - FrameID int32 `json:"frameId"` - // The document range where execution has stopped. - // Typically the end position of the range denotes the line where the inline values are shown. - StoppedLocation Range `json:"stoppedLocation"` -} - -// Provide an inline value through an expression evaluation. -// If only a range is specified, the expression will be extracted from the underlying document. -// An optional expression can be used to override the extracted expression. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueEvaluatableExpression -type InlineValueEvaluatableExpression struct { - // The document range for which the inline value applies. - // The range is used to extract the evaluatable expression from the underlying document. - Range Range `json:"range"` - // If specified the expression overrides the extracted expression. - Expression string `json:"expression,omitempty"` -} - -// Inline value options used during static registration. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueOptions -type InlineValueOptions struct { - WorkDoneProgressOptions -} - -// A parameter literal used in inline value requests. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueParams -type InlineValueParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The document range for which inline values should be computed. - Range Range `json:"range"` - // Additional information about the context in which inline values were - // requested. - Context InlineValueContext `json:"context"` - WorkDoneProgressParams -} - -// Inline value options used during static or dynamic registration. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueRegistrationOptions -type InlineValueRegistrationOptions struct { - InlineValueOptions - TextDocumentRegistrationOptions - StaticRegistrationOptions -} - -// Provide inline value as text. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueText -type InlineValueText struct { - // The document range for which the inline value applies. - Range Range `json:"range"` - // The text of the inline value. - Text string `json:"text"` -} - -// Provide inline value through a variable lookup. -// If only a range is specified, the variable name will be extracted from the underlying document. -// An optional variable name can be used to override the extracted name. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueVariableLookup -type InlineValueVariableLookup struct { - // The document range for which the inline value applies. - // The range is used to extract the variable name from the underlying document. - Range Range `json:"range"` - // If specified the name of the variable to look up. - VariableName string `json:"variableName,omitempty"` - // How to perform the lookup. - CaseSensitiveLookup bool `json:"caseSensitiveLookup"` -} - -// Client workspace capabilities specific to inline values. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#inlineValueWorkspaceClientCapabilities -type InlineValueWorkspaceClientCapabilities struct { - // Whether the client implementation supports a refresh request sent from the - // server to the client. - // - // Note that this event is global and will force the client to refresh all - // inline values currently shown. It should be used with absolute care and is - // useful for situation where a server for example detects a project wide - // change that requires such a calculation. - RefreshSupport bool `json:"refreshSupport,omitempty"` -} - -// A special text edit to provide an insert and a replace operation. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#insertReplaceEdit -type InsertReplaceEdit struct { - // The string to be inserted. - NewText string `json:"newText"` - // The range if the insert is requested - Insert Range `json:"insert"` - // The range if the replace is requested. - Replace Range `json:"replace"` -} - -// Defines whether the insert text in a completion item should be interpreted as -// plain text or a snippet. -type InsertTextFormat uint32 - -// How whitespace and indentation is handled during completion -// item insertion. -// -// @since 3.16.0 -type InsertTextMode uint32 -type LSPAny = interface{} - -// LSP arrays. -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#lSPArray -type LSPArray = []interface{} // (alias) -type LSPErrorCodes int32 - -// LSP object definition. -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#lSPObject -type LSPObject = map[string]LSPAny // (alias) -// Predefined Language kinds -// @since 3.18.0 -// @proposed -type LanguageKind string - -// Client capabilities for the linked editing range request. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeClientCapabilities -type LinkedEditingRangeClientCapabilities struct { - // 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 bool `json:"dynamicRegistration,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeOptions -type LinkedEditingRangeOptions struct { - WorkDoneProgressOptions -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeParams -type LinkedEditingRangeParams struct { - TextDocumentPositionParams - WorkDoneProgressParams -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRangeRegistrationOptions -type LinkedEditingRangeRegistrationOptions struct { - TextDocumentRegistrationOptions - LinkedEditingRangeOptions - StaticRegistrationOptions -} - -// The result of a linked editing range request. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#linkedEditingRanges -type LinkedEditingRanges struct { - // A list of ranges that can be edited together. The ranges must have - // identical length and contain identical text content. The ranges cannot overlap. - Ranges []Range `json:"ranges"` - // An optional word pattern (regular expression) that describes valid contents for - // the given ranges. If no pattern is provided, the client configuration's word - // pattern will be used. - WordPattern string `json:"wordPattern,omitempty"` -} - -// created for Literal (Lit_ClientSemanticTokensRequestOptions_range_Item1) -type Lit_ClientSemanticTokensRequestOptions_range_Item1 struct { -} - -// created for Literal (Lit_SemanticTokensOptions_range_Item1) -type Lit_SemanticTokensOptions_range_Item1 struct { -} - -// Represents a location inside a resource, such as a line -// inside a text file. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#location -type Location struct { - URI DocumentUri `json:"uri"` - Range Range `json:"range"` -} - -// Represents the connection of two locations. Provides additional metadata over normal {@link Location locations}, -// including an origin range. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#locationLink -type LocationLink struct { - // Span of the origin of this link. - // - // Used as the underlined span for mouse interaction. Defaults to the word range at - // the definition position. - OriginSelectionRange *Range `json:"originSelectionRange,omitempty"` - // The target resource identifier of this link. - TargetURI DocumentUri `json:"targetUri"` - // The full target range of this link. If the target for example is a symbol then target range is the - // range enclosing this symbol not including leading/trailing whitespace but everything else - // like comments. This information is typically used to highlight the range in the editor. - TargetRange Range `json:"targetRange"` - // The range that should be selected and revealed when this link is being followed, e.g the name of a function. - // Must be contained by the `targetRange`. See also `DocumentSymbol#range` - TargetSelectionRange Range `json:"targetSelectionRange"` -} - -// Location with only uri and does not include range. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#locationUriOnly -type LocationUriOnly struct { - URI DocumentUri `json:"uri"` -} - -// The log message parameters. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#logMessageParams -type LogMessageParams struct { - // The message type. See {@link MessageType} - Type MessageType `json:"type"` - // The actual message. - Message string `json:"message"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#logTraceParams -type LogTraceParams struct { - Message string `json:"message"` - Verbose string `json:"verbose,omitempty"` -} - -// Client capabilities specific to the used markdown parser. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markdownClientCapabilities -type MarkdownClientCapabilities struct { - // The name of the parser. - Parser string `json:"parser"` - // The version of the parser. - Version string `json:"version,omitempty"` - // A list of HTML tags that the client allows / supports in - // Markdown. - // - // @since 3.17.0 - AllowedTags []string `json:"allowedTags,omitempty"` -} - -// MarkedString can be used to render human readable text. It is either a markdown string -// or a code-block that provides a language and a code snippet. The language identifier -// is semantically equal to the optional language identifier in fenced code blocks in GitHub -// issues. See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting -// -// The pair of a language and a value is an equivalent to markdown: -// ```${language} -// ${value} -// ``` -// -// Note that markdown strings will be sanitized - that means html will be escaped. -// @deprecated use MarkupContent instead. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markedString -type MarkedString = Or_MarkedString // (alias) -// @since 3.18.0 -// @deprecated use MarkupContent instead. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markedStringWithLanguage -type MarkedStringWithLanguage struct { - Language string `json:"language"` - Value string `json:"value"` -} - -// A `MarkupContent` literal represents a string value which content is interpreted base on its -// kind flag. Currently the protocol supports `plaintext` and `markdown` as markup kinds. -// -// If the kind is `markdown` then the value can contain fenced code blocks like in GitHub issues. -// See https://help.github.com/articles/creating-and-highlighting-code-blocks/#syntax-highlighting -// -// Here is an example how such a string can be constructed using JavaScript / TypeScript: -// ```ts -// -// let markdown: MarkdownContent = { -// kind: MarkupKind.Markdown, -// value: [ -// '# Header', -// 'Some text', -// '```typescript', -// 'someCode();', -// '```' -// ].join('\n') -// }; -// -// ``` -// -// *Please Note* that clients might sanitize the return markdown. A client could decide to -// remove HTML from the markdown to avoid script execution. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#markupContent -type MarkupContent struct { - // The type of the Markup - Kind MarkupKind `json:"kind"` - // The content itself - Value string `json:"value"` -} - -// 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. -type MarkupKind string - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#messageActionItem -type MessageActionItem struct { - // A short title like 'Retry', 'Open Log' etc. - Title string `json:"title"` -} - -// The message type -type MessageType uint32 - -// Moniker definition to match LSIF 0.5 moniker definition. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#moniker -type Moniker struct { - // The scheme of the moniker. For example tsc or .Net - Scheme string `json:"scheme"` - // The identifier of the moniker. The value is opaque in LSIF however - // schema owners are allowed to define the structure if they want. - Identifier string `json:"identifier"` - // The scope in which the moniker is unique - Unique UniquenessLevel `json:"unique"` - // The moniker kind if known. - Kind *MonikerKind `json:"kind,omitempty"` -} - -// Client capabilities specific to the moniker request. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerClientCapabilities -type MonikerClientCapabilities struct { - // Whether moniker supports dynamic registration. If this is set to `true` - // the client supports the new `MonikerRegistrationOptions` return value - // for the corresponding server capability as well. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// The moniker kind. -// -// @since 3.16.0 -type MonikerKind string - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerOptions -type MonikerOptions struct { - WorkDoneProgressOptions -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerParams -type MonikerParams struct { - TextDocumentPositionParams - WorkDoneProgressParams - PartialResultParams -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#monikerRegistrationOptions -type MonikerRegistrationOptions struct { - TextDocumentRegistrationOptions - MonikerOptions -} - -// A notebook cell. -// -// A cell's document URI must be unique across ALL notebook -// cells and can therefore be used to uniquely identify a -// notebook cell or the cell's text document. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCell -type NotebookCell struct { - // The cell's kind - Kind NotebookCellKind `json:"kind"` - // The URI of the cell's text document - // content. - Document DocumentUri `json:"document"` - // Additional metadata stored with the cell. - // - // Note: should always be an object literal (e.g. LSPObject) - Metadata *LSPObject `json:"metadata,omitempty"` - // Additional execution summary information - // if supported by the client. - ExecutionSummary *ExecutionSummary `json:"executionSummary,omitempty"` -} - -// A change describing how to move a `NotebookCell` -// array from state S to S'. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellArrayChange -type NotebookCellArrayChange struct { - // The start oftest of the cell that changed. - Start uint32 `json:"start"` - // The deleted cells - DeleteCount uint32 `json:"deleteCount"` - // The new cells, if any - Cells []NotebookCell `json:"cells,omitempty"` -} - -// A notebook cell kind. -// -// @since 3.17.0 -type NotebookCellKind uint32 - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellLanguage -type NotebookCellLanguage struct { - Language string `json:"language"` -} - -// A notebook cell text document filter denotes a cell text -// document by different properties. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookCellTextDocumentFilter -type NotebookCellTextDocumentFilter struct { - // A filter that matches against the notebook - // containing the notebook cell. If a string - // value is provided it matches against the - // notebook type. '*' matches every notebook. - Notebook Or_NotebookCellTextDocumentFilter_notebook `json:"notebook"` - // A language id like `python`. - // - // Will be matched against the language id of the - // notebook cell document. '*' matches every language. - Language string `json:"language,omitempty"` -} - -// A notebook document. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocument -type NotebookDocument struct { - // The notebook document's uri. - URI URI `json:"uri"` - // The type of the notebook. - NotebookType string `json:"notebookType"` - // The version number of this document (it will increase after each - // change, including undo/redo). - Version int32 `json:"version"` - // Additional metadata stored with the notebook - // document. - // - // Note: should always be an object literal (e.g. LSPObject) - Metadata *LSPObject `json:"metadata,omitempty"` - // The cells of a notebook. - Cells []NotebookCell `json:"cells"` -} - -// Structural changes to cells in a notebook document. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellChangeStructure -type NotebookDocumentCellChangeStructure struct { - // The change to the cell array. - Array NotebookCellArrayChange `json:"array"` - // Additional opened cell text documents. - DidOpen []TextDocumentItem `json:"didOpen,omitempty"` - // Additional closed cell text documents. - DidClose []TextDocumentIdentifier `json:"didClose,omitempty"` -} - -// Cell changes to a notebook document. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellChanges -type NotebookDocumentCellChanges struct { - // Changes to the cell structure to add or - // remove cells. - Structure *NotebookDocumentCellChangeStructure `json:"structure,omitempty"` - // Changes to notebook cells properties like its - // kind, execution summary or metadata. - Data []NotebookCell `json:"data,omitempty"` - // Changes to the text content of notebook cells. - TextContent []NotebookDocumentCellContentChanges `json:"textContent,omitempty"` -} - -// Content changes to a cell in a notebook document. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentCellContentChanges -type NotebookDocumentCellContentChanges struct { - Document VersionedTextDocumentIdentifier `json:"document"` - Changes []TextDocumentContentChangeEvent `json:"changes"` -} - -// A change event for a notebook document. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentChangeEvent -type NotebookDocumentChangeEvent struct { - // The changed meta data if any. - // - // Note: should always be an object literal (e.g. LSPObject) - Metadata *LSPObject `json:"metadata,omitempty"` - // Changes to cells - Cells *NotebookDocumentCellChanges `json:"cells,omitempty"` -} - -// Capabilities specific to the notebook document support. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentClientCapabilities -type NotebookDocumentClientCapabilities struct { - // Capabilities specific to notebook document synchronization - // - // @since 3.17.0 - Synchronization NotebookDocumentSyncClientCapabilities `json:"synchronization"` -} - -// A notebook document filter denotes a notebook document by -// different properties. The properties will be match -// against the notebook's URI (same as with documents) -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilter -type NotebookDocumentFilter = Or_NotebookDocumentFilter // (alias) -// A notebook document filter where `notebookType` is required field. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterNotebookType -type NotebookDocumentFilterNotebookType struct { - // The type of the enclosing notebook. - NotebookType string `json:"notebookType"` - // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. - Scheme string `json:"scheme,omitempty"` - // A glob pattern. - Pattern *GlobPattern `json:"pattern,omitempty"` -} - -// A notebook document filter where `pattern` is required field. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterPattern -type NotebookDocumentFilterPattern struct { - // The type of the enclosing notebook. - NotebookType string `json:"notebookType,omitempty"` - // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. - Scheme string `json:"scheme,omitempty"` - // A glob pattern. - Pattern GlobPattern `json:"pattern"` -} - -// A notebook document filter where `scheme` is required field. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterScheme -type NotebookDocumentFilterScheme struct { - // The type of the enclosing notebook. - NotebookType string `json:"notebookType,omitempty"` - // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. - Scheme string `json:"scheme"` - // A glob pattern. - Pattern *GlobPattern `json:"pattern,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterWithCells -type NotebookDocumentFilterWithCells struct { - // The notebook to be synced If a string - // value is provided it matches against the - // notebook type. '*' matches every notebook. - Notebook *Or_NotebookDocumentFilterWithCells_notebook `json:"notebook,omitempty"` - // The cells of the matching notebook to be synced. - Cells []NotebookCellLanguage `json:"cells"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentFilterWithNotebook -type NotebookDocumentFilterWithNotebook struct { - // The notebook to be synced If a string - // value is provided it matches against the - // notebook type. '*' matches every notebook. - Notebook Or_NotebookDocumentFilterWithNotebook_notebook `json:"notebook"` - // The cells of the matching notebook to be synced. - Cells []NotebookCellLanguage `json:"cells,omitempty"` -} - -// A literal to identify a notebook document in the client. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentIdentifier -type NotebookDocumentIdentifier struct { - // The notebook document's uri. - URI URI `json:"uri"` -} - -// Notebook specific client capabilities. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncClientCapabilities -type NotebookDocumentSyncClientCapabilities struct { - // 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 bool `json:"dynamicRegistration,omitempty"` - // The client supports sending execution summary data per cell. - ExecutionSummarySupport bool `json:"executionSummarySupport,omitempty"` -} - -// Options specific to a notebook plus its cells -// to be synced to the server. -// -// If a selector provides a notebook document -// filter but no cell selector all cells of a -// matching notebook document will be synced. -// -// If a selector provides no notebook document -// filter but only a cell selector all notebook -// document that contain at least one matching -// cell will be synced. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncOptions -type NotebookDocumentSyncOptions struct { - // The notebooks to be synced - NotebookSelector []Or_NotebookDocumentSyncOptions_notebookSelector_Elem `json:"notebookSelector"` - // Whether save notification should be forwarded to - // the server. Will only be honored if mode === `notebook`. - Save bool `json:"save,omitempty"` -} - -// Registration options specific to a notebook. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#notebookDocumentSyncRegistrationOptions -type NotebookDocumentSyncRegistrationOptions struct { - NotebookDocumentSyncOptions - StaticRegistrationOptions -} - -// A text document identifier to optionally denote a specific version of a text document. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#optionalVersionedTextDocumentIdentifier -type OptionalVersionedTextDocumentIdentifier struct { - // The version number of this document. If a versioned text document identifier - // is sent from the server to the client and the file is not open in the editor - // (the server has not received an open notification before) the server can send - // `null` to indicate that the version is unknown and the content on disk is the - // truth (as specified with document content ownership). - Version int32 `json:"version"` - TextDocumentIdentifier -} - -// created for Or [int32 string] -type Or_CancelParams_id struct { - Value interface{} `json:"value"` -} - -// created for Or [ClientSemanticTokensRequestFullDelta bool] -type Or_ClientSemanticTokensRequestOptions_full struct { - Value interface{} `json:"value"` -} - -// created for Or [Lit_ClientSemanticTokensRequestOptions_range_Item1 bool] -type Or_ClientSemanticTokensRequestOptions_range struct { - Value interface{} `json:"value"` -} - -// created for Or [EditRangeWithInsertReplace Range] -type Or_CompletionItemDefaults_editRange struct { - Value interface{} `json:"value"` -} - -// created for Or [MarkupContent string] -type Or_CompletionItem_documentation struct { - Value interface{} `json:"value"` -} - -// created for Or [InsertReplaceEdit TextEdit] -type Or_CompletionItem_textEdit struct { - Value interface{} `json:"value"` -} - -// created for Or [Location []Location] -type Or_Declaration struct { - Value interface{} `json:"value"` -} - -// created for Or [Location []Location] -type Or_Definition struct { - Value interface{} `json:"value"` -} - -// created for Or [int32 string] -type Or_Diagnostic_code struct { - Value interface{} `json:"value"` -} - -// created for Or [[]string string] -type Or_DidChangeConfigurationRegistrationOptions_section struct { - Value interface{} `json:"value"` -} - -// created for Or [RelatedFullDocumentDiagnosticReport RelatedUnchangedDocumentDiagnosticReport] -type Or_DocumentDiagnosticReport struct { - Value interface{} `json:"value"` -} - -// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport] -type Or_DocumentDiagnosticReportPartialResult_relatedDocuments_Value struct { - Value interface{} `json:"value"` -} - -// created for Or [NotebookCellTextDocumentFilter TextDocumentFilter] -type Or_DocumentFilter struct { - Value interface{} `json:"value"` -} - -// created for Or [Pattern RelativePattern] -type Or_GlobPattern struct { - Value interface{} `json:"value"` -} - -// created for Or [MarkedString MarkupContent []MarkedString] -type Or_Hover_contents struct { - Value interface{} `json:"value"` -} - -// created for Or [MarkupContent string] -type Or_InlayHintLabelPart_tooltip struct { - Value interface{} `json:"value"` -} - -// created for Or [[]InlayHintLabelPart string] -type Or_InlayHint_label struct { - Value interface{} `json:"value"` -} - -// created for Or [MarkupContent string] -type Or_InlayHint_tooltip struct { - Value interface{} `json:"value"` -} - -// created for Or [StringValue string] -type Or_InlineCompletionItem_insertText struct { - Value interface{} `json:"value"` -} - -// created for Or [InlineValueEvaluatableExpression InlineValueText InlineValueVariableLookup] -type Or_InlineValue struct { - Value interface{} `json:"value"` -} - -// created for Or [LSPArray LSPObject bool float64 int32 string uint32] -type Or_LSPAny struct { - Value interface{} `json:"value"` -} - -// created for Or [MarkedStringWithLanguage string] -type Or_MarkedString struct { - Value interface{} `json:"value"` -} - -// created for Or [NotebookDocumentFilter string] -type Or_NotebookCellTextDocumentFilter_notebook struct { - Value interface{} `json:"value"` -} - -// created for Or [NotebookDocumentFilterNotebookType NotebookDocumentFilterPattern NotebookDocumentFilterScheme] -type Or_NotebookDocumentFilter struct { - Value interface{} `json:"value"` -} - -// created for Or [NotebookDocumentFilter string] -type Or_NotebookDocumentFilterWithCells_notebook struct { - Value interface{} `json:"value"` -} - -// created for Or [NotebookDocumentFilter string] -type Or_NotebookDocumentFilterWithNotebook_notebook struct { - Value interface{} `json:"value"` -} - -// created for Or [NotebookDocumentFilterWithCells NotebookDocumentFilterWithNotebook] -type Or_NotebookDocumentSyncOptions_notebookSelector_Elem struct { - Value interface{} `json:"value"` -} - -// created for Or [MarkupContent string] -type Or_ParameterInformation_documentation struct { - Value interface{} `json:"value"` -} - -// created for Or [Tuple_ParameterInformation_label_Item1 string] -type Or_ParameterInformation_label struct { - Value interface{} `json:"value"` -} - -// created for Or [PrepareRenameDefaultBehavior PrepareRenamePlaceholder Range] -type Or_PrepareRenameResult struct { - Value interface{} `json:"value"` -} - -// created for Or [int32 string] -type Or_ProgressToken struct { - Value interface{} `json:"value"` -} - -// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport] -type Or_RelatedFullDocumentDiagnosticReport_relatedDocuments_Value struct { - Value interface{} `json:"value"` -} - -// created for Or [FullDocumentDiagnosticReport UnchangedDocumentDiagnosticReport] -type Or_RelatedUnchangedDocumentDiagnosticReport_relatedDocuments_Value struct { - Value interface{} `json:"value"` -} - -// created for Or [URI WorkspaceFolder] -type Or_RelativePattern_baseUri struct { - Value interface{} `json:"value"` -} - -// created for Or [CodeAction Command] -type Or_Result_textDocument_codeAction_Item0_Elem struct { - Value interface{} `json:"value"` -} - -// created for Or [CompletionList []CompletionItem] -type Or_Result_textDocument_completion struct { - Value interface{} `json:"value"` -} - -// created for Or [Declaration []DeclarationLink] -type Or_Result_textDocument_declaration struct { - Value interface{} `json:"value"` -} - -// created for Or [Definition []DefinitionLink] -type Or_Result_textDocument_definition struct { - Value interface{} `json:"value"` -} - -// created for Or [[]DocumentSymbol []SymbolInformation] -type Or_Result_textDocument_documentSymbol struct { - Value interface{} `json:"value"` -} - -// created for Or [Definition []DefinitionLink] -type Or_Result_textDocument_implementation struct { - Value interface{} `json:"value"` -} - -// created for Or [InlineCompletionList []InlineCompletionItem] -type Or_Result_textDocument_inlineCompletion struct { - Value interface{} `json:"value"` -} - -// created for Or [SemanticTokens SemanticTokensDelta] -type Or_Result_textDocument_semanticTokens_full_delta struct { - Value interface{} `json:"value"` -} - -// created for Or [Definition []DefinitionLink] -type Or_Result_textDocument_typeDefinition struct { - Value interface{} `json:"value"` -} - -// created for Or [[]SymbolInformation []WorkspaceSymbol] -type Or_Result_workspace_symbol struct { - Value interface{} `json:"value"` -} - -// created for Or [SemanticTokensFullDelta bool] -type Or_SemanticTokensOptions_full struct { - Value interface{} `json:"value"` -} - -// created for Or [Lit_SemanticTokensOptions_range_Item1 bool] -type Or_SemanticTokensOptions_range struct { - Value interface{} `json:"value"` -} - -// created for Or [CallHierarchyOptions CallHierarchyRegistrationOptions bool] -type Or_ServerCapabilities_callHierarchyProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [CodeActionOptions bool] -type Or_ServerCapabilities_codeActionProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [DocumentColorOptions DocumentColorRegistrationOptions bool] -type Or_ServerCapabilities_colorProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [DeclarationOptions DeclarationRegistrationOptions bool] -type Or_ServerCapabilities_declarationProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [DefinitionOptions bool] -type Or_ServerCapabilities_definitionProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [DiagnosticOptions DiagnosticRegistrationOptions] -type Or_ServerCapabilities_diagnosticProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [DocumentFormattingOptions bool] -type Or_ServerCapabilities_documentFormattingProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [DocumentHighlightOptions bool] -type Or_ServerCapabilities_documentHighlightProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [DocumentRangeFormattingOptions bool] -type Or_ServerCapabilities_documentRangeFormattingProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [DocumentSymbolOptions bool] -type Or_ServerCapabilities_documentSymbolProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [FoldingRangeOptions FoldingRangeRegistrationOptions bool] -type Or_ServerCapabilities_foldingRangeProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [HoverOptions bool] -type Or_ServerCapabilities_hoverProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [ImplementationOptions ImplementationRegistrationOptions bool] -type Or_ServerCapabilities_implementationProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [InlayHintOptions InlayHintRegistrationOptions bool] -type Or_ServerCapabilities_inlayHintProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [InlineCompletionOptions bool] -type Or_ServerCapabilities_inlineCompletionProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [InlineValueOptions InlineValueRegistrationOptions bool] -type Or_ServerCapabilities_inlineValueProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [LinkedEditingRangeOptions LinkedEditingRangeRegistrationOptions bool] -type Or_ServerCapabilities_linkedEditingRangeProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [MonikerOptions MonikerRegistrationOptions bool] -type Or_ServerCapabilities_monikerProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [NotebookDocumentSyncOptions NotebookDocumentSyncRegistrationOptions] -type Or_ServerCapabilities_notebookDocumentSync struct { - Value interface{} `json:"value"` -} - -// created for Or [ReferenceOptions bool] -type Or_ServerCapabilities_referencesProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [RenameOptions bool] -type Or_ServerCapabilities_renameProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [SelectionRangeOptions SelectionRangeRegistrationOptions bool] -type Or_ServerCapabilities_selectionRangeProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [SemanticTokensOptions SemanticTokensRegistrationOptions] -type Or_ServerCapabilities_semanticTokensProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [TextDocumentSyncKind TextDocumentSyncOptions] -type Or_ServerCapabilities_textDocumentSync struct { - Value interface{} `json:"value"` -} - -// created for Or [TypeDefinitionOptions TypeDefinitionRegistrationOptions bool] -type Or_ServerCapabilities_typeDefinitionProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [TypeHierarchyOptions TypeHierarchyRegistrationOptions bool] -type Or_ServerCapabilities_typeHierarchyProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [WorkspaceSymbolOptions bool] -type Or_ServerCapabilities_workspaceSymbolProvider struct { - Value interface{} `json:"value"` -} - -// created for Or [MarkupContent string] -type Or_SignatureInformation_documentation struct { - Value interface{} `json:"value"` -} - -// created for Or [TextDocumentContentChangePartial TextDocumentContentChangeWholeDocument] -type Or_TextDocumentContentChangeEvent struct { - Value interface{} `json:"value"` -} - -// created for Or [AnnotatedTextEdit SnippetTextEdit TextEdit] -type Or_TextDocumentEdit_edits_Elem struct { - Value interface{} `json:"value"` -} - -// created for Or [TextDocumentFilterLanguage TextDocumentFilterPattern TextDocumentFilterScheme] -type Or_TextDocumentFilter struct { - Value interface{} `json:"value"` -} - -// created for Or [SaveOptions bool] -type Or_TextDocumentSyncOptions_save struct { - Value interface{} `json:"value"` -} - -// created for Or [WorkspaceFullDocumentDiagnosticReport WorkspaceUnchangedDocumentDiagnosticReport] -type Or_WorkspaceDocumentDiagnosticReport struct { - Value interface{} `json:"value"` -} - -// created for Or [CreateFile DeleteFile RenameFile TextDocumentEdit] -type Or_WorkspaceEdit_documentChanges_Elem struct { - Value interface{} `json:"value"` -} - -// created for Or [bool string] -type Or_WorkspaceFoldersServerCapabilities_changeNotifications struct { - Value interface{} `json:"value"` -} - -// created for Or [TextDocumentContentOptions TextDocumentContentRegistrationOptions] -type Or_WorkspaceOptions_textDocumentContent struct { - Value interface{} `json:"value"` -} - -// created for Or [Location LocationUriOnly] -type Or_WorkspaceSymbol_location struct { - Value interface{} `json:"value"` -} - -// The parameters of a configuration request. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#configurationParams -type ParamConfiguration struct { - Items []ConfigurationItem `json:"items"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#initializeParams -type ParamInitialize struct { - XInitializeParams - WorkspaceFoldersInitializeParams -} - -// Represents a parameter of a callable-signature. A parameter can -// have a label and a doc-comment. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#parameterInformation -type ParameterInformation struct { - // The label of this parameter information. - // - // Either a string or an inclusive start and exclusive end offsets within its containing - // signature label. (see SignatureInformation.label). The offsets are based on a UTF-16 - // string representation as `Position` and `Range` does. - // - // To avoid ambiguities a server should use the [start, end] offset value instead of using - // a substring. Whether a client support this is controlled via `labelOffsetSupport` client - // capability. - // - // *Note*: a label of type string should be a substring of its containing signature label. - // Its intended use case is to highlight the parameter label part in the `SignatureInformation.label`. - Label Or_ParameterInformation_label `json:"label"` - // The human-readable doc-comment of this parameter. Will be shown - // in the UI but can be omitted. - Documentation *Or_ParameterInformation_documentation `json:"documentation,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#partialResultParams -type PartialResultParams struct { - // An optional token that a server can use to report partial results (e.g. streaming) to - // the client. - PartialResultToken *ProgressToken `json:"partialResultToken,omitempty"` -} - -// The glob pattern to watch relative to the base path. Glob patterns can have the following syntax: -// -// - `*` to match one or more characters in a path segment -// - `?` to match on one character in a path segment -// - `**` to match any number of path segments, including none -// - `{}` to group conditions (e.g. `**/*.{ts,js}` matches all TypeScript and JavaScript files) -// - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) -// - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#pattern -type Pattern = string // (alias) -// Position in a text document expressed as zero-based line and character -// offset. Prior to 3.17 the offsets were always based on a UTF-16 string -// representation. So a string of the form `a𐐀b` the character offset of the -// character `a` is 0, the character offset of `𐐀` is 1 and the character -// offset of b is 3 since `𐐀` is represented using two code units in UTF-16. -// Since 3.17 clients and servers can agree on a different string encoding -// representation (e.g. UTF-8). The client announces it's supported encoding -// via the client capability [`general.positionEncodings`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#clientCapabilities). -// The value is an array of position encodings the client supports, with -// decreasing preference (e.g. the encoding at index `0` is the most preferred -// one). To stay backwards compatible the only mandatory encoding is UTF-16 -// represented via the string `utf-16`. The server can pick one of the -// encodings offered by the client and signals that encoding back to the -// client via the initialize result's property -// [`capabilities.positionEncoding`](https://microsoft.github.io/language-server-protocol/specifications/specification-current/#serverCapabilities). If the string value -// `utf-16` is missing from the client's capability `general.positionEncodings` -// servers can safely assume that the client supports UTF-16. If the server -// omits the position encoding in its initialize result the encoding defaults -// to the string value `utf-16`. Implementation considerations: since the -// conversion from one encoding into another requires the content of the -// file / line the conversion is best done where the file is read which is -// usually on the server side. -// -// Positions are line end character agnostic. So you can not specify a position -// that denotes `\r|\n` or `\n|` where `|` represents the character offset. -// -// @since 3.17.0 - support for negotiated position encoding. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#position -type Position struct { - // Line position in a document (zero-based). - // - // If a line number is greater than the number of lines in a document, it defaults back to the number of lines in the document. - // If a line number is negative, it defaults to 0. - Line uint32 `json:"line"` - // Character offset on a line in a document (zero-based). - // - // The meaning of this offset is determined by the negotiated - // `PositionEncodingKind`. - // - // If the character value is greater than the line length it defaults back to the - // line length. - Character uint32 `json:"character"` -} - -// A set of predefined position encoding kinds. -// -// @since 3.17.0 -type PositionEncodingKind string - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameDefaultBehavior -type PrepareRenameDefaultBehavior struct { - DefaultBehavior bool `json:"defaultBehavior"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameParams -type PrepareRenameParams struct { - TextDocumentPositionParams - WorkDoneProgressParams -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenamePlaceholder -type PrepareRenamePlaceholder struct { - Range Range `json:"range"` - Placeholder string `json:"placeholder"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#prepareRenameResult -type PrepareRenameResult = Or_PrepareRenameResult // (alias) -type PrepareSupportDefaultBehavior uint32 - -// A previous result id in a workspace pull request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#previousResultId -type PreviousResultID struct { - // The URI for which the client knowns a - // result id. - URI DocumentUri `json:"uri"` - // The value of the previous result id. - Value string `json:"value"` -} - -// A previous result id in a workspace pull request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#previousResultId -type PreviousResultId struct { - // The URI for which the client knowns a - // result id. - URI DocumentUri `json:"uri"` - // The value of the previous result id. - Value string `json:"value"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#progressParams -type ProgressParams struct { - // The progress token provided by the client or server. - Token ProgressToken `json:"token"` - // The progress data. - Value interface{} `json:"value"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#progressToken -type ProgressToken = Or_ProgressToken // (alias) -// The publish diagnostic client capabilities. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#publishDiagnosticsClientCapabilities -type PublishDiagnosticsClientCapabilities struct { - // Whether the client interprets the version property of the - // `textDocument/publishDiagnostics` notification's parameter. - // - // @since 3.15.0 - VersionSupport bool `json:"versionSupport,omitempty"` - DiagnosticsCapabilities -} - -// The publish diagnostic notification's parameters. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#publishDiagnosticsParams -type PublishDiagnosticsParams struct { - // The URI for which diagnostic information is reported. - URI DocumentUri `json:"uri"` - // Optional the version number of the document the diagnostics are published for. - // - // @since 3.15.0 - Version int32 `json:"version,omitempty"` - // An array of diagnostic information items. - Diagnostics []Diagnostic `json:"diagnostics"` -} - -// A range in a text document expressed as (zero-based) start and end positions. -// -// If you want to specify a range that contains a line including the line ending -// character(s) then use an end position denoting the start of the next line. -// For example: -// ```ts -// -// { -// start: { line: 5, character: 23 } -// end : { line 6, character : 0 } -// } -// -// ``` -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#range -type Range struct { - // The range's start position. - Start Position `json:"start"` - // The range's end position. - End Position `json:"end"` -} - -// Client Capabilities for a {@link ReferencesRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceClientCapabilities -type ReferenceClientCapabilities struct { - // Whether references supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// Value-object that contains additional information when -// requesting references. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceContext -type ReferenceContext struct { - // Include the declaration of the current symbol. - IncludeDeclaration bool `json:"includeDeclaration"` -} - -// Reference options. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceOptions -type ReferenceOptions struct { - WorkDoneProgressOptions -} - -// Parameters for a {@link ReferencesRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceParams -type ReferenceParams struct { - Context ReferenceContext `json:"context"` - TextDocumentPositionParams - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link ReferencesRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#referenceRegistrationOptions -type ReferenceRegistrationOptions struct { - TextDocumentRegistrationOptions - ReferenceOptions -} - -// General parameters to register for a notification or to register a provider. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#registration -type Registration struct { - // The id used to register the request. The id can be used to deregister - // the request again. - ID string `json:"id"` - // The method / capability to register for. - Method string `json:"method"` - // Options necessary for the registration. - RegisterOptions interface{} `json:"registerOptions,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#registrationParams -type RegistrationParams struct { - Registrations []Registration `json:"registrations"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#regularExpressionEngineKind -type RegularExpressionEngineKind = string // (alias) -// Client capabilities specific to regular expressions. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#regularExpressionsClientCapabilities -type RegularExpressionsClientCapabilities struct { - // The engine's name. - Engine RegularExpressionEngineKind `json:"engine"` - // The engine's version. - Version string `json:"version,omitempty"` -} - -// A full diagnostic report with a set of related documents. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relatedFullDocumentDiagnosticReport -type RelatedFullDocumentDiagnosticReport struct { - // Diagnostics of related documents. This information is useful - // in programming languages where code in a file A can generate - // diagnostics in a file B which A depends on. An example of - // such a language is C/C++ where marco definitions in a file - // a.cpp and result in errors in a header file b.hpp. - // - // @since 3.17.0 - RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments,omitempty"` - FullDocumentDiagnosticReport -} - -// An unchanged diagnostic report with a set of related documents. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relatedUnchangedDocumentDiagnosticReport -type RelatedUnchangedDocumentDiagnosticReport struct { - // Diagnostics of related documents. This information is useful - // in programming languages where code in a file A can generate - // diagnostics in a file B which A depends on. An example of - // such a language is C/C++ where marco definitions in a file - // a.cpp and result in errors in a header file b.hpp. - // - // @since 3.17.0 - RelatedDocuments map[DocumentUri]interface{} `json:"relatedDocuments,omitempty"` - UnchangedDocumentDiagnosticReport -} - -// A relative pattern is a helper to construct glob patterns that are matched -// relatively to a base URI. The common value for a `baseUri` is a workspace -// folder root, but it can be another absolute URI as well. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#relativePattern -type RelativePattern struct { - // A workspace folder or a base URI to which this pattern will be matched - // against relatively. - BaseURI Or_RelativePattern_baseUri `json:"baseUri"` - // The actual glob pattern; - Pattern Pattern `json:"pattern"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameClientCapabilities -type RenameClientCapabilities struct { - // Whether rename supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // Client supports testing for validity of rename operations - // before execution. - // - // @since 3.12.0 - PrepareSupport bool `json:"prepareSupport,omitempty"` - // Client supports the default behavior result. - // - // The value indicates the default behavior used by the - // client. - // - // @since 3.16.0 - PrepareSupportDefaultBehavior *PrepareSupportDefaultBehavior `json:"prepareSupportDefaultBehavior,omitempty"` - // Whether the client honors the change annotations in - // text edits and resource operations returned via the - // rename request's workspace edit by for example presenting - // the workspace edit in the user interface and asking - // for confirmation. - // - // @since 3.16.0 - HonorsChangeAnnotations bool `json:"honorsChangeAnnotations,omitempty"` -} - -// Rename file operation -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFile -type RenameFile struct { - // A rename - Kind string `json:"kind"` - // The old (existing) location. - OldURI DocumentUri `json:"oldUri"` - // The new location. - NewURI DocumentUri `json:"newUri"` - // Rename options. - Options *RenameFileOptions `json:"options,omitempty"` - ResourceOperation -} - -// Rename file options -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFileOptions -type RenameFileOptions struct { - // Overwrite target if existing. Overwrite wins over `ignoreIfExists` - Overwrite bool `json:"overwrite,omitempty"` - // Ignores if target exists. - IgnoreIfExists bool `json:"ignoreIfExists,omitempty"` -} - -// The parameters sent in notifications/requests for user-initiated renames of -// files. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameFilesParams -type RenameFilesParams struct { - // An array of all files/folders renamed in this operation. When a folder is renamed, only - // the folder will be included, and not its children. - Files []FileRename `json:"files"` -} - -// Provider options for a {@link RenameRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameOptions -type RenameOptions struct { - // Renames should be checked and tested before being executed. - // - // @since version 3.12.0 - PrepareProvider bool `json:"prepareProvider,omitempty"` - WorkDoneProgressOptions -} - -// The parameters of a {@link RenameRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameParams -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 {@link ResponseError} with an - // appropriate message set. - NewName string `json:"newName"` - WorkDoneProgressParams -} - -// Registration options for a {@link RenameRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#renameRegistrationOptions -type RenameRegistrationOptions struct { - TextDocumentRegistrationOptions - RenameOptions -} - -// A generic resource operation. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#resourceOperation -type ResourceOperation struct { - // The resource operation kind. - Kind string `json:"kind"` - // An optional annotation identifier describing the operation. - // - // @since 3.16.0 - AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"` -} -type ResourceOperationKind string - -// Save options. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#saveOptions -type SaveOptions struct { - // The client is supposed to include the content on save. - IncludeText bool `json:"includeText,omitempty"` -} - -// Describes the currently selected completion item. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectedCompletionInfo -type SelectedCompletionInfo struct { - // The range that will be replaced if this completion item is accepted. - Range Range `json:"range"` - // The text the range will be replaced with if this completion is accepted. - Text string `json:"text"` -} - -// A selection range represents a part of a selection hierarchy. A selection range -// may have a parent selection range that contains it. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRange -type SelectionRange struct { - // The {@link Range range} of this selection range. - Range Range `json:"range"` - // The parent selection range containing this range. Therefore `parent.range` must contain `this.range`. - Parent *SelectionRange `json:"parent,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeClientCapabilities -type SelectionRangeClientCapabilities struct { - // Whether implementation supports dynamic registration for selection range providers. If this is set to `true` - // the client supports the new `SelectionRangeRegistrationOptions` return value for the corresponding server - // capability as well. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeOptions -type SelectionRangeOptions struct { - WorkDoneProgressOptions -} - -// A parameter literal used in selection range requests. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeParams -type SelectionRangeParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The positions inside the text document. - Positions []Position `json:"positions"` - WorkDoneProgressParams - PartialResultParams -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#selectionRangeRegistrationOptions -type SelectionRangeRegistrationOptions struct { - SelectionRangeOptions - TextDocumentRegistrationOptions - StaticRegistrationOptions -} - -// A set of predefined token modifiers. This set is not fixed -// an clients can specify additional token types via the -// corresponding client capabilities. -// -// @since 3.16.0 -type SemanticTokenModifiers string - -// A set of predefined token types. This set is not fixed -// an clients can specify additional token types via the -// corresponding client capabilities. -// -// @since 3.16.0 -type SemanticTokenTypes string - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokens -type SemanticTokens struct { - // An optional result id. If provided and clients support delta updating - // the client will include the result id in the next semantic token request. - // A server can then instead of computing all semantic tokens again simply - // send a delta. - ResultID string `json:"resultId,omitempty"` - // The actual tokens. - Data []uint32 `json:"data"` -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensClientCapabilities -type SemanticTokensClientCapabilities struct { - // 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 bool `json:"dynamicRegistration,omitempty"` - // Which requests the client supports and might send to the server - // depending on the server's capability. Please note that clients might not - // show semantic tokens or degrade some of the user experience if a range - // or full request is advertised by the client but not provided by the - // server. If for example the client capability `requests.full` and - // `request.range` are both set to true but the server only provides a - // range provider the client might not render a minimap correctly or might - // even decide to not show any semantic tokens at all. - Requests ClientSemanticTokensRequestOptions `json:"requests"` - // The token types that the client supports. - TokenTypes []string `json:"tokenTypes"` - // The token modifiers that the client supports. - TokenModifiers []string `json:"tokenModifiers"` - // The token formats the clients supports. - Formats []TokenFormat `json:"formats"` - // Whether the client supports tokens that can overlap each other. - OverlappingTokenSupport bool `json:"overlappingTokenSupport,omitempty"` - // Whether the client supports tokens that can span multiple lines. - MultilineTokenSupport bool `json:"multilineTokenSupport,omitempty"` - // Whether the client allows the server to actively cancel a - // semantic token request, e.g. supports returning - // LSPErrorCodes.ServerCancelled. If a server does the client - // needs to retrigger the request. - // - // @since 3.17.0 - ServerCancelSupport bool `json:"serverCancelSupport,omitempty"` - // Whether the client uses semantic tokens to augment existing - // syntax tokens. If set to `true` client side created syntax - // tokens and semantic tokens are both used for colorization. If - // set to `false` the client only uses the returned semantic tokens - // for colorization. - // - // If the value is `undefined` then the client behavior is not - // specified. - // - // @since 3.17.0 - AugmentsSyntaxTokens bool `json:"augmentsSyntaxTokens,omitempty"` -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDelta -type SemanticTokensDelta struct { - ResultID string `json:"resultId,omitempty"` - // The semantic token edits to transform a previous result into a new result. - Edits []SemanticTokensEdit `json:"edits"` -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDeltaParams -type SemanticTokensDeltaParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The result id of a previous response. The result Id can either point to a full response - // or a delta response depending on what was received last. - PreviousResultID string `json:"previousResultId"` - WorkDoneProgressParams - PartialResultParams -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensDeltaPartialResult -type SemanticTokensDeltaPartialResult struct { - Edits []SemanticTokensEdit `json:"edits"` -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensEdit -type SemanticTokensEdit struct { - // The start offset of the edit. - Start uint32 `json:"start"` - // The count of elements to remove. - DeleteCount uint32 `json:"deleteCount"` - // The elements to insert. - Data []uint32 `json:"data,omitempty"` -} - -// Semantic tokens options to support deltas for full documents -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensFullDelta -type SemanticTokensFullDelta struct { - // The server supports deltas for full documents. - Delta bool `json:"delta,omitempty"` -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensLegend -type SemanticTokensLegend struct { - // The token types a server uses. - TokenTypes []string `json:"tokenTypes"` - // The token modifiers a server uses. - TokenModifiers []string `json:"tokenModifiers"` -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensOptions -type SemanticTokensOptions struct { - // The legend used by the server - Legend SemanticTokensLegend `json:"legend"` - // Server supports providing semantic tokens for a specific range - // of a document. - Range *Or_SemanticTokensOptions_range `json:"range,omitempty"` - // Server supports providing semantic tokens for a full document. - Full *Or_SemanticTokensOptions_full `json:"full,omitempty"` - WorkDoneProgressOptions -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensParams -type SemanticTokensParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - WorkDoneProgressParams - PartialResultParams -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensPartialResult -type SemanticTokensPartialResult struct { - Data []uint32 `json:"data"` -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensRangeParams -type SemanticTokensRangeParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The range the semantic tokens are requested for. - Range Range `json:"range"` - WorkDoneProgressParams - PartialResultParams -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensRegistrationOptions -type SemanticTokensRegistrationOptions struct { - TextDocumentRegistrationOptions - SemanticTokensOptions - StaticRegistrationOptions -} - -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#semanticTokensWorkspaceClientCapabilities -type SemanticTokensWorkspaceClientCapabilities struct { - // Whether the client implementation supports a refresh request sent from - // the server to the client. - // - // Note that this event is global and will force the client to refresh all - // semantic tokens currently shown. It should be used with absolute care - // and is useful for situation where a server for example detects a project - // wide change that requires such a calculation. - RefreshSupport bool `json:"refreshSupport,omitempty"` -} - -// Defines the capabilities provided by a language -// server. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverCapabilities -type ServerCapabilities struct { - // The position encoding the server picked from the encodings offered - // by the client via the client capability `general.positionEncodings`. - // - // If the client didn't provide any position encodings the only valid - // value that a server can return is 'utf-16'. - // - // If omitted it defaults to 'utf-16'. - // - // @since 3.17.0 - PositionEncoding *PositionEncodingKind `json:"positionEncoding,omitempty"` - // Defines how text documents are synced. Is either a detailed structure - // defining each notification or for backwards compatibility the - // TextDocumentSyncKind number. - TextDocumentSync interface{} `json:"textDocumentSync,omitempty"` - // Defines how notebook documents are synced. - // - // @since 3.17.0 - NotebookDocumentSync *Or_ServerCapabilities_notebookDocumentSync `json:"notebookDocumentSync,omitempty"` - // The server provides completion support. - CompletionProvider *CompletionOptions `json:"completionProvider,omitempty"` - // The server provides hover support. - HoverProvider *Or_ServerCapabilities_hoverProvider `json:"hoverProvider,omitempty"` - // The server provides signature help support. - SignatureHelpProvider *SignatureHelpOptions `json:"signatureHelpProvider,omitempty"` - // The server provides Goto Declaration support. - DeclarationProvider *Or_ServerCapabilities_declarationProvider `json:"declarationProvider,omitempty"` - // The server provides goto definition support. - DefinitionProvider *Or_ServerCapabilities_definitionProvider `json:"definitionProvider,omitempty"` - // The server provides Goto Type Definition support. - TypeDefinitionProvider *Or_ServerCapabilities_typeDefinitionProvider `json:"typeDefinitionProvider,omitempty"` - // The server provides Goto Implementation support. - ImplementationProvider *Or_ServerCapabilities_implementationProvider `json:"implementationProvider,omitempty"` - // The server provides find references support. - ReferencesProvider *Or_ServerCapabilities_referencesProvider `json:"referencesProvider,omitempty"` - // The server provides document highlight support. - DocumentHighlightProvider *Or_ServerCapabilities_documentHighlightProvider `json:"documentHighlightProvider,omitempty"` - // The server provides document symbol support. - DocumentSymbolProvider *Or_ServerCapabilities_documentSymbolProvider `json:"documentSymbolProvider,omitempty"` - // The server provides code actions. CodeActionOptions may only be - // specified if the client states that it supports - // `codeActionLiteralSupport` in its initial `initialize` request. - CodeActionProvider interface{} `json:"codeActionProvider,omitempty"` - // The server provides code lens. - CodeLensProvider *CodeLensOptions `json:"codeLensProvider,omitempty"` - // The server provides document link support. - DocumentLinkProvider *DocumentLinkOptions `json:"documentLinkProvider,omitempty"` - // The server provides color provider support. - ColorProvider *Or_ServerCapabilities_colorProvider `json:"colorProvider,omitempty"` - // The server provides workspace symbol support. - WorkspaceSymbolProvider *Or_ServerCapabilities_workspaceSymbolProvider `json:"workspaceSymbolProvider,omitempty"` - // The server provides document formatting. - DocumentFormattingProvider *Or_ServerCapabilities_documentFormattingProvider `json:"documentFormattingProvider,omitempty"` - // The server provides document range formatting. - DocumentRangeFormattingProvider *Or_ServerCapabilities_documentRangeFormattingProvider `json:"documentRangeFormattingProvider,omitempty"` - // The server provides document formatting on typing. - DocumentOnTypeFormattingProvider *DocumentOnTypeFormattingOptions `json:"documentOnTypeFormattingProvider,omitempty"` - // The server provides rename support. RenameOptions may only be - // specified if the client states that it supports - // `prepareSupport` in its initial `initialize` request. - RenameProvider interface{} `json:"renameProvider,omitempty"` - // The server provides folding provider support. - FoldingRangeProvider *Or_ServerCapabilities_foldingRangeProvider `json:"foldingRangeProvider,omitempty"` - // The server provides selection range support. - SelectionRangeProvider *Or_ServerCapabilities_selectionRangeProvider `json:"selectionRangeProvider,omitempty"` - // The server provides execute command support. - ExecuteCommandProvider *ExecuteCommandOptions `json:"executeCommandProvider,omitempty"` - // The server provides call hierarchy support. - // - // @since 3.16.0 - CallHierarchyProvider *Or_ServerCapabilities_callHierarchyProvider `json:"callHierarchyProvider,omitempty"` - // The server provides linked editing range support. - // - // @since 3.16.0 - LinkedEditingRangeProvider *Or_ServerCapabilities_linkedEditingRangeProvider `json:"linkedEditingRangeProvider,omitempty"` - // The server provides semantic tokens support. - // - // @since 3.16.0 - SemanticTokensProvider interface{} `json:"semanticTokensProvider,omitempty"` - // The server provides moniker support. - // - // @since 3.16.0 - MonikerProvider *Or_ServerCapabilities_monikerProvider `json:"monikerProvider,omitempty"` - // The server provides type hierarchy support. - // - // @since 3.17.0 - TypeHierarchyProvider *Or_ServerCapabilities_typeHierarchyProvider `json:"typeHierarchyProvider,omitempty"` - // The server provides inline values. - // - // @since 3.17.0 - InlineValueProvider *Or_ServerCapabilities_inlineValueProvider `json:"inlineValueProvider,omitempty"` - // The server provides inlay hints. - // - // @since 3.17.0 - InlayHintProvider interface{} `json:"inlayHintProvider,omitempty"` - // The server has support for pull model diagnostics. - // - // @since 3.17.0 - DiagnosticProvider *Or_ServerCapabilities_diagnosticProvider `json:"diagnosticProvider,omitempty"` - // Inline completion options used during static registration. - // - // @since 3.18.0 - // @proposed - InlineCompletionProvider *Or_ServerCapabilities_inlineCompletionProvider `json:"inlineCompletionProvider,omitempty"` - // Workspace specific server capabilities. - Workspace *WorkspaceOptions `json:"workspace,omitempty"` - // Experimental server capabilities. - Experimental interface{} `json:"experimental,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverCompletionItemOptions -type ServerCompletionItemOptions struct { - // The server has support for completion item label - // details (see also `CompletionItemLabelDetails`) when - // receiving a completion item in a resolve call. - // - // @since 3.17.0 - LabelDetailsSupport bool `json:"labelDetailsSupport,omitempty"` -} - -// Information about the server -// -// @since 3.15.0 -// @since 3.18.0 ServerInfo type name added. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#serverInfo -type ServerInfo struct { - // The name of the server as defined by the server. - Name string `json:"name"` - // The server's version as defined by the server. - Version string `json:"version,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#setTraceParams -type SetTraceParams struct { - Value TraceValue `json:"value"` -} - -// Client capabilities for the showDocument request. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentClientCapabilities -type ShowDocumentClientCapabilities struct { - // The client has support for the showDocument - // request. - Support bool `json:"support"` -} - -// Params to show a resource in the UI. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentParams -type ShowDocumentParams struct { - // The uri to show. - URI URI `json:"uri"` - // Indicates to show the resource in an external program. - // To show, for example, `https://code.visualstudio.com/` - // in the default WEB browser set `external` to `true`. - External bool `json:"external,omitempty"` - // An optional property to indicate whether the editor - // showing the document should take focus or not. - // Clients might ignore this property if an external - // program is started. - TakeFocus bool `json:"takeFocus,omitempty"` - // An optional selection range if the document is a text - // document. Clients might ignore the property if an - // external program is started or the file is not a text - // file. - Selection *Range `json:"selection,omitempty"` -} - -// The result of a showDocument request. -// -// @since 3.16.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showDocumentResult -type ShowDocumentResult struct { - // A boolean indicating if the show was successful. - Success bool `json:"success"` -} - -// The parameters of a notification message. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageParams -type ShowMessageParams struct { - // The message type. See {@link MessageType} - Type MessageType `json:"type"` - // The actual message. - Message string `json:"message"` -} - -// Show message request client capabilities -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageRequestClientCapabilities -type ShowMessageRequestClientCapabilities struct { - // Capabilities specific to the `MessageActionItem` type. - MessageActionItem *ClientShowMessageActionItemOptions `json:"messageActionItem,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#showMessageRequestParams -type ShowMessageRequestParams struct { - // The message type. See {@link MessageType} - Type MessageType `json:"type"` - // The actual message. - Message string `json:"message"` - // The message action items to present. - Actions []MessageActionItem `json:"actions,omitempty"` -} - -// Signature help represents the signature of something -// callable. There can be multiple signature but only one -// active and only one active parameter. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelp -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 - // the `SignatureHelp` has no signatures. - // - // 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 uint32 `json:"activeSignature,omitempty"` - // The active parameter of the active signature. - // - // If `null`, no parameter of the signature is active (for example a named - // argument that does not match any declared parameters). This is only valid - // if the client specifies the client capability - // `textDocument.signatureHelp.noActiveParameterSupport === true` - // - // 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 (but still nullable) to better express the active parameter if - // the active signature does have any. - ActiveParameter uint32 `json:"activeParameter,omitempty"` -} - -// Client Capabilities for a {@link SignatureHelpRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpClientCapabilities -type SignatureHelpClientCapabilities struct { - // Whether signature help supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client supports the following `SignatureInformation` - // specific properties. - SignatureInformation *ClientSignatureInformationOptions `json:"signatureInformation,omitempty"` - // The client supports to send additional context information for a - // `textDocument/signatureHelp` request. A client that opts into - // contextSupport will also support the `retriggerCharacters` on - // `SignatureHelpOptions`. - // - // @since 3.15.0 - ContextSupport bool `json:"contextSupport,omitempty"` -} - -// Additional information about the context in which a signature help request was triggered. -// -// @since 3.15.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpContext -type SignatureHelpContext struct { - // Action that caused signature help to be triggered. - TriggerKind SignatureHelpTriggerKind `json:"triggerKind"` - // Character that caused signature help to be triggered. - // - // This is undefined when `triggerKind !== SignatureHelpTriggerKind.TriggerCharacter` - TriggerCharacter string `json:"triggerCharacter,omitempty"` - // `true` if signature help was already showing when it was triggered. - // - // Retriggers occurs when the signature help is already active and can be caused by actions such as - // typing a trigger character, a cursor move, or document content changes. - IsRetrigger bool `json:"isRetrigger"` - // The currently active `SignatureHelp`. - // - // The `activeSignatureHelp` has its `SignatureHelp.activeSignature` field updated based on - // the user navigating through available signatures. - ActiveSignatureHelp *SignatureHelp `json:"activeSignatureHelp,omitempty"` -} - -// Server Capabilities for a {@link SignatureHelpRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpOptions -type SignatureHelpOptions struct { - // List of characters that trigger signature help automatically. - TriggerCharacters []string `json:"triggerCharacters,omitempty"` - // List of characters that re-trigger signature help. - // - // These trigger characters are only active when signature help is already showing. All trigger characters - // are also counted as re-trigger characters. - // - // @since 3.15.0 - RetriggerCharacters []string `json:"retriggerCharacters,omitempty"` - WorkDoneProgressOptions -} - -// Parameters for a {@link SignatureHelpRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpParams -type SignatureHelpParams struct { - // The signature help context. This is only available if the client specifies - // to send this using the client capability `textDocument.signatureHelp.contextSupport === true` - // - // @since 3.15.0 - Context *SignatureHelpContext `json:"context,omitempty"` - TextDocumentPositionParams - WorkDoneProgressParams -} - -// Registration options for a {@link SignatureHelpRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureHelpRegistrationOptions -type SignatureHelpRegistrationOptions struct { - TextDocumentRegistrationOptions - SignatureHelpOptions -} - -// How a signature help was triggered. -// -// @since 3.15.0 -type SignatureHelpTriggerKind uint32 - -// Represents the signature of something callable. A signature -// can have a label, like a function-name, a doc-comment, and -// a set of parameters. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#signatureInformation -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 *Or_SignatureInformation_documentation `json:"documentation,omitempty"` - // The parameters of this signature. - Parameters []ParameterInformation `json:"parameters,omitempty"` - // The index of the active parameter. - // - // If `null`, no parameter of the signature is active (for example a named - // argument that does not match any declared parameters). This is only valid - // if the client specifies the client capability - // `textDocument.signatureHelp.noActiveParameterSupport === true` - // - // If provided (or `null`), this is used in place of - // `SignatureHelp.activeParameter`. - // - // @since 3.16.0 - ActiveParameter uint32 `json:"activeParameter,omitempty"` -} - -// An interactive text edit. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#snippetTextEdit -type SnippetTextEdit struct { - // The range of the text document to be manipulated. - Range Range `json:"range"` - // The snippet to be inserted. - Snippet StringValue `json:"snippet"` - // The actual identifier of the snippet edit. - AnnotationID *ChangeAnnotationIdentifier `json:"annotationId,omitempty"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#staleRequestSupportOptions -type StaleRequestSupportOptions struct { - // The client will actively cancel the request. - Cancel bool `json:"cancel"` - // The list of requests for which the client - // will retry the request if it receives a - // response with error code `ContentModified` - RetryOnContentModified []string `json:"retryOnContentModified"` -} - -// Static registration options to be returned in the initialize -// request. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#staticRegistrationOptions -type StaticRegistrationOptions struct { - // The id used to register the request. The id can be used to deregister - // the request again. See also Registration#id. - ID string `json:"id,omitempty"` -} - -// A string value used as a snippet is a template which allows to insert text -// and to control the editor cursor when insertion happens. -// -// 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. Variables are defined with `$name` and -// `${name:default value}`. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#stringValue -type StringValue struct { - // The kind of string value. - Kind string `json:"kind"` - // The snippet string. - Value string `json:"value"` -} - -// Represents information about programming constructs like variables, classes, -// interfaces etc. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#symbolInformation -type SymbolInformation struct { - // extends BaseSymbolInformation - // Indicates if this symbol is deprecated. - // - // @deprecated Use tags instead - 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 than 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 an abstract - // syntax tree. It can therefore not be used to re-construct a hierarchy of - // the symbols. - Location Location `json:"location"` - // The name of this symbol. - Name string `json:"name"` - // The kind of this symbol. - Kind SymbolKind `json:"kind"` - // Tags for this symbol. - // - // @since 3.16.0 - Tags []SymbolTag `json:"tags,omitempty"` - // 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"` -} - -// A symbol kind. -type SymbolKind uint32 - -// Symbol tags are extra annotations that tweak the rendering of a symbol. -// -// @since 3.16 -type SymbolTag uint32 - -// Describe options to be used when registered for text document change events. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentChangeRegistrationOptions -type TextDocumentChangeRegistrationOptions struct { - // How documents are synced to the server. - SyncKind TextDocumentSyncKind `json:"syncKind"` - TextDocumentRegistrationOptions -} - -// Text document specific client capabilities. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentClientCapabilities -type TextDocumentClientCapabilities struct { - // Defines which synchronization capabilities the client supports. - Synchronization *TextDocumentSyncClientCapabilities `json:"synchronization,omitempty"` - // Capabilities specific to the `textDocument/completion` request. - Completion CompletionClientCapabilities `json:"completion,omitempty"` - // Capabilities specific to the `textDocument/hover` request. - Hover *HoverClientCapabilities `json:"hover,omitempty"` - // Capabilities specific to the `textDocument/signatureHelp` request. - SignatureHelp *SignatureHelpClientCapabilities `json:"signatureHelp,omitempty"` - // Capabilities specific to the `textDocument/declaration` request. - // - // @since 3.14.0 - Declaration *DeclarationClientCapabilities `json:"declaration,omitempty"` - // Capabilities specific to the `textDocument/definition` request. - Definition *DefinitionClientCapabilities `json:"definition,omitempty"` - // Capabilities specific to the `textDocument/typeDefinition` request. - // - // @since 3.6.0 - TypeDefinition *TypeDefinitionClientCapabilities `json:"typeDefinition,omitempty"` - // Capabilities specific to the `textDocument/implementation` request. - // - // @since 3.6.0 - Implementation *ImplementationClientCapabilities `json:"implementation,omitempty"` - // Capabilities specific to the `textDocument/references` request. - References *ReferenceClientCapabilities `json:"references,omitempty"` - // Capabilities specific to the `textDocument/documentHighlight` request. - DocumentHighlight *DocumentHighlightClientCapabilities `json:"documentHighlight,omitempty"` - // Capabilities specific to the `textDocument/documentSymbol` request. - DocumentSymbol DocumentSymbolClientCapabilities `json:"documentSymbol,omitempty"` - // Capabilities specific to the `textDocument/codeAction` request. - CodeAction CodeActionClientCapabilities `json:"codeAction,omitempty"` - // Capabilities specific to the `textDocument/codeLens` request. - CodeLens *CodeLensClientCapabilities `json:"codeLens,omitempty"` - // Capabilities specific to the `textDocument/documentLink` request. - DocumentLink *DocumentLinkClientCapabilities `json:"documentLink,omitempty"` - // Capabilities specific to the `textDocument/documentColor` and the - // `textDocument/colorPresentation` request. - // - // @since 3.6.0 - ColorProvider *DocumentColorClientCapabilities `json:"colorProvider,omitempty"` - // Capabilities specific to the `textDocument/formatting` request. - Formatting *DocumentFormattingClientCapabilities `json:"formatting,omitempty"` - // Capabilities specific to the `textDocument/rangeFormatting` request. - RangeFormatting *DocumentRangeFormattingClientCapabilities `json:"rangeFormatting,omitempty"` - // Capabilities specific to the `textDocument/onTypeFormatting` request. - OnTypeFormatting *DocumentOnTypeFormattingClientCapabilities `json:"onTypeFormatting,omitempty"` - // Capabilities specific to the `textDocument/rename` request. - Rename *RenameClientCapabilities `json:"rename,omitempty"` - // Capabilities specific to the `textDocument/foldingRange` request. - // - // @since 3.10.0 - FoldingRange *FoldingRangeClientCapabilities `json:"foldingRange,omitempty"` - // Capabilities specific to the `textDocument/selectionRange` request. - // - // @since 3.15.0 - SelectionRange *SelectionRangeClientCapabilities `json:"selectionRange,omitempty"` - // Capabilities specific to the `textDocument/publishDiagnostics` notification. - PublishDiagnostics PublishDiagnosticsClientCapabilities `json:"publishDiagnostics,omitempty"` - // Capabilities specific to the various call hierarchy requests. - // - // @since 3.16.0 - CallHierarchy *CallHierarchyClientCapabilities `json:"callHierarchy,omitempty"` - // Capabilities specific to the various semantic token request. - // - // @since 3.16.0 - SemanticTokens SemanticTokensClientCapabilities `json:"semanticTokens,omitempty"` - // Capabilities specific to the `textDocument/linkedEditingRange` request. - // - // @since 3.16.0 - LinkedEditingRange *LinkedEditingRangeClientCapabilities `json:"linkedEditingRange,omitempty"` - // Client capabilities specific to the `textDocument/moniker` request. - // - // @since 3.16.0 - Moniker *MonikerClientCapabilities `json:"moniker,omitempty"` - // Capabilities specific to the various type hierarchy requests. - // - // @since 3.17.0 - TypeHierarchy *TypeHierarchyClientCapabilities `json:"typeHierarchy,omitempty"` - // Capabilities specific to the `textDocument/inlineValue` request. - // - // @since 3.17.0 - InlineValue *InlineValueClientCapabilities `json:"inlineValue,omitempty"` - // Capabilities specific to the `textDocument/inlayHint` request. - // - // @since 3.17.0 - InlayHint *InlayHintClientCapabilities `json:"inlayHint,omitempty"` - // Capabilities specific to the diagnostic pull model. - // - // @since 3.17.0 - Diagnostic *DiagnosticClientCapabilities `json:"diagnostic,omitempty"` - // Client capabilities specific to inline completions. - // - // @since 3.18.0 - // @proposed - InlineCompletion *InlineCompletionClientCapabilities `json:"inlineCompletion,omitempty"` -} - -// An event describing a change to a text document. If only a text is provided -// it is considered to be the full content of the document. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangeEvent -type TextDocumentContentChangeEvent = Or_TextDocumentContentChangeEvent // (alias) -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangePartial -type TextDocumentContentChangePartial struct { - // The range of the document that changed. - Range *Range `json:"range,omitempty"` - // The optional length of the range that got replaced. - // - // @deprecated use range instead. - RangeLength uint32 `json:"rangeLength,omitempty"` - // The new text for the provided range. - Text string `json:"text"` -} - -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentChangeWholeDocument -type TextDocumentContentChangeWholeDocument struct { - // The new text of the whole document. - Text string `json:"text"` -} - -// Client capabilities for a text document content provider. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentClientCapabilities -type TextDocumentContentClientCapabilities struct { - // Text document content provider supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` -} - -// Text document content provider options. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentOptions -type TextDocumentContentOptions struct { - // The scheme for which the server provides content. - Scheme string `json:"scheme"` -} - -// Parameters for the `workspace/textDocumentContent` request. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentParams -type TextDocumentContentParams struct { - // The uri of the text document. - URI DocumentUri `json:"uri"` -} - -// Parameters for the `workspace/textDocumentContent/refresh` request. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentRefreshParams -type TextDocumentContentRefreshParams struct { - // The uri of the text document to refresh. - URI DocumentUri `json:"uri"` -} - -// Text document content provider registration options. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentContentRegistrationOptions -type TextDocumentContentRegistrationOptions struct { - TextDocumentContentOptions - StaticRegistrationOptions -} - -// Describes textual changes on a text document. A TextDocumentEdit describes all changes -// on a document version Si and after they are applied move the document to version Si+1. -// So the creator of a TextDocumentEdit doesn't need to sort the array of edits or do any -// kind of ordering. However the edits must be non overlapping. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentEdit -type TextDocumentEdit struct { - // The text document to change. - TextDocument OptionalVersionedTextDocumentIdentifier `json:"textDocument"` - // The edits to be applied. - // - // @since 3.16.0 - support for AnnotatedTextEdit. This is guarded using a - // client capability. - // - // @since 3.18.0 - support for SnippetTextEdit. This is guarded using a - // client capability. - Edits []Or_TextDocumentEdit_edits_Elem `json:"edits"` -} - -// A document filter denotes a document by different properties like -// the {@link TextDocument.languageId language}, the {@link Uri.scheme scheme} of -// its resource, or a glob-pattern that is applied to the {@link TextDocument.fileName path}. -// -// Glob patterns can have the following syntax: -// -// - `*` to match one or more characters in a path segment -// - `?` to match on one character in a path segment -// - `**` to match any number of path segments, including none -// - `{}` to group sub patterns into an OR expression. (e.g. `**/*.{ts,js}` matches all TypeScript and JavaScript files) -// - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …) -// - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`) -// -// @sample A language filter that applies to typescript files on disk: `{ language: 'typescript', scheme: 'file' }` -// @sample A language filter that applies to all package.json paths: `{ language: 'json', pattern: '**package.json' }` -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilter -type TextDocumentFilter = Or_TextDocumentFilter // (alias) -// A document filter where `language` is required field. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterLanguage -type TextDocumentFilterLanguage struct { - // A language id, like `typescript`. - Language string `json:"language"` - // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. - Scheme string `json:"scheme,omitempty"` - // A glob pattern, like **/*.{ts,js}. See TextDocumentFilter for examples. - // - // @since 3.18.0 - support for relative patterns. - Pattern *GlobPattern `json:"pattern,omitempty"` -} - -// A document filter where `pattern` is required field. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterPattern -type TextDocumentFilterPattern struct { - // A language id, like `typescript`. - Language string `json:"language,omitempty"` - // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. - Scheme string `json:"scheme,omitempty"` - // A glob pattern, like **/*.{ts,js}. See TextDocumentFilter for examples. - // - // @since 3.18.0 - support for relative patterns. - Pattern GlobPattern `json:"pattern"` -} - -// A document filter where `scheme` is required field. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentFilterScheme -type TextDocumentFilterScheme struct { - // A language id, like `typescript`. - Language string `json:"language,omitempty"` - // A Uri {@link Uri.scheme scheme}, like `file` or `untitled`. - Scheme string `json:"scheme"` - // A glob pattern, like **/*.{ts,js}. See TextDocumentFilter for examples. - // - // @since 3.18.0 - support for relative patterns. - Pattern *GlobPattern `json:"pattern,omitempty"` -} - -// A literal to identify a text document in the client. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentIdentifier -type TextDocumentIdentifier struct { - // The text document's uri. - URI DocumentUri `json:"uri"` -} - -// An item to transfer a text document from the client to the -// server. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentItem -type TextDocumentItem struct { - // The text document's uri. - URI DocumentUri `json:"uri"` - // The text document's language identifier. - LanguageID LanguageKind `json:"languageId"` - // The version number of this document (it will increase after each - // change, including undo/redo). - Version int32 `json:"version"` - // The content of the opened text document. - Text string `json:"text"` -} - -// A parameter literal used in requests to pass a text document and a position inside that -// document. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentPositionParams -type TextDocumentPositionParams struct { - // The text document. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The position inside the text document. - Position Position `json:"position"` -} - -// General text document registration options. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentRegistrationOptions -type TextDocumentRegistrationOptions struct { - // A document selector to identify the scope of the registration. If set to null - // the document selector provided on the client side will be used. - DocumentSelector DocumentSelector `json:"documentSelector"` -} - -// Represents reasons why a text document is saved. -type TextDocumentSaveReason uint32 - -// Save registration options. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSaveRegistrationOptions -type TextDocumentSaveRegistrationOptions struct { - TextDocumentRegistrationOptions - SaveOptions -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSyncClientCapabilities -type TextDocumentSyncClientCapabilities struct { - // Whether text document synchronization supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client supports sending will save notifications. - WillSave bool `json:"willSave,omitempty"` - // 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 bool `json:"willSaveWaitUntil,omitempty"` - // The client supports did save notifications. - DidSave bool `json:"didSave,omitempty"` -} - -// Defines how the host (editor) should sync -// document changes to the language server. -type TextDocumentSyncKind uint32 - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textDocumentSyncOptions -type TextDocumentSyncOptions struct { - // Open and close notifications are sent to the server. If omitted open close notification should not - // be sent. - OpenClose bool `json:"openClose,omitempty"` - // Change notifications are sent to the server. See TextDocumentSyncKind.None, TextDocumentSyncKind.Full - // and TextDocumentSyncKind.Incremental. If omitted it defaults to TextDocumentSyncKind.None. - Change TextDocumentSyncKind `json:"change,omitempty"` - // If present will save notifications are sent to the server. If omitted the notification should not be - // sent. - WillSave bool `json:"willSave,omitempty"` - // If present will save wait until requests are sent to the server. If omitted the request should not be - // sent. - WillSaveWaitUntil bool `json:"willSaveWaitUntil,omitempty"` - // If present save notifications are sent to the server. If omitted the notification should not be - // sent. - Save *SaveOptions `json:"save,omitempty"` -} - -// A text edit applicable to a text document. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#textEdit -type TextEdit struct { - // The range of the text document to be manipulated. To insert - // text into a document create a range where start === end. - Range Range `json:"range"` - // The string to be inserted. For delete operations use an - // empty string. - NewText string `json:"newText"` -} -type TokenFormat string -type TraceValue string - -// created for Tuple -type Tuple_ParameterInformation_label_Item1 struct { - Fld0 uint32 `json:"fld0"` - Fld1 uint32 `json:"fld1"` -} - -// Since 3.6.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionClientCapabilities -type TypeDefinitionClientCapabilities struct { - // Whether implementation supports dynamic registration. If this is set to `true` - // the client supports the new `TypeDefinitionRegistrationOptions` return value - // for the corresponding server capability as well. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // The client supports additional metadata in the form of definition links. - // - // Since 3.14.0 - LinkSupport bool `json:"linkSupport,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionOptions -type TypeDefinitionOptions struct { - WorkDoneProgressOptions -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionParams -type TypeDefinitionParams struct { - TextDocumentPositionParams - WorkDoneProgressParams - PartialResultParams -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeDefinitionRegistrationOptions -type TypeDefinitionRegistrationOptions struct { - TextDocumentRegistrationOptions - TypeDefinitionOptions - StaticRegistrationOptions -} - -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyClientCapabilities -type TypeHierarchyClientCapabilities struct { - // 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 bool `json:"dynamicRegistration,omitempty"` -} - -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyItem -type TypeHierarchyItem struct { - // The name of this item. - Name string `json:"name"` - // The kind of this item. - Kind SymbolKind `json:"kind"` - // Tags for this item. - Tags []SymbolTag `json:"tags,omitempty"` - // More detail for this item, e.g. the signature of a function. - Detail string `json:"detail,omitempty"` - // The resource identifier of this item. - URI DocumentUri `json:"uri"` - // The range enclosing this symbol not including leading/trailing whitespace - // but everything else, e.g. comments and code. - 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 - // {@link TypeHierarchyItem.range `range`}. - SelectionRange Range `json:"selectionRange"` - // A data entry field that is preserved between a type hierarchy prepare and - // supertypes or subtypes requests. It could also be used to identify the - // type hierarchy in the server, helping improve the performance on - // resolving supertypes and subtypes. - Data interface{} `json:"data,omitempty"` -} - -// Type hierarchy options used during static registration. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyOptions -type TypeHierarchyOptions struct { - WorkDoneProgressOptions -} - -// The parameter of a `textDocument/prepareTypeHierarchy` request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyPrepareParams -type TypeHierarchyPrepareParams struct { - TextDocumentPositionParams - WorkDoneProgressParams -} - -// Type hierarchy options used during static or dynamic registration. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchyRegistrationOptions -type TypeHierarchyRegistrationOptions struct { - TextDocumentRegistrationOptions - TypeHierarchyOptions - StaticRegistrationOptions -} - -// The parameter of a `typeHierarchy/subtypes` request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchySubtypesParams -type TypeHierarchySubtypesParams struct { - Item TypeHierarchyItem `json:"item"` - WorkDoneProgressParams - PartialResultParams -} - -// The parameter of a `typeHierarchy/supertypes` request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#typeHierarchySupertypesParams -type TypeHierarchySupertypesParams struct { - Item TypeHierarchyItem `json:"item"` - WorkDoneProgressParams - PartialResultParams -} - -// A diagnostic report indicating that the last returned -// report is still accurate. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unchangedDocumentDiagnosticReport -type UnchangedDocumentDiagnosticReport struct { - // A document diagnostic report indicating - // no changes to the last result. A server can - // only return `unchanged` if result ids are - // provided. - Kind string `json:"kind"` - // A result id which will be sent on the next - // diagnostic request for the same document. - ResultID string `json:"resultId"` -} - -// Moniker uniqueness level to define scope of the moniker. -// -// @since 3.16.0 -type UniquenessLevel string - -// General parameters to unregister a request or notification. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unregistration -type Unregistration struct { - // The id used to unregister the request or notification. Usually an id - // provided during the register request. - ID string `json:"id"` - // The method to unregister for. - Method string `json:"method"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#unregistrationParams -type UnregistrationParams struct { - Unregisterations []Unregistration `json:"unregisterations"` -} - -// A versioned notebook document identifier. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#versionedNotebookDocumentIdentifier -type VersionedNotebookDocumentIdentifier struct { - // The version number of this notebook document. - Version int32 `json:"version"` - // The notebook document's uri. - URI URI `json:"uri"` -} - -// A text document identifier to denote a specific version of a text document. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#versionedTextDocumentIdentifier -type VersionedTextDocumentIdentifier struct { - // The version number of this document. - Version int32 `json:"version"` - TextDocumentIdentifier -} -type WatchKind = uint32 // The parameters sent in a will save text document notification. -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#willSaveTextDocumentParams -type WillSaveTextDocumentParams struct { - // The document that will be saved. - TextDocument TextDocumentIdentifier `json:"textDocument"` - // The 'TextDocumentSaveReason'. - Reason TextDocumentSaveReason `json:"reason"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#windowClientCapabilities -type WindowClientCapabilities struct { - // It indicates whether the client supports server initiated - // progress using the `window/workDoneProgress/create` request. - // - // The capability also controls Whether client supports handling - // of progress notifications. If set servers are allowed to report a - // `workDoneProgress` property in the request specific server - // capabilities. - // - // @since 3.15.0 - WorkDoneProgress bool `json:"workDoneProgress,omitempty"` - // Capabilities specific to the showMessage request. - // - // @since 3.16.0 - ShowMessage *ShowMessageRequestClientCapabilities `json:"showMessage,omitempty"` - // Capabilities specific to the showDocument request. - // - // @since 3.16.0 - ShowDocument *ShowDocumentClientCapabilities `json:"showDocument,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressBegin -type WorkDoneProgressBegin struct { - Kind string `json:"kind"` - // Mandatory title of the progress operation. Used to briefly inform about - // the kind of operation being performed. - // - // Examples: "Indexing" or "Linking dependencies". - Title string `json:"title"` - // Controls if a cancel button should show to allow the user to cancel the - // long running operation. Clients that don't support cancellation are allowed - // to ignore the setting. - Cancellable bool `json:"cancellable,omitempty"` - // Optional, more detailed associated progress message. Contains - // complementary information to the `title`. - // - // Examples: "3/25 files", "project/src/module2", "node_modules/some_dep". - // If unset, the previous progress message (if any) is still valid. - Message string `json:"message,omitempty"` - // Optional progress percentage to display (value 100 is considered 100%). - // If not provided infinite progress is assumed and clients are allowed - // to ignore the `percentage` value in subsequent in report notifications. - // - // The value should be steadily rising. Clients are free to ignore values - // that are not following this rule. The value range is [0, 100]. - Percentage uint32 `json:"percentage,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressCancelParams -type WorkDoneProgressCancelParams struct { - // The token to be used to report progress. - Token ProgressToken `json:"token"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressCreateParams -type WorkDoneProgressCreateParams struct { - // The token to be used to report progress. - Token ProgressToken `json:"token"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressEnd -type WorkDoneProgressEnd struct { - Kind string `json:"kind"` - // Optional, a final message indicating to for example indicate the outcome - // of the operation. - Message string `json:"message,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressOptions -type WorkDoneProgressOptions struct { - WorkDoneProgress bool `json:"workDoneProgress,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressParams -type WorkDoneProgressParams struct { - // An optional token that a server can use to report work done progress. - WorkDoneToken ProgressToken `json:"workDoneToken,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workDoneProgressReport -type WorkDoneProgressReport struct { - Kind string `json:"kind"` - // Controls enablement state of a cancel button. - // - // Clients that don't support cancellation or don't support controlling the button's - // enablement state are allowed to ignore the property. - Cancellable bool `json:"cancellable,omitempty"` - // Optional, more detailed associated progress message. Contains - // complementary information to the `title`. - // - // Examples: "3/25 files", "project/src/module2", "node_modules/some_dep". - // If unset, the previous progress message (if any) is still valid. - Message string `json:"message,omitempty"` - // Optional progress percentage to display (value 100 is considered 100%). - // If not provided infinite progress is assumed and clients are allowed - // to ignore the `percentage` value in subsequent in report notifications. - // - // The value should be steadily rising. Clients are free to ignore values - // that are not following this rule. The value range is [0, 100] - Percentage uint32 `json:"percentage,omitempty"` -} - -// Workspace specific client capabilities. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceClientCapabilities -type WorkspaceClientCapabilities struct { - // The client supports applying batch edits - // to the workspace by supporting the request - // 'workspace/applyEdit' - ApplyEdit bool `json:"applyEdit,omitempty"` - // Capabilities specific to `WorkspaceEdit`s. - WorkspaceEdit *WorkspaceEditClientCapabilities `json:"workspaceEdit,omitempty"` - // Capabilities specific to the `workspace/didChangeConfiguration` notification. - DidChangeConfiguration DidChangeConfigurationClientCapabilities `json:"didChangeConfiguration,omitempty"` - // Capabilities specific to the `workspace/didChangeWatchedFiles` notification. - DidChangeWatchedFiles DidChangeWatchedFilesClientCapabilities `json:"didChangeWatchedFiles,omitempty"` - // Capabilities specific to the `workspace/symbol` request. - Symbol *WorkspaceSymbolClientCapabilities `json:"symbol,omitempty"` - // Capabilities specific to the `workspace/executeCommand` request. - ExecuteCommand *ExecuteCommandClientCapabilities `json:"executeCommand,omitempty"` - // The client has support for workspace folders. - // - // @since 3.6.0 - WorkspaceFolders bool `json:"workspaceFolders,omitempty"` - // The client supports `workspace/configuration` requests. - // - // @since 3.6.0 - Configuration bool `json:"configuration,omitempty"` - // Capabilities specific to the semantic token requests scoped to the - // workspace. - // - // @since 3.16.0. - SemanticTokens *SemanticTokensWorkspaceClientCapabilities `json:"semanticTokens,omitempty"` - // Capabilities specific to the code lens requests scoped to the - // workspace. - // - // @since 3.16.0. - CodeLens *CodeLensWorkspaceClientCapabilities `json:"codeLens,omitempty"` - // The client has support for file notifications/requests for user operations on files. - // - // Since 3.16.0 - FileOperations *FileOperationClientCapabilities `json:"fileOperations,omitempty"` - // Capabilities specific to the inline values requests scoped to the - // workspace. - // - // @since 3.17.0. - InlineValue *InlineValueWorkspaceClientCapabilities `json:"inlineValue,omitempty"` - // Capabilities specific to the inlay hint requests scoped to the - // workspace. - // - // @since 3.17.0. - InlayHint *InlayHintWorkspaceClientCapabilities `json:"inlayHint,omitempty"` - // Capabilities specific to the diagnostic requests scoped to the - // workspace. - // - // @since 3.17.0. - Diagnostics *DiagnosticWorkspaceClientCapabilities `json:"diagnostics,omitempty"` - // Capabilities specific to the folding range requests scoped to the workspace. - // - // @since 3.18.0 - // @proposed - FoldingRange *FoldingRangeWorkspaceClientCapabilities `json:"foldingRange,omitempty"` - // Capabilities specific to the `workspace/textDocumentContent` request. - // - // @since 3.18.0 - // @proposed - TextDocumentContent *TextDocumentContentClientCapabilities `json:"textDocumentContent,omitempty"` -} - -// Parameters of the workspace diagnostic request. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticParams -type WorkspaceDiagnosticParams struct { - // The additional identifier provided during registration. - Identifier string `json:"identifier,omitempty"` - // The currently known diagnostic reports with their - // previous result ids. - PreviousResultIds []PreviousResultId `json:"previousResultIds"` - WorkDoneProgressParams - PartialResultParams -} - -// A workspace diagnostic report. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticReport -type WorkspaceDiagnosticReport struct { - Items []WorkspaceDocumentDiagnosticReport `json:"items"` -} - -// A partial result for a workspace diagnostic report. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDiagnosticReportPartialResult -type WorkspaceDiagnosticReportPartialResult struct { - Items []WorkspaceDocumentDiagnosticReport `json:"items"` -} - -// A workspace diagnostic document report. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceDocumentDiagnosticReport -type WorkspaceDocumentDiagnosticReport = Or_WorkspaceDocumentDiagnosticReport // (alias) -// A workspace edit represents changes to many resources managed in the workspace. The edit -// should either provide `changes` or `documentChanges`. If documentChanges are present -// they are preferred over `changes` if the client can handle versioned document edits. -// -// Since version 3.13.0 a workspace edit can contain resource operations as well. If resource -// operations are present clients need to execute the operations in the order in which they -// are provided. So a workspace edit for example can consist of the following two changes: -// (1) a create file a.txt and (2) a text document edit which insert text into file a.txt. -// -// An invalid sequence (e.g. (1) delete file a.txt and (2) insert text into file a.txt) will -// cause failure of the operation. How the client recovers from the failure is described by -// the client capability: `workspace.workspaceEdit.failureHandling` -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEdit -type WorkspaceEdit struct { - // Holds changes to existing resources. - Changes map[DocumentUri][]TextEdit `json:"changes,omitempty"` - // Depending on the client capability `workspace.workspaceEdit.resourceOperations` document changes - // are either an array of `TextDocumentEdit`s to express changes to n different text documents - // where each text document edit addresses a specific version of a text document. Or it can contain - // above `TextDocumentEdit`s mixed with create, rename and delete file / folder operations. - // - // Whether a client supports versioned document edits is expressed via - // `workspace.workspaceEdit.documentChanges` client capability. - // - // If a client neither supports `documentChanges` nor `workspace.workspaceEdit.resourceOperations` then - // only plain `TextEdit`s using the `changes` property are supported. - DocumentChanges []DocumentChange `json:"documentChanges,omitempty"` - // A map of change annotations that can be referenced in `AnnotatedTextEdit`s or create, rename and - // delete file / folder operations. - // - // Whether clients honor this property depends on the client capability `workspace.changeAnnotationSupport`. - // - // @since 3.16.0 - ChangeAnnotations map[ChangeAnnotationIdentifier]ChangeAnnotation `json:"changeAnnotations,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEditClientCapabilities -type WorkspaceEditClientCapabilities struct { - // The client supports versioned document changes in `WorkspaceEdit`s - DocumentChanges bool `json:"documentChanges,omitempty"` - // The resource operations the client supports. Clients should at least - // support 'create', 'rename' and 'delete' files and folders. - // - // @since 3.13.0 - ResourceOperations []ResourceOperationKind `json:"resourceOperations,omitempty"` - // The failure handling strategy of a client if applying the workspace edit - // fails. - // - // @since 3.13.0 - FailureHandling *FailureHandlingKind `json:"failureHandling,omitempty"` - // Whether the client normalizes line endings to the client specific - // setting. - // If set to `true` the client will normalize line ending characters - // in a workspace edit to the client-specified new line - // character. - // - // @since 3.16.0 - NormalizesLineEndings bool `json:"normalizesLineEndings,omitempty"` - // Whether the client in general supports change annotations on text edits, - // create file, rename file and delete file changes. - // - // @since 3.16.0 - ChangeAnnotationSupport *ChangeAnnotationsSupportOptions `json:"changeAnnotationSupport,omitempty"` - // Whether the client supports `WorkspaceEditMetadata` in `WorkspaceEdit`s. - // - // @since 3.18.0 - // @proposed - MetadataSupport bool `json:"metadataSupport,omitempty"` - // Whether the client supports snippets as text edits. - // - // @since 3.18.0 - // @proposed - SnippetEditSupport bool `json:"snippetEditSupport,omitempty"` -} - -// Additional data about a workspace edit. -// -// @since 3.18.0 -// @proposed -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceEditMetadata -type WorkspaceEditMetadata struct { - // Signal to the editor that this edit is a refactoring. - IsRefactoring bool `json:"isRefactoring,omitempty"` -} - -// A workspace folder inside a client. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFolder -type WorkspaceFolder struct { - // The associated URI for this workspace folder. - URI URI `json:"uri"` - // The name of the workspace folder. Used to refer to this - // workspace folder in the user interface. - Name string `json:"name"` -} - -// The workspace folder change event. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersChangeEvent -type WorkspaceFoldersChangeEvent struct { - // The array of added workspace folders - Added []WorkspaceFolder `json:"added"` - // The array of the removed workspace folders - Removed []WorkspaceFolder `json:"removed"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersInitializeParams -type WorkspaceFoldersInitializeParams struct { - // The workspace folders configured in the client when the server starts. - // - // This property is only available if the client supports workspace folders. - // It can be `null` if the client supports workspace folders but none are - // configured. - // - // @since 3.6.0 - WorkspaceFolders []WorkspaceFolder `json:"workspaceFolders,omitempty"` -} - -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFoldersServerCapabilities -type WorkspaceFoldersServerCapabilities struct { - // The server has support for workspace folders - Supported bool `json:"supported,omitempty"` - // Whether the server wants to receive workspace folder - // change notifications. - // - // If a string is provided the string is treated as an ID - // under which the notification is registered on the client - // side. The ID can be used to unregister for these events - // using the `client/unregisterCapability` request. - ChangeNotifications *Or_WorkspaceFoldersServerCapabilities_changeNotifications `json:"changeNotifications,omitempty"` -} - -// A full document diagnostic report for a workspace diagnostic result. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceFullDocumentDiagnosticReport -type WorkspaceFullDocumentDiagnosticReport struct { - // The URI for which diagnostic information is reported. - URI DocumentUri `json:"uri"` - // The version number for which the diagnostics are reported. - // If the document is not marked as open `null` can be provided. - Version int32 `json:"version"` - FullDocumentDiagnosticReport -} - -// Defines workspace specific capabilities of the server. -// -// @since 3.18.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceOptions -type WorkspaceOptions struct { - // The server supports workspace folder. - // - // @since 3.6.0 - WorkspaceFolders *WorkspaceFoldersServerCapabilities `json:"workspaceFolders,omitempty"` - // The server is interested in notifications/requests for operations on files. - // - // @since 3.16.0 - FileOperations *FileOperationOptions `json:"fileOperations,omitempty"` - // The server supports the `workspace/textDocumentContent` request. - // - // @since 3.18.0 - // @proposed - TextDocumentContent *Or_WorkspaceOptions_textDocumentContent `json:"textDocumentContent,omitempty"` -} - -// A special workspace symbol that supports locations without a range. -// -// See also SymbolInformation. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbol -type WorkspaceSymbol struct { - // The location of the symbol. Whether a server is allowed to - // return a location without a range depends on the client - // capability `workspace.symbol.resolveSupport`. - // - // See SymbolInformation#location for more details. - Location Or_WorkspaceSymbol_location `json:"location"` - // A data entry field that is preserved on a workspace symbol between a - // workspace symbol request and a workspace symbol resolve request. - Data interface{} `json:"data,omitempty"` - BaseSymbolInformation -} - -// Client capabilities for a {@link WorkspaceSymbolRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolClientCapabilities -type WorkspaceSymbolClientCapabilities struct { - // Symbol request supports dynamic registration. - DynamicRegistration bool `json:"dynamicRegistration,omitempty"` - // Specific capabilities for the `SymbolKind` in the `workspace/symbol` request. - SymbolKind *ClientSymbolKindOptions `json:"symbolKind,omitempty"` - // The client supports tags on `SymbolInformation`. - // Clients supporting tags have to handle unknown tags gracefully. - // - // @since 3.16.0 - TagSupport *ClientSymbolTagOptions `json:"tagSupport,omitempty"` - // The client support partial workspace symbols. The client will send the - // request `workspaceSymbol/resolve` to the server to resolve additional - // properties. - // - // @since 3.17.0 - ResolveSupport *ClientSymbolResolveOptions `json:"resolveSupport,omitempty"` -} - -// Server capabilities for a {@link WorkspaceSymbolRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolOptions -type WorkspaceSymbolOptions struct { - // The server provides support to resolve additional - // information for a workspace symbol. - // - // @since 3.17.0 - ResolveProvider bool `json:"resolveProvider,omitempty"` - WorkDoneProgressOptions -} - -// The parameters of a {@link WorkspaceSymbolRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolParams -type WorkspaceSymbolParams struct { - // A query string to filter symbols by. Clients may send an empty - // string here to request all symbols. - // - // The `query`-parameter should be interpreted in a *relaxed way* as editors - // will apply their own highlighting and scoring on the results. A good rule - // of thumb is to match case-insensitive and to simply check that the - // characters of *query* appear in their order in a candidate symbol. - // Servers shouldn't use prefix, substring, or similar strict matching. - Query string `json:"query"` - WorkDoneProgressParams - PartialResultParams -} - -// Registration options for a {@link WorkspaceSymbolRequest}. -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceSymbolRegistrationOptions -type WorkspaceSymbolRegistrationOptions struct { - WorkspaceSymbolOptions -} - -// An unchanged document diagnostic report for a workspace diagnostic result. -// -// @since 3.17.0 -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#workspaceUnchangedDocumentDiagnosticReport -type WorkspaceUnchangedDocumentDiagnosticReport struct { - // The URI for which diagnostic information is reported. - URI DocumentUri `json:"uri"` - // The version number for which the diagnostics are reported. - // If the document is not marked as open `null` can be provided. - Version int32 `json:"version"` - UnchangedDocumentDiagnosticReport -} - -// The initialize parameters -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#_InitializeParams -type XInitializeParams struct { - // The process Id of the parent process that started - // the server. - // - // Is `null` if the process has not been started by another process. - // If the parent process is not alive then the server should exit. - ProcessID int32 `json:"processId"` - // Information about the client - // - // @since 3.15.0 - ClientInfo *ClientInfo `json:"clientInfo,omitempty"` - // The locale the client is currently showing the user interface - // in. This must not necessarily be the locale of the operating - // system. - // - // Uses IETF language tags as the value's syntax - // (See https://en.wikipedia.org/wiki/IETF_language_tag) - // - // @since 3.16.0 - Locale string `json:"locale,omitempty"` - // The rootPath of the workspace. Is null - // if no folder is open. - // - // @deprecated in favour of rootUri. - RootPath string `json:"rootPath,omitempty"` - // The rootUri of the workspace. Is null if no - // folder is open. If both `rootPath` and `rootUri` are set - // `rootUri` wins. - // - // @deprecated in favour of workspaceFolders. - RootURI DocumentUri `json:"rootUri"` - // The capabilities provided by the client (editor or tool) - Capabilities ClientCapabilities `json:"capabilities"` - // User provided initialization options. - InitializationOptions interface{} `json:"initializationOptions,omitempty"` - // The initial trace setting. If omitted trace is disabled ('off'). - Trace *TraceValue `json:"trace,omitempty"` - WorkDoneProgressParams -} - -// The initialize parameters -// -// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification#_InitializeParams -type _InitializeParams struct { - // The process Id of the parent process that started - // the server. - // - // Is `null` if the process has not been started by another process. - // If the parent process is not alive then the server should exit. - ProcessID int32 `json:"processId"` - // Information about the client - // - // @since 3.15.0 - ClientInfo *ClientInfo `json:"clientInfo,omitempty"` - // The locale the client is currently showing the user interface - // in. This must not necessarily be the locale of the operating - // system. - // - // Uses IETF language tags as the value's syntax - // (See https://en.wikipedia.org/wiki/IETF_language_tag) - // - // @since 3.16.0 - Locale string `json:"locale,omitempty"` - // The rootPath of the workspace. Is null - // if no folder is open. - // - // @deprecated in favour of rootUri. - RootPath string `json:"rootPath,omitempty"` - // The rootUri of the workspace. Is null if no - // folder is open. If both `rootPath` and `rootUri` are set - // `rootUri` wins. - // - // @deprecated in favour of workspaceFolders. - RootURI DocumentUri `json:"rootUri"` - // The capabilities provided by the client (editor or tool) - Capabilities ClientCapabilities `json:"capabilities"` - // User provided initialization options. - InitializationOptions interface{} `json:"initializationOptions,omitempty"` - // The initial trace setting. If omitted trace is disabled ('off'). - Trace *TraceValue `json:"trace,omitempty"` - WorkDoneProgressParams -} - -const ( - // A set of predefined code action kinds - // Empty kind. - Empty CodeActionKind = "" - // 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 move actions: `refactor.move` - // - // Example move actions: - // - // - // - Move a function to a new file - // - Move a property between classes - // - Move method to base class - // - ... - // - // @since 3.18.0 - // @proposed - RefactorMove CodeActionKind = "refactor.move" - // 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" - // Base kind for auto-fix source actions: `source.fixAll`. - // - // Fix all actions automatically fix errors that have a clear fix that do not require user input. - // They should not suppress errors or perform unsafe fixes such as generating new types or classes. - // - // @since 3.15.0 - SourceFixAll CodeActionKind = "source.fixAll" - // Base kind for all code actions applying to the entire notebook's scope. CodeActionKinds using - // this should always begin with `notebook.` - // - // @since 3.18.0 - Notebook CodeActionKind = "notebook" - // The reason why code actions were requested. - // - // @since 3.17.0 - // Code actions were explicitly requested by the user or by an extension. - CodeActionInvoked CodeActionTriggerKind = 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. - CodeActionAutomatic CodeActionTriggerKind = 2 - // The kind of a completion entry. - 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 - // Completion item tags are extra annotations that tweak the rendering of a completion - // item. - // - // @since 3.15.0 - // Render a completion as obsolete, usually using a strike-out. - ComplDeprecated CompletionItemTag = 1 - // How a completion was triggered - // 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 current completion list is incomplete - TriggerForIncompleteCompletions CompletionTriggerKind = 3 - // The diagnostic's severity. - // Reports an error. - SeverityError DiagnosticSeverity = 1 - // Reports a warning. - SeverityWarning DiagnosticSeverity = 2 - // Reports an information. - SeverityInformation DiagnosticSeverity = 3 - // Reports a hint. - SeverityHint DiagnosticSeverity = 4 - // The diagnostic tags. - // - // @since 3.15.0 - // Unused or unnecessary code. - // - // Clients are allowed to render diagnostics with this tag faded out instead of having - // an error squiggle. - Unnecessary DiagnosticTag = 1 - // Deprecated or obsolete code. - // - // Clients are allowed to rendered diagnostics with this tag strike through. - Deprecated DiagnosticTag = 2 - // The document diagnostic report kinds. - // - // @since 3.17.0 - // A diagnostic report with a full - // set of problems. - DiagnosticFull DocumentDiagnosticReportKind = "full" - // A report indicating that the last - // returned report is still accurate. - DiagnosticUnchanged DocumentDiagnosticReportKind = "unchanged" - // A document highlight kind. - // A textual occurrence. - Text DocumentHighlightKind = 1 - // Read-access of a symbol, like reading a variable. - Read DocumentHighlightKind = 2 - // Write-access of a symbol, like writing to a variable. - Write DocumentHighlightKind = 3 - // Predefined error codes. - ParseError ErrorCodes = -32700 - InvalidRequest ErrorCodes = -32600 - MethodNotFound ErrorCodes = -32601 - InvalidParams ErrorCodes = -32602 - InternalError ErrorCodes = -32603 - // Error code indicating that a server received a notification or - // request before the server has received the `initialize` request. - ServerNotInitialized ErrorCodes = -32002 - UnknownErrorCode ErrorCodes = -32001 - // Applying the workspace change is simply aborted if one of the changes provided - // fails. All operations executed before the failing operation stay executed. - Abort FailureHandlingKind = "abort" - // All operations are executed transactional. That means they either all - // succeed or no changes at all are applied to the workspace. - Transactional FailureHandlingKind = "transactional" - // If the workspace edit contains only textual file changes they are executed transactional. - // If resource changes (create, rename or delete file) are part of the change the failure - // handling strategy is abort. - TextOnlyTransactional FailureHandlingKind = "textOnlyTransactional" - // The client tries to undo the operations already executed. But there is no - // guarantee that this is succeeding. - Undo FailureHandlingKind = "undo" - // The file event type - // The file got created. - Created FileChangeType = 1 - // The file got changed. - Changed FileChangeType = 2 - // The file got deleted. - Deleted FileChangeType = 3 - // A pattern kind describing if a glob pattern matches a file a folder or - // both. - // - // @since 3.16.0 - // The pattern matches a file only. - FilePattern FileOperationPatternKind = "file" - // The pattern matches a folder only. - FolderPattern FileOperationPatternKind = "folder" - // A set of predefined range kinds. - // Folding range for a comment - Comment FoldingRangeKind = "comment" - // Folding range for an import or include - Imports FoldingRangeKind = "imports" - // Folding range for a region (e.g. `#region`) - Region FoldingRangeKind = "region" - // Inlay hint kinds. - // - // @since 3.17.0 - // An inlay hint that for a type annotation. - Type InlayHintKind = 1 - // An inlay hint that is for a parameter. - Parameter InlayHintKind = 2 - // Describes how an {@link InlineCompletionItemProvider inline completion provider} was triggered. - // - // @since 3.18.0 - // @proposed - // Completion was triggered explicitly by a user gesture. - InlineInvoked InlineCompletionTriggerKind = 1 - // Completion was triggered automatically while editing. - InlineAutomatic InlineCompletionTriggerKind = 2 - // Defines whether the insert text in a completion item should be interpreted as - // plain text or a snippet. - // The primary text to be inserted is treated as a plain string. - PlainTextTextFormat 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. - // - // See also: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#snippet_syntax - SnippetTextFormat InsertTextFormat = 2 - // How whitespace and indentation is handled during completion - // item insertion. - // - // @since 3.16.0 - // The insertion or replace strings is taken as it is. If the - // value is multi line the lines below the cursor will be - // inserted using the indentation defined in the string value. - // The client will not apply any kind of adjustments to the - // string. - AsIs InsertTextMode = 1 - // The editor adjusts leading whitespace of new lines so that - // they match the indentation up to the cursor of the line for - // which the item is accepted. - // - // Consider a line like this: <2tabs><cursor><3tabs>foo. Accepting a - // multi line completion item is indented using 2 tabs and all - // following lines inserted will be indented using 2 tabs as well. - AdjustIndentation InsertTextMode = 2 - // A request failed but it was syntactically correct, e.g the - // method name was known and the parameters were valid. The error - // message should contain human readable information about why - // the request failed. - // - // @since 3.17.0 - RequestFailed LSPErrorCodes = -32803 - // The server cancelled the request. This error code should - // only be used for requests that explicitly support being - // server cancellable. - // - // @since 3.17.0 - ServerCancelled LSPErrorCodes = -32802 - // The server detected that the content of a document got - // modified outside normal conditions. A server should - // NOT send this error code if it detects a content change - // in it unprocessed messages. The result even computed - // on an older state might still be useful for the client. - // - // If a client decides that a result is not of any use anymore - // the client should cancel the request. - ContentModified LSPErrorCodes = -32801 - // The client has canceled a request and a server has detected - // the cancel. - RequestCancelled LSPErrorCodes = -32800 - // Predefined Language kinds - // @since 3.18.0 - // @proposed - LangABAP LanguageKind = "abap" - LangWindowsBat LanguageKind = "bat" - LangBibTeX LanguageKind = "bibtex" - LangClojure LanguageKind = "clojure" - LangCoffeescript LanguageKind = "coffeescript" - LangC LanguageKind = "c" - LangCPP LanguageKind = "cpp" - LangCSharp LanguageKind = "csharp" - LangCSS LanguageKind = "css" - // @since 3.18.0 - // @proposed - LangD LanguageKind = "d" - // @since 3.18.0 - // @proposed - LangDelphi LanguageKind = "pascal" - LangDiff LanguageKind = "diff" - LangDart LanguageKind = "dart" - LangDockerfile LanguageKind = "dockerfile" - LangElixir LanguageKind = "elixir" - LangErlang LanguageKind = "erlang" - LangFSharp LanguageKind = "fsharp" - LangGitCommit LanguageKind = "git-commit" - LangGitRebase LanguageKind = "rebase" - LangGo LanguageKind = "go" - LangGroovy LanguageKind = "groovy" - LangHandlebars LanguageKind = "handlebars" - LangHaskell LanguageKind = "haskell" - LangHTML LanguageKind = "html" - LangIni LanguageKind = "ini" - LangJava LanguageKind = "java" - LangJavaScript LanguageKind = "javascript" - LangJavaScriptReact LanguageKind = "javascriptreact" - LangJSON LanguageKind = "json" - LangLaTeX LanguageKind = "latex" - LangLess LanguageKind = "less" - LangLua LanguageKind = "lua" - LangMakefile LanguageKind = "makefile" - LangMarkdown LanguageKind = "markdown" - LangObjectiveC LanguageKind = "objective-c" - LangObjectiveCPP LanguageKind = "objective-cpp" - // @since 3.18.0 - // @proposed - LangPascal LanguageKind = "pascal" - LangPerl LanguageKind = "perl" - LangPerl6 LanguageKind = "perl6" - LangPHP LanguageKind = "php" - LangPowershell LanguageKind = "powershell" - LangPug LanguageKind = "jade" - LangPython LanguageKind = "python" - LangR LanguageKind = "r" - LangRazor LanguageKind = "razor" - LangRuby LanguageKind = "ruby" - LangRust LanguageKind = "rust" - LangSCSS LanguageKind = "scss" - LangSASS LanguageKind = "sass" - LangScala LanguageKind = "scala" - LangShaderLab LanguageKind = "shaderlab" - LangShellScript LanguageKind = "shellscript" - LangSQL LanguageKind = "sql" - LangSwift LanguageKind = "swift" - LangTypeScript LanguageKind = "typescript" - LangTypeScriptReact LanguageKind = "typescriptreact" - LangTeX LanguageKind = "tex" - LangVisualBasic LanguageKind = "vb" - LangXML LanguageKind = "xml" - LangXSL LanguageKind = "xsl" - LangYAML LanguageKind = "yaml" - // 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. - // Plain text is supported as a content format - PlainText MarkupKind = "plaintext" - // Markdown is supported as a content format - Markdown MarkupKind = "markdown" - // The message type - // An error message. - Error MessageType = 1 - // A warning message. - Warning MessageType = 2 - // An information message. - Info MessageType = 3 - // A log message. - Log MessageType = 4 - // A debug message. - // - // @since 3.18.0 - // @proposed - Debug MessageType = 5 - // The moniker kind. - // - // @since 3.16.0 - // The moniker represent a symbol that is imported into a project - Import MonikerKind = "import" - // The moniker represents a symbol that is exported from a project - Export MonikerKind = "export" - // The moniker represents a symbol that is local to a project (e.g. a local - // variable of a function, a class not visible outside the project, ...) - Local MonikerKind = "local" - // A notebook cell kind. - // - // @since 3.17.0 - // A markup-cell is formatted source that is used for display. - Markup NotebookCellKind = 1 - // A code-cell is source code. - Code NotebookCellKind = 2 - // A set of predefined position encoding kinds. - // - // @since 3.17.0 - // Character offsets count UTF-8 code units (e.g. bytes). - UTF8 PositionEncodingKind = "utf-8" - // Character offsets count UTF-16 code units. - // - // This is the default and must always be supported - // by servers - UTF16 PositionEncodingKind = "utf-16" - // Character offsets count UTF-32 code units. - // - // Implementation note: these are the same as Unicode codepoints, - // so this `PositionEncodingKind` may also be used for an - // encoding-agnostic representation of character offsets. - UTF32 PositionEncodingKind = "utf-32" - // The client's default behavior is to select the identifier - // according the to language's syntax rule. - Identifier PrepareSupportDefaultBehavior = 1 - // Supports creating new files and folders. - Create ResourceOperationKind = "create" - // Supports renaming existing files and folders. - Rename ResourceOperationKind = "rename" - // Supports deleting existing files and folders. - Delete ResourceOperationKind = "delete" - // A set of predefined token modifiers. This set is not fixed - // an clients can specify additional token types via the - // corresponding client capabilities. - // - // @since 3.16.0 - ModDeclaration SemanticTokenModifiers = "declaration" - ModDefinition SemanticTokenModifiers = "definition" - ModReadonly SemanticTokenModifiers = "readonly" - ModStatic SemanticTokenModifiers = "static" - ModDeprecated SemanticTokenModifiers = "deprecated" - ModAbstract SemanticTokenModifiers = "abstract" - ModAsync SemanticTokenModifiers = "async" - ModModification SemanticTokenModifiers = "modification" - ModDocumentation SemanticTokenModifiers = "documentation" - ModDefaultLibrary SemanticTokenModifiers = "defaultLibrary" - // A set of predefined token types. This set is not fixed - // an clients can specify additional token types via the - // corresponding client capabilities. - // - // @since 3.16.0 - NamespaceType SemanticTokenTypes = "namespace" - // Represents a generic type. Acts as a fallback for types which can't be mapped to - // a specific type like class or enum. - TypeType SemanticTokenTypes = "type" - ClassType SemanticTokenTypes = "class" - EnumType SemanticTokenTypes = "enum" - InterfaceType SemanticTokenTypes = "interface" - StructType SemanticTokenTypes = "struct" - TypeParameterType SemanticTokenTypes = "typeParameter" - ParameterType SemanticTokenTypes = "parameter" - VariableType SemanticTokenTypes = "variable" - PropertyType SemanticTokenTypes = "property" - EnumMemberType SemanticTokenTypes = "enumMember" - EventType SemanticTokenTypes = "event" - FunctionType SemanticTokenTypes = "function" - MethodType SemanticTokenTypes = "method" - MacroType SemanticTokenTypes = "macro" - KeywordType SemanticTokenTypes = "keyword" - ModifierType SemanticTokenTypes = "modifier" - CommentType SemanticTokenTypes = "comment" - StringType SemanticTokenTypes = "string" - NumberType SemanticTokenTypes = "number" - RegexpType SemanticTokenTypes = "regexp" - OperatorType SemanticTokenTypes = "operator" - // @since 3.17.0 - DecoratorType SemanticTokenTypes = "decorator" - // @since 3.18.0 - LabelType SemanticTokenTypes = "label" - // How a signature help was triggered. - // - // @since 3.15.0 - // Signature help was invoked manually by the user or by a command. - SigInvoked SignatureHelpTriggerKind = 1 - // Signature help was triggered by a trigger character. - SigTriggerCharacter SignatureHelpTriggerKind = 2 - // Signature help was triggered by the cursor moving or by the document content changing. - SigContentChange SignatureHelpTriggerKind = 3 - // A symbol kind. - File SymbolKind = 1 - Module SymbolKind = 2 - Namespace SymbolKind = 3 - Package SymbolKind = 4 - Class SymbolKind = 5 - Method SymbolKind = 6 - Property SymbolKind = 7 - Field SymbolKind = 8 - Constructor SymbolKind = 9 - Enum SymbolKind = 10 - Interface SymbolKind = 11 - Function SymbolKind = 12 - Variable SymbolKind = 13 - Constant SymbolKind = 14 - String SymbolKind = 15 - Number SymbolKind = 16 - Boolean SymbolKind = 17 - Array SymbolKind = 18 - Object SymbolKind = 19 - Key SymbolKind = 20 - Null SymbolKind = 21 - EnumMember SymbolKind = 22 - Struct SymbolKind = 23 - Event SymbolKind = 24 - Operator SymbolKind = 25 - TypeParameter SymbolKind = 26 - // Symbol tags are extra annotations that tweak the rendering of a symbol. - // - // @since 3.16 - // Render a symbol as obsolete, usually using a strike-out. - DeprecatedSymbol SymbolTag = 1 - // Represents reasons why a text document is saved. - // Manually triggered, e.g. by the user pressing save, by starting debugging, - // or by an API call. - Manual TextDocumentSaveReason = 1 - // Automatic after a delay. - AfterDelay TextDocumentSaveReason = 2 - // When the editor lost focus. - FocusOut TextDocumentSaveReason = 3 - // Defines how the host (editor) should sync - // document changes to the language server. - // Documents should not be synced at all. - None TextDocumentSyncKind = 0 - // Documents are synced by always sending the full content - // of the document. - Full TextDocumentSyncKind = 1 - // Documents are synced by sending the full content on open. - // After that only incremental updates to the document are - // send. - Incremental TextDocumentSyncKind = 2 - Relative TokenFormat = "relative" - // Turn tracing off. - Off TraceValue = "off" - // Trace messages only. - Messages TraceValue = "messages" - // Verbose message tracing. - Verbose TraceValue = "verbose" - // Moniker uniqueness level to define scope of the moniker. - // - // @since 3.16.0 - // The moniker is only unique inside a document - Document UniquenessLevel = "document" - // The moniker is unique inside a project for which a dump got created - Project UniquenessLevel = "project" - // The moniker is unique inside the group to which a project belongs - Group UniquenessLevel = "group" - // The moniker is unique inside the moniker scheme. - Scheme UniquenessLevel = "scheme" - // The moniker is globally unique - Global UniquenessLevel = "global" - // Interested in create events. - WatchCreate WatchKind = 1 - // Interested in change events - WatchChange WatchKind = 2 - // Interested in delete events - WatchDelete WatchKind = 4 -) diff --git a/internal/lsp/protocol/uri.go b/internal/lsp/protocol/uri.go deleted file mode 100644 index 18fd5ea75..000000000 --- a/internal/lsp/protocol/uri.go +++ /dev/null @@ -1,218 +0,0 @@ -// Copyright 2023 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. - -package protocol - -// This file declares URI, DocumentUri, and its methods. -// -// For the LSP definition of these types, see -// https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#uri - -import ( - "fmt" - "net/url" - "path/filepath" - "strings" - "unicode" -) - -// A DocumentUri is the URI of a client editor document. -// -// According to the LSP specification: -// -// Care should be taken to handle encoding in URIs. For -// example, some clients (such as VS Code) may encode colons -// in drive letters while others do not. The URIs below are -// both valid, but clients and servers should be consistent -// with the form they use themselves to ensure the other party -// doesn’t interpret them as distinct URIs. Clients and -// servers should not assume that each other are encoding the -// same way (for example a client encoding colons in drive -// letters cannot assume server responses will have encoded -// colons). The same applies to casing of drive letters - one -// party should not assume the other party will return paths -// with drive letters cased the same as it. -// -// file:///c:/project/readme.md -// file:///C%3A/project/readme.md -// -// This is done during JSON unmarshalling; -// see [DocumentUri.UnmarshalText] for details. -type DocumentUri string - -// A URI is an arbitrary URL (e.g. https), not necessarily a file. -type URI = string - -// UnmarshalText implements decoding of DocumentUri values. -// -// In particular, it implements a systematic correction of various odd -// features of the definition of DocumentUri in the LSP spec that -// appear to be workarounds for bugs in VS Code. For example, it may -// URI-encode the URI itself, so that colon becomes %3A, and it may -// send file://foo.go URIs that have two slashes (not three) and no -// hostname. -// -// We use UnmarshalText, not UnmarshalJSON, because it is called even -// for non-addressable values such as keys and values of map[K]V, -// where there is no pointer of type *K or *V on which to call -// UnmarshalJSON. (See Go issue #28189 for more detail.) -// -// Non-empty DocumentUris are valid "file"-scheme URIs. -// The empty DocumentUri is valid. -func (uri *DocumentUri) UnmarshalText(data []byte) (err error) { - *uri, err = ParseDocumentUri(string(data)) - return -} - -// Path returns the file path for the given URI. -// -// DocumentUri("").Path() returns the empty string. -// -// Path panics if called on a URI that is not a valid filename. -func (uri DocumentUri) Path() string { - filename, err := filename(uri) - if err != nil { - // e.g. ParseRequestURI failed. - // - // This can only affect DocumentUris created by - // direct string manipulation; all DocumentUris - // received from the client pass through - // ParseRequestURI, which ensures validity. - panic(err) - } - return filepath.FromSlash(filename) -} - -// Dir returns the URI for the directory containing the receiver. -func (uri DocumentUri) Dir() DocumentUri { - // This function could be more efficiently implemented by avoiding any call - // to Path(), but at least consolidates URI manipulation. - return URIFromPath(uri.DirPath()) -} - -// DirPath returns the file path to the directory containing this URI, which -// must be a file URI. -func (uri DocumentUri) DirPath() string { - return filepath.Dir(uri.Path()) -} - -func filename(uri DocumentUri) (string, error) { - if uri == "" { - return "", nil - } - - // This conservative check for the common case - // of a simple non-empty absolute POSIX filename - // avoids the allocation of a net.URL. - if strings.HasPrefix(string(uri), "file:///") { - rest := string(uri)[len("file://"):] // leave one slash - for i := range len(rest) { - b := rest[i] - // Reject these cases: - if b < ' ' || b == 0x7f || // control character - b == '%' || b == '+' || // URI escape - b == ':' || // Windows drive letter - b == '@' || b == '&' || b == '?' { // authority or query - goto slow - } - } - return rest, nil - } -slow: - - u, err := url.ParseRequestURI(string(uri)) - if err != nil { - return "", err - } - if u.Scheme != fileScheme { - return "", fmt.Errorf("only file URIs are supported, got %q from %q", u.Scheme, uri) - } - // If the URI is a Windows URI, we trim the leading "/" and uppercase - // the drive letter, which will never be case sensitive. - if isWindowsDriveURIPath(u.Path) { - u.Path = strings.ToUpper(string(u.Path[1])) + u.Path[2:] - } - - return u.Path, nil -} - -// ParseDocumentUri interprets a string as a DocumentUri, applying VS -// Code workarounds; see [DocumentUri.UnmarshalText] for details. -func ParseDocumentUri(s string) (DocumentUri, error) { - if s == "" { - return "", nil - } - - if !strings.HasPrefix(s, "file://") { - return "", fmt.Errorf("DocumentUri scheme is not 'file': %s", s) - } - - // VS Code sends URLs with only two slashes, - // which are invalid. golang/go#39789. - if !strings.HasPrefix(s, "file:///") { - s = "file:///" + s[len("file://"):] - } - - // Even though the input is a URI, it may not be in canonical form. VS Code - // in particular over-escapes :, @, etc. Unescape and re-encode to canonicalize. - path, err := url.PathUnescape(s[len("file://"):]) - if err != nil { - return "", err - } - - // File URIs from Windows may have lowercase drive letters. - // Since drive letters are guaranteed to be case insensitive, - // we change them to uppercase to remain consistent. - // For example, file:///c:/x/y/z becomes file:///C:/x/y/z. - if isWindowsDriveURIPath(path) { - path = path[:1] + strings.ToUpper(string(path[1])) + path[2:] - } - u := url.URL{Scheme: fileScheme, Path: path} - return DocumentUri(u.String()), nil -} - -// URIFromPath returns DocumentUri for the supplied file path. -// Given "", it returns "". -func URIFromPath(path string) DocumentUri { - if path == "" { - return "" - } - if !isWindowsDrivePath(path) { - if abs, err := filepath.Abs(path); err == nil { - path = abs - } - } - // Check the file path again, in case it became absolute. - if isWindowsDrivePath(path) { - path = "/" + strings.ToUpper(string(path[0])) + path[1:] - } - path = filepath.ToSlash(path) - u := url.URL{ - Scheme: fileScheme, - Path: path, - } - return DocumentUri(u.String()) -} - -const fileScheme = "file" - -// isWindowsDrivePath returns true if the file path is of the form used by -// Windows. We check if the path begins with a drive letter, followed by a ":". -// For example: C:/x/y/z. -func isWindowsDrivePath(path string) bool { - if len(path) < 3 { - return false - } - return unicode.IsLetter(rune(path[0])) && path[1] == ':' -} - -// isWindowsDriveURIPath returns true if the file URI is of the format used by -// Windows URIs. The url.Parse package does not specially handle Windows paths -// (see golang/go#6027), so we check if the URI path has a drive prefix (e.g. "/C:"). -func isWindowsDriveURIPath(uri string) bool { - if len(uri) < 4 { - return false - } - return uri[0] == '/' && unicode.IsLetter(rune(uri[1])) && uri[2] == ':' -} |
