language_server-protocol 0.5.0 → 3.7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +4 -0
- data/README.md +13 -7
- data/lib/language_server/protocol/constant.rb +35 -11
- data/lib/language_server/protocol/constant/completion_item_kind.rb +7 -0
- data/lib/language_server/protocol/constant/completion_trigger_kind.rb +25 -0
- data/lib/language_server/protocol/constant/insert_text_format.rb +0 -2
- data/lib/language_server/protocol/constant/markup_kind.rb +23 -0
- data/lib/language_server/protocol/constant/symbol_kind.rb +8 -0
- data/lib/language_server/protocol/constant/watch_kind.rb +20 -0
- data/lib/language_server/protocol/interface.rb +217 -87
- data/lib/language_server/protocol/interface/apply_workspace_edit_params.rb +12 -1
- data/lib/language_server/protocol/interface/client_capabilities.rb +1 -1
- data/lib/language_server/protocol/interface/color.rb +63 -0
- data/lib/language_server/protocol/interface/color_information.rb +42 -0
- data/lib/language_server/protocol/interface/color_presentation.rb +56 -0
- data/lib/language_server/protocol/interface/color_presentation_params.rb +51 -0
- data/lib/language_server/protocol/interface/color_provider_options.rb +27 -0
- data/lib/language_server/protocol/interface/completion_context.rb +46 -0
- data/lib/language_server/protocol/interface/completion_item.rb +37 -6
- data/lib/language_server/protocol/interface/completion_params.rb +34 -0
- data/lib/language_server/protocol/interface/completion_registration_options.rb +8 -1
- data/lib/language_server/protocol/interface/configuration_item.rb +42 -0
- data/lib/language_server/protocol/interface/configuration_params.rb +30 -0
- data/lib/language_server/protocol/interface/diagnostic.rb +12 -2
- data/lib/language_server/protocol/interface/diagnostic_related_information.rb +47 -0
- data/lib/language_server/protocol/interface/did_change_text_document_params.rb +3 -1
- data/lib/language_server/protocol/interface/did_change_watched_files_registration_options.rb +36 -0
- data/lib/language_server/protocol/interface/did_change_workspace_folders_params.rb +33 -0
- data/lib/language_server/protocol/interface/did_save_text_document_params.rb +1 -1
- data/lib/language_server/protocol/interface/document_link.rb +11 -1
- data/lib/language_server/protocol/interface/file_system_watcher.rb +44 -0
- data/lib/language_server/protocol/interface/hover.rb +1 -1
- data/lib/language_server/protocol/interface/initialize_params.rb +15 -1
- data/lib/language_server/protocol/interface/initialized_params.rb +24 -0
- data/lib/language_server/protocol/interface/markup_content.rb +66 -0
- data/lib/language_server/protocol/interface/notification_message.rb +1 -1
- data/lib/language_server/protocol/interface/parameter_information.rb +1 -1
- data/lib/language_server/protocol/interface/position.rb +6 -1
- data/lib/language_server/protocol/interface/registration.rb +1 -1
- data/lib/language_server/protocol/interface/rename_params.rb +1 -1
- data/lib/language_server/protocol/interface/request_message.rb +1 -1
- data/lib/language_server/protocol/interface/server_capabilities.rb +44 -2
- data/lib/language_server/protocol/interface/signature_help.rb +2 -2
- data/lib/language_server/protocol/interface/signature_information.rb +1 -1
- data/lib/language_server/protocol/interface/static_registration_options.rb +37 -0
- data/lib/language_server/protocol/interface/symbol_information.rb +23 -3
- data/lib/language_server/protocol/interface/text_document_change_registration_options.rb +2 -2
- data/lib/language_server/protocol/interface/text_document_client_capabilities.rb +48 -5
- data/lib/language_server/protocol/interface/text_document_item.rb +1 -1
- data/lib/language_server/protocol/interface/text_document_sync_options.rb +2 -2
- data/lib/language_server/protocol/interface/versioned_text_document_identifier.rb +5 -1
- data/lib/language_server/protocol/interface/workspace_client_capabilities.rb +104 -0
- data/lib/language_server/protocol/interface/workspace_edit.rb +4 -3
- data/lib/language_server/protocol/interface/workspace_folder.rb +43 -0
- data/lib/language_server/protocol/interface/workspace_folders_change_event.rb +45 -0
- data/lib/language_server/protocol/version.rb +1 -1
- data/scripts/generateFiles.ts +29 -9
- metadata +25 -3
@@ -2,14 +2,25 @@ module LanguageServer
|
|
2
2
|
module Protocol
|
3
3
|
module Interface
|
4
4
|
class ApplyWorkspaceEditParams
|
5
|
-
def initialize(edit:)
|
5
|
+
def initialize(label: nil, edit:)
|
6
6
|
@attributes = {}
|
7
7
|
|
8
|
+
@attributes[:label] = label if label
|
8
9
|
@attributes[:edit] = edit
|
9
10
|
|
10
11
|
@attributes.freeze
|
11
12
|
end
|
12
13
|
|
14
|
+
#
|
15
|
+
# An optional label of the workspace edit. This label is
|
16
|
+
# presented in the user interface for example on an undo
|
17
|
+
# stack to undo the workspace edit.
|
18
|
+
#
|
19
|
+
# @return [string]
|
20
|
+
def label
|
21
|
+
attributes.fetch(:label)
|
22
|
+
end
|
23
|
+
|
13
24
|
#
|
14
25
|
# The edits to apply.
|
15
26
|
#
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module LanguageServer
|
2
|
+
module Protocol
|
3
|
+
module Interface
|
4
|
+
#
|
5
|
+
# Represents a color in RGBA space.
|
6
|
+
#
|
7
|
+
class Color
|
8
|
+
def initialize(red:, green:, blue:, alpha:)
|
9
|
+
@attributes = {}
|
10
|
+
|
11
|
+
@attributes[:red] = red
|
12
|
+
@attributes[:green] = green
|
13
|
+
@attributes[:blue] = blue
|
14
|
+
@attributes[:alpha] = alpha
|
15
|
+
|
16
|
+
@attributes.freeze
|
17
|
+
end
|
18
|
+
|
19
|
+
#
|
20
|
+
# The red component of this color in the range [0-1].
|
21
|
+
#
|
22
|
+
# @return [number]
|
23
|
+
def red
|
24
|
+
attributes.fetch(:red)
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# The green component of this color in the range [0-1].
|
29
|
+
#
|
30
|
+
# @return [number]
|
31
|
+
def green
|
32
|
+
attributes.fetch(:green)
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# The blue component of this color in the range [0-1].
|
37
|
+
#
|
38
|
+
# @return [number]
|
39
|
+
def blue
|
40
|
+
attributes.fetch(:blue)
|
41
|
+
end
|
42
|
+
|
43
|
+
#
|
44
|
+
# The alpha component of this color in the range [0-1].
|
45
|
+
#
|
46
|
+
# @return [number]
|
47
|
+
def alpha
|
48
|
+
attributes.fetch(:alpha)
|
49
|
+
end
|
50
|
+
|
51
|
+
attr_reader :attributes
|
52
|
+
|
53
|
+
def to_hash
|
54
|
+
attributes
|
55
|
+
end
|
56
|
+
|
57
|
+
def to_json(*args)
|
58
|
+
to_hash.to_json(*args)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module LanguageServer
|
2
|
+
module Protocol
|
3
|
+
module Interface
|
4
|
+
class ColorInformation
|
5
|
+
def initialize(range:, color:)
|
6
|
+
@attributes = {}
|
7
|
+
|
8
|
+
@attributes[:range] = range
|
9
|
+
@attributes[:color] = color
|
10
|
+
|
11
|
+
@attributes.freeze
|
12
|
+
end
|
13
|
+
|
14
|
+
#
|
15
|
+
# The range in the document where this color appears.
|
16
|
+
#
|
17
|
+
# @return [Range]
|
18
|
+
def range
|
19
|
+
attributes.fetch(:range)
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
# The actual color value for this color range.
|
24
|
+
#
|
25
|
+
# @return [Color]
|
26
|
+
def color
|
27
|
+
attributes.fetch(:color)
|
28
|
+
end
|
29
|
+
|
30
|
+
attr_reader :attributes
|
31
|
+
|
32
|
+
def to_hash
|
33
|
+
attributes
|
34
|
+
end
|
35
|
+
|
36
|
+
def to_json(*args)
|
37
|
+
to_hash.to_json(*args)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module LanguageServer
|
2
|
+
module Protocol
|
3
|
+
module Interface
|
4
|
+
class ColorPresentation
|
5
|
+
def initialize(label:, text_edit: nil, additional_text_edits: nil)
|
6
|
+
@attributes = {}
|
7
|
+
|
8
|
+
@attributes[:label] = label
|
9
|
+
@attributes[:textEdit] = text_edit if text_edit
|
10
|
+
@attributes[:additionalTextEdits] = additional_text_edits if additional_text_edits
|
11
|
+
|
12
|
+
@attributes.freeze
|
13
|
+
end
|
14
|
+
|
15
|
+
#
|
16
|
+
# The label of this color presentation. It will be shown on the color
|
17
|
+
# picker header. By default this is also the text that is inserted when selecting
|
18
|
+
# this color presentation.
|
19
|
+
#
|
20
|
+
# @return [string]
|
21
|
+
def label
|
22
|
+
attributes.fetch(:label)
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# An [edit](#TextEdit) which is applied to a document when selecting
|
27
|
+
# this presentation for the color. When `falsy` the [label](#ColorPresentation.label)
|
28
|
+
# is used.
|
29
|
+
#
|
30
|
+
# @return [TextEdit]
|
31
|
+
def text_edit
|
32
|
+
attributes.fetch(:textEdit)
|
33
|
+
end
|
34
|
+
|
35
|
+
#
|
36
|
+
# An optional array of additional [text edits](#TextEdit) that are applied when
|
37
|
+
# selecting this color presentation. Edits must not overlap with the main [edit](#ColorPresentation.textEdit) nor with themselves.
|
38
|
+
#
|
39
|
+
# @return [TextEdit[]]
|
40
|
+
def additional_text_edits
|
41
|
+
attributes.fetch(:additionalTextEdits)
|
42
|
+
end
|
43
|
+
|
44
|
+
attr_reader :attributes
|
45
|
+
|
46
|
+
def to_hash
|
47
|
+
attributes
|
48
|
+
end
|
49
|
+
|
50
|
+
def to_json(*args)
|
51
|
+
to_hash.to_json(*args)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module LanguageServer
|
2
|
+
module Protocol
|
3
|
+
module Interface
|
4
|
+
class ColorPresentationParams
|
5
|
+
def initialize(text_document:, color:, range:)
|
6
|
+
@attributes = {}
|
7
|
+
|
8
|
+
@attributes[:textDocument] = text_document
|
9
|
+
@attributes[:color] = color
|
10
|
+
@attributes[:range] = range
|
11
|
+
|
12
|
+
@attributes.freeze
|
13
|
+
end
|
14
|
+
|
15
|
+
#
|
16
|
+
# The text document.
|
17
|
+
#
|
18
|
+
# @return [TextDocumentIdentifier]
|
19
|
+
def text_document
|
20
|
+
attributes.fetch(:textDocument)
|
21
|
+
end
|
22
|
+
|
23
|
+
#
|
24
|
+
# The color information to request presentations for.
|
25
|
+
#
|
26
|
+
# @return [Color]
|
27
|
+
def color
|
28
|
+
attributes.fetch(:color)
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# The range where the color would be inserted. Serves as a context.
|
33
|
+
#
|
34
|
+
# @return [Range]
|
35
|
+
def range
|
36
|
+
attributes.fetch(:range)
|
37
|
+
end
|
38
|
+
|
39
|
+
attr_reader :attributes
|
40
|
+
|
41
|
+
def to_hash
|
42
|
+
attributes
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_json(*args)
|
46
|
+
to_hash.to_json(*args)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module LanguageServer
|
2
|
+
module Protocol
|
3
|
+
module Interface
|
4
|
+
#
|
5
|
+
# Color provider Options
|
6
|
+
#
|
7
|
+
class ColorProviderOptions
|
8
|
+
def initialize()
|
9
|
+
@attributes = {}
|
10
|
+
|
11
|
+
|
12
|
+
@attributes.freeze
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_reader :attributes
|
16
|
+
|
17
|
+
def to_hash
|
18
|
+
attributes
|
19
|
+
end
|
20
|
+
|
21
|
+
def to_json(*args)
|
22
|
+
to_hash.to_json(*args)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module LanguageServer
|
2
|
+
module Protocol
|
3
|
+
module Interface
|
4
|
+
#
|
5
|
+
# Contains additional information about the context in which a completion request is triggered.
|
6
|
+
#
|
7
|
+
class CompletionContext
|
8
|
+
def initialize(trigger_kind:, trigger_character: nil)
|
9
|
+
@attributes = {}
|
10
|
+
|
11
|
+
@attributes[:triggerKind] = trigger_kind
|
12
|
+
@attributes[:triggerCharacter] = trigger_character if trigger_character
|
13
|
+
|
14
|
+
@attributes.freeze
|
15
|
+
end
|
16
|
+
|
17
|
+
#
|
18
|
+
# How the completion was triggered.
|
19
|
+
#
|
20
|
+
# @return [CompletionTriggerKind]
|
21
|
+
def trigger_kind
|
22
|
+
attributes.fetch(:triggerKind)
|
23
|
+
end
|
24
|
+
|
25
|
+
#
|
26
|
+
# The trigger character (a single character) that has trigger code complete.
|
27
|
+
# Is undefined if `triggerKind !== CompletionTriggerKind.TriggerCharacter`
|
28
|
+
#
|
29
|
+
# @return [string]
|
30
|
+
def trigger_character
|
31
|
+
attributes.fetch(:triggerCharacter)
|
32
|
+
end
|
33
|
+
|
34
|
+
attr_reader :attributes
|
35
|
+
|
36
|
+
def to_hash
|
37
|
+
attributes
|
38
|
+
end
|
39
|
+
|
40
|
+
def to_json(*args)
|
41
|
+
to_hash.to_json(*args)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -2,19 +2,21 @@ module LanguageServer
|
|
2
2
|
module Protocol
|
3
3
|
module Interface
|
4
4
|
class CompletionItem
|
5
|
-
def initialize(label:, kind: nil, detail: nil, documentation: nil, sort_text: nil, filter_text: nil, insert_text: nil, insert_text_format: nil, text_edit: nil, additional_text_edits: nil, command: nil, data: nil)
|
5
|
+
def initialize(label:, kind: nil, detail: nil, documentation: nil, deprecated: nil, sort_text: nil, filter_text: nil, insert_text: nil, insert_text_format: nil, text_edit: nil, additional_text_edits: nil, commit_characters: nil, command: nil, data: nil)
|
6
6
|
@attributes = {}
|
7
7
|
|
8
8
|
@attributes[:label] = label
|
9
9
|
@attributes[:kind] = kind if kind
|
10
10
|
@attributes[:detail] = detail if detail
|
11
11
|
@attributes[:documentation] = documentation if documentation
|
12
|
+
@attributes[:deprecated] = deprecated if deprecated
|
12
13
|
@attributes[:sortText] = sort_text if sort_text
|
13
14
|
@attributes[:filterText] = filter_text if filter_text
|
14
15
|
@attributes[:insertText] = insert_text if insert_text
|
15
16
|
@attributes[:insertTextFormat] = insert_text_format if insert_text_format
|
16
17
|
@attributes[:textEdit] = text_edit if text_edit
|
17
18
|
@attributes[:additionalTextEdits] = additional_text_edits if additional_text_edits
|
19
|
+
@attributes[:commitCharacters] = commit_characters if commit_characters
|
18
20
|
@attributes[:command] = command if command
|
19
21
|
@attributes[:data] = data if data
|
20
22
|
|
@@ -52,13 +54,21 @@ module LanguageServer
|
|
52
54
|
#
|
53
55
|
# A human-readable string that represents a doc-comment.
|
54
56
|
#
|
55
|
-
# @return [string]
|
57
|
+
# @return [string | MarkupContent]
|
56
58
|
def documentation
|
57
59
|
attributes.fetch(:documentation)
|
58
60
|
end
|
59
61
|
|
60
62
|
#
|
61
|
-
#
|
63
|
+
# Indicates if this item is deprecated.
|
64
|
+
#
|
65
|
+
# @return [boolean]
|
66
|
+
def deprecated
|
67
|
+
attributes.fetch(:deprecated)
|
68
|
+
end
|
69
|
+
|
70
|
+
#
|
71
|
+
# A string that should be used when comparing this item
|
62
72
|
# with other items. When `falsy` the label is used.
|
63
73
|
#
|
64
74
|
# @return [string]
|
@@ -76,9 +86,16 @@ module LanguageServer
|
|
76
86
|
end
|
77
87
|
|
78
88
|
#
|
79
|
-
# A string that should be inserted a document when selecting
|
89
|
+
# A string that should be inserted into a document when selecting
|
80
90
|
# this completion. When `falsy` the label is used.
|
81
91
|
#
|
92
|
+
# The `insertText` is subject to interpretation by the client side.
|
93
|
+
# Some tools might not take the string literally. For example
|
94
|
+
# VS Code when code complete is requested in this example `con<cursor position>`
|
95
|
+
# and a completion item with an `insertText` of `console` is provided it
|
96
|
+
# will only insert `sole`. Therefore it is recommended to use `textEdit` instead
|
97
|
+
# since it avoids additional client side interpretation.
|
98
|
+
#
|
82
99
|
# @return [string]
|
83
100
|
def insert_text
|
84
101
|
attributes.fetch(:insertText)
|
@@ -107,14 +124,28 @@ module LanguageServer
|
|
107
124
|
|
108
125
|
#
|
109
126
|
# An optional array of additional text edits that are applied when
|
110
|
-
# selecting this completion. Edits must not overlap
|
111
|
-
# nor with themselves.
|
127
|
+
# selecting this completion. Edits must not overlap (including the same insert position)
|
128
|
+
# with the main edit nor with themselves.
|
129
|
+
#
|
130
|
+
# Additional text edits should be used to change text unrelated to the current cursor position
|
131
|
+
# (for example adding an import statement at the top of the file if the completion item will
|
132
|
+
# insert an unqualified type).
|
112
133
|
#
|
113
134
|
# @return [TextEdit[]]
|
114
135
|
def additional_text_edits
|
115
136
|
attributes.fetch(:additionalTextEdits)
|
116
137
|
end
|
117
138
|
|
139
|
+
#
|
140
|
+
# An optional set of characters that when pressed while this completion is active will accept it first and
|
141
|
+
# then type that character. *Note* that all commit characters should have `length=1` and that superfluous
|
142
|
+
# characters will be ignored.
|
143
|
+
#
|
144
|
+
# @return [string[]]
|
145
|
+
def commit_characters
|
146
|
+
attributes.fetch(:commitCharacters)
|
147
|
+
end
|
148
|
+
|
118
149
|
#
|
119
150
|
# An optional command that is executed *after* inserting this completion. *Note* that
|
120
151
|
# additional modifications to the current document should be described with the
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module LanguageServer
|
2
|
+
module Protocol
|
3
|
+
module Interface
|
4
|
+
class CompletionParams < TextDocumentPositionParams
|
5
|
+
def initialize(text_document:, position:, context: nil)
|
6
|
+
@attributes = {}
|
7
|
+
|
8
|
+
@attributes[:context] = context if context
|
9
|
+
|
10
|
+
@attributes.freeze
|
11
|
+
end
|
12
|
+
|
13
|
+
#
|
14
|
+
# The completion context. This is only available it the client specifies
|
15
|
+
# to send this using `ClientCapabilities.textDocument.completion.contextSupport === true`
|
16
|
+
#
|
17
|
+
# @return [CompletionContext]
|
18
|
+
def context
|
19
|
+
attributes.fetch(:context)
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :attributes
|
23
|
+
|
24
|
+
def to_hash
|
25
|
+
attributes
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_json(*args)
|
29
|
+
to_hash.to_json(*args)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|