solargraph 0.32.1 → 0.32.2

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.
Files changed (177) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +9 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +6 -0
  5. data/.travis.yml +25 -0
  6. data/EXAMPLES.md +76 -0
  7. data/Gemfile +3 -0
  8. data/LANGUAGE_SERVER.md +51 -0
  9. data/LICENSE +21 -0
  10. data/OVERVIEW.md +37 -0
  11. data/README.md +106 -0
  12. data/Rakefile +14 -0
  13. data/SERVER.md +95 -0
  14. data/bin/solargraph +0 -0
  15. data/bin/solargraph-runtime +5 -5
  16. data/lib/solargraph.rb +54 -54
  17. data/lib/solargraph/api_map.rb +659 -659
  18. data/lib/solargraph/api_map/cache.rb +49 -49
  19. data/lib/solargraph/api_map/source_to_yard.rb +67 -67
  20. data/lib/solargraph/api_map/store.rb +201 -201
  21. data/lib/solargraph/bundle.rb +24 -24
  22. data/lib/solargraph/complex_type.rb +150 -150
  23. data/lib/solargraph/complex_type/type_methods.rb +124 -124
  24. data/lib/solargraph/complex_type/unique_type.rb +44 -44
  25. data/lib/solargraph/core_fills.rb +37 -37
  26. data/lib/solargraph/diagnostics.rb +52 -52
  27. data/lib/solargraph/diagnostics/base.rb +20 -20
  28. data/lib/solargraph/diagnostics/require_not_found.rb +28 -28
  29. data/lib/solargraph/diagnostics/rubocop.rb +98 -98
  30. data/lib/solargraph/diagnostics/rubocop_helpers.rb +46 -46
  31. data/lib/solargraph/diagnostics/type_not_defined.rb +108 -108
  32. data/lib/solargraph/diagnostics/update_errors.rb +38 -38
  33. data/lib/solargraph/language_server/completion_item_kinds.rb +33 -33
  34. data/lib/solargraph/language_server/error_codes.rb +18 -18
  35. data/lib/solargraph/language_server/host.rb +684 -681
  36. data/lib/solargraph/language_server/host/cataloger.rb +54 -79
  37. data/lib/solargraph/language_server/host/diagnoser.rb +80 -80
  38. data/lib/solargraph/language_server/host/dispatch.rb +112 -113
  39. data/lib/solargraph/language_server/host/sources.rb +138 -138
  40. data/lib/solargraph/language_server/message.rb +90 -90
  41. data/lib/solargraph/language_server/message/base.rb +83 -83
  42. data/lib/solargraph/language_server/message/completion_item/resolve.rb +40 -40
  43. data/lib/solargraph/language_server/message/exit_notification.rb +11 -11
  44. data/lib/solargraph/language_server/message/extended.rb +19 -19
  45. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +86 -86
  46. data/lib/solargraph/language_server/message/extended/document.rb +18 -18
  47. data/lib/solargraph/language_server/message/extended/document_gems.rb +30 -30
  48. data/lib/solargraph/language_server/message/extended/environment.rb +20 -20
  49. data/lib/solargraph/language_server/message/extended/search.rb +18 -18
  50. data/lib/solargraph/language_server/message/initialize.rb +141 -141
  51. data/lib/solargraph/language_server/message/initialized.rb +23 -23
  52. data/lib/solargraph/language_server/message/shutdown.rb +11 -11
  53. data/lib/solargraph/language_server/message/text_document.rb +25 -25
  54. data/lib/solargraph/language_server/message/text_document/completion.rb +51 -51
  55. data/lib/solargraph/language_server/message/text_document/definition.rb +18 -18
  56. data/lib/solargraph/language_server/message/text_document/did_change.rb +13 -13
  57. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +21 -21
  58. data/lib/solargraph/language_server/message/text_document/folding_range.rb +24 -24
  59. data/lib/solargraph/language_server/message/text_document/formatting.rb +50 -50
  60. data/lib/solargraph/language_server/message/text_document/hover.rb +31 -31
  61. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +32 -32
  62. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +9 -9
  63. data/lib/solargraph/language_server/message/text_document/references.rb +14 -14
  64. data/lib/solargraph/language_server/message/text_document/rename.rb +17 -17
  65. data/lib/solargraph/language_server/message/text_document/signature_help.rb +19 -19
  66. data/lib/solargraph/language_server/message/workspace.rb +12 -12
  67. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +29 -29
  68. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +29 -27
  69. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
  70. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +21 -21
  71. data/lib/solargraph/language_server/request.rb +22 -22
  72. data/lib/solargraph/language_server/symbol_kinds.rb +34 -34
  73. data/lib/solargraph/language_server/transport.rb +11 -11
  74. data/lib/solargraph/language_server/transport/adapter.rb +60 -60
  75. data/lib/solargraph/language_server/transport/data_reader.rb +66 -66
  76. data/lib/solargraph/language_server/uri_helpers.rb +25 -25
  77. data/lib/solargraph/library.rb +421 -419
  78. data/lib/solargraph/live_map.rb +126 -126
  79. data/lib/solargraph/live_map/cache.rb +38 -38
  80. data/lib/solargraph/location.rb +31 -31
  81. data/lib/solargraph/logging.rb +25 -25
  82. data/lib/solargraph/page.rb +68 -68
  83. data/lib/solargraph/pin.rb +50 -50
  84. data/lib/solargraph/pin/attribute.rb +41 -41
  85. data/lib/solargraph/pin/base.rb +280 -280
  86. data/lib/solargraph/pin/base_method.rb +76 -76
  87. data/lib/solargraph/pin/base_variable.rb +72 -72
  88. data/lib/solargraph/pin/block.rb +32 -32
  89. data/lib/solargraph/pin/block_parameter.rb +103 -103
  90. data/lib/solargraph/pin/class_variable.rb +9 -9
  91. data/lib/solargraph/pin/constant.rb +30 -30
  92. data/lib/solargraph/pin/conversions.rb +79 -79
  93. data/lib/solargraph/pin/documenting.rb +41 -41
  94. data/lib/solargraph/pin/duck_method.rb +14 -14
  95. data/lib/solargraph/pin/global_variable.rb +9 -9
  96. data/lib/solargraph/pin/instance_variable.rb +9 -9
  97. data/lib/solargraph/pin/keyword.rb +17 -17
  98. data/lib/solargraph/pin/local_variable.rb +23 -23
  99. data/lib/solargraph/pin/localized.rb +22 -22
  100. data/lib/solargraph/pin/method.rb +126 -126
  101. data/lib/solargraph/pin/method_alias.rb +30 -30
  102. data/lib/solargraph/pin/method_parameter.rb +40 -40
  103. data/lib/solargraph/pin/namespace.rb +54 -54
  104. data/lib/solargraph/pin/plugin/method.rb +25 -25
  105. data/lib/solargraph/pin/proxy_type.rb +35 -35
  106. data/lib/solargraph/pin/reference.rb +22 -22
  107. data/lib/solargraph/pin/reference/extend.rb +11 -11
  108. data/lib/solargraph/pin/reference/include.rb +11 -11
  109. data/lib/solargraph/pin/reference/require.rb +15 -15
  110. data/lib/solargraph/pin/reference/superclass.rb +11 -11
  111. data/lib/solargraph/pin/symbol.rb +44 -44
  112. data/lib/solargraph/pin/yard_pin.rb +10 -10
  113. data/lib/solargraph/pin/yard_pin/constant.rb +14 -14
  114. data/lib/solargraph/pin/yard_pin/method.rb +35 -35
  115. data/lib/solargraph/pin/yard_pin/namespace.rb +19 -19
  116. data/lib/solargraph/pin/yard_pin/yard_mixin.rb +14 -14
  117. data/lib/solargraph/plugin.rb +8 -8
  118. data/lib/solargraph/plugin/base.rb +41 -41
  119. data/lib/solargraph/plugin/canceler.rb +11 -11
  120. data/lib/solargraph/plugin/process.rb +172 -172
  121. data/lib/solargraph/plugin/runtime.rb +134 -134
  122. data/lib/solargraph/position.rb +110 -110
  123. data/lib/solargraph/range.rb +83 -83
  124. data/lib/solargraph/server_methods.rb +14 -14
  125. data/lib/solargraph/shell.rb +102 -102
  126. data/lib/solargraph/source.rb +521 -521
  127. data/lib/solargraph/source/chain.rb +120 -120
  128. data/lib/solargraph/source/chain/call.rb +107 -107
  129. data/lib/solargraph/source/chain/class_variable.rb +11 -11
  130. data/lib/solargraph/source/chain/constant.rb +30 -30
  131. data/lib/solargraph/source/chain/global_variable.rb +11 -11
  132. data/lib/solargraph/source/chain/head.rb +33 -33
  133. data/lib/solargraph/source/chain/instance_variable.rb +11 -11
  134. data/lib/solargraph/source/chain/link.rb +33 -33
  135. data/lib/solargraph/source/chain/literal.rb +21 -21
  136. data/lib/solargraph/source/chain/variable.rb +11 -11
  137. data/lib/solargraph/source/change.rb +77 -77
  138. data/lib/solargraph/source/cursor.rb +157 -157
  139. data/lib/solargraph/source/node_chainer.rb +96 -96
  140. data/lib/solargraph/source/node_methods.rb +225 -225
  141. data/lib/solargraph/source/source_chainer.rb +183 -183
  142. data/lib/solargraph/source_map.rb +169 -169
  143. data/lib/solargraph/source_map/clip.rb +145 -145
  144. data/lib/solargraph/source_map/completion.rb +21 -21
  145. data/lib/solargraph/source_map/mapper.rb +149 -149
  146. data/lib/solargraph/source_map/node_processor.rb +78 -78
  147. data/lib/solargraph/source_map/node_processor/alias_node.rb +19 -19
  148. data/lib/solargraph/source_map/node_processor/args_node.rb +28 -28
  149. data/lib/solargraph/source_map/node_processor/base.rb +68 -68
  150. data/lib/solargraph/source_map/node_processor/begin_node.rb +11 -11
  151. data/lib/solargraph/source_map/node_processor/block_node.rb +14 -14
  152. data/lib/solargraph/source_map/node_processor/casgn_node.rb +14 -14
  153. data/lib/solargraph/source_map/node_processor/cvasgn_node.rb +14 -14
  154. data/lib/solargraph/source_map/node_processor/def_node.rb +54 -54
  155. data/lib/solargraph/source_map/node_processor/defs_node.rb +21 -21
  156. data/lib/solargraph/source_map/node_processor/gvasgn_node.rb +12 -12
  157. data/lib/solargraph/source_map/node_processor/ivasgn_node.rb +18 -18
  158. data/lib/solargraph/source_map/node_processor/lvasgn_node.rb +16 -16
  159. data/lib/solargraph/source_map/node_processor/namespace_node.rb +26 -26
  160. data/lib/solargraph/source_map/node_processor/orasgn_node.rb +12 -12
  161. data/lib/solargraph/source_map/node_processor/sclass_node.rb +11 -11
  162. data/lib/solargraph/source_map/node_processor/send_node.rb +162 -162
  163. data/lib/solargraph/source_map/node_processor/sym_node.rb +11 -11
  164. data/lib/solargraph/source_map/region.rb +58 -58
  165. data/lib/solargraph/version.rb +3 -3
  166. data/lib/solargraph/views/environment.erb +53 -53
  167. data/lib/solargraph/workspace.rb +183 -183
  168. data/lib/solargraph/workspace/config.rb +170 -170
  169. data/lib/solargraph/yard_map.rb +298 -298
  170. data/lib/solargraph/yard_map/cache.rb +17 -17
  171. data/lib/solargraph/yard_map/core_docs.rb +163 -163
  172. data/lib/solargraph/yard_map/core_gen.rb +76 -76
  173. data/lib/yard-coregen.rb +16 -16
  174. data/lib/yard-solargraph.rb +18 -18
  175. data/solargraph.gemspec +37 -0
  176. data/travis-bundler.rb +10 -0
  177. metadata +19 -6
@@ -1,18 +1,18 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module Extended
5
- class Document < Base
6
- def process
7
- objects = host.document(params['query'])
8
- page = Solargraph::Page.new(host.options['viewsPath'])
9
- content = page.render('document', layout: true, locals: {objects: objects})
10
- set_result(
11
- content: content
12
- )
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module Extended
5
+ class Document < Base
6
+ def process
7
+ objects = host.document(params['query'])
8
+ page = Solargraph::Page.new(host.options['viewsPath'])
9
+ content = page.render('document', layout: true, locals: {objects: objects})
10
+ set_result(
11
+ content: content
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,30 +1,30 @@
1
- require 'open3'
2
-
3
- module Solargraph
4
- module LanguageServer
5
- module Message
6
- module Extended
7
- # Update YARD documentation for installed gems. If the `rebuild`
8
- # parameter is true, rebuild existing yardocs.
9
- #
10
- class DocumentGems < Base
11
- def process
12
- cmd = "yard gems"
13
- cmd += " --rebuild" if params['rebuild']
14
- o, s = Open3.capture2(cmd)
15
- if s != 0
16
- host.show_message "An error occurred while building gem documentation.", LanguageServer::MessageTypes::ERROR
17
- set_result({
18
- status: 'err'
19
- })
20
- else
21
- set_result({
22
- status: 'ok'
23
- })
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
1
+ require 'open3'
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Extended
7
+ # Update YARD documentation for installed gems. If the `rebuild`
8
+ # parameter is true, rebuild existing yardocs.
9
+ #
10
+ class DocumentGems < Base
11
+ def process
12
+ cmd = "yard gems"
13
+ cmd += " --rebuild" if params['rebuild']
14
+ o, s = Open3.capture2(cmd)
15
+ if s != 0
16
+ host.show_message "An error occurred while building gem documentation.", LanguageServer::MessageTypes::ERROR
17
+ set_result({
18
+ status: 'err'
19
+ })
20
+ else
21
+ set_result({
22
+ status: 'ok'
23
+ })
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -1,20 +1,20 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module Extended
5
- # Update YARD documentation for installed gems. If the `rebuild`
6
- # parameter is true, rebuild existing yardocs.
7
- #
8
- class Environment < Base
9
- def process
10
- page = Solargraph::Page.new(host.options['viewsPath'])
11
- content = page.render('environment', layout: true, locals: { config: host.options, folders: host.folders })
12
- set_result(
13
- content: content
14
- )
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module Extended
5
+ # Update YARD documentation for installed gems. If the `rebuild`
6
+ # parameter is true, rebuild existing yardocs.
7
+ #
8
+ class Environment < Base
9
+ def process
10
+ page = Solargraph::Page.new(host.options['viewsPath'])
11
+ content = page.render('environment', layout: true, locals: { config: host.options, folders: host.folders })
12
+ set_result(
13
+ content: content
14
+ )
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,18 +1,18 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module Extended
5
- class Search < Base
6
- def process
7
- results = host.search(params['query'])
8
- page = Solargraph::Page.new(host.options['viewsPath'])
9
- content = page.render('search', layout: true, locals: {query: params['query'], results: results})
10
- set_result(
11
- content: content
12
- )
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module Extended
5
+ class Search < Base
6
+ def process
7
+ results = host.search(params['query'])
8
+ page = Solargraph::Page.new(host.options['viewsPath'])
9
+ content = page.render('search', layout: true, locals: {query: params['query'], results: results})
10
+ set_result(
11
+ content: content
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,141 +1,141 @@
1
- require 'benchmark'
2
-
3
- module Solargraph
4
- module LanguageServer
5
- module Message
6
- class Initialize < Base
7
- def process
8
- bm = Benchmark.measure {
9
- host.configure params['initializationOptions']
10
- if support_workspace_folders?
11
- host.prepare_folders params['workspaceFolders']
12
- elsif params['rootUri']
13
- host.prepare UriHelpers.uri_to_file(params['rootUri'])
14
- else
15
- host.prepare params['rootPath']
16
- end
17
- result = {
18
- capabilities: {
19
- textDocumentSync: 2, # @todo What should this be?
20
- workspace: {
21
- workspaceFolders: {
22
- supported: true,
23
- changeNotifications: true
24
- }
25
- }
26
- }
27
- }
28
- result[:capabilities].merge! static_completion unless dynamic_registration_for?('textDocument', 'completion')
29
- result[:capabilities].merge! static_signature_help unless dynamic_registration_for?('textDocument', 'signatureHelp')
30
- # result[:capabilities].merge! static_on_type_formatting unless dynamic_registration_for?('textDocument', 'onTypeFormatting')
31
- result[:capabilities].merge! static_hover unless dynamic_registration_for?('textDocument', 'hover')
32
- result[:capabilities].merge! static_document_formatting unless dynamic_registration_for?('textDocument', 'formatting')
33
- result[:capabilities].merge! static_document_symbols unless dynamic_registration_for?('textDocument', 'documentSymbol')
34
- result[:capabilities].merge! static_definitions unless dynamic_registration_for?('textDocument', 'definition')
35
- result[:capabilities].merge! static_rename unless dynamic_registration_for?('textDocument', 'rename')
36
- result[:capabilities].merge! static_references unless dynamic_registration_for?('textDocument', 'references')
37
- result[:capabilities].merge! static_workspace_symbols unless dynamic_registration_for?('workspace', 'symbol')
38
- result[:capabilities].merge! static_folding_range unless dynamic_registration_for?('textDocument', 'foldingRange')
39
- set_result result
40
- }
41
- Solargraph.logger.unknown "Solargraph initialized (#{bm.real} seconds)"
42
- end
43
-
44
- private
45
-
46
- def support_workspace_folders?
47
- params['capabilities'] &&
48
- params['capabilities']['workspace'] &&
49
- params['capabilities']['workspace']['workspaceFolders'] &&
50
- params['workspaceFolders']
51
- end
52
-
53
- def static_completion
54
- {
55
- completionProvider: {
56
- resolveProvider: true,
57
- triggerCharacters: ['.', ':', '@']
58
- }
59
- }
60
- end
61
-
62
- def static_signature_help
63
- {
64
- signatureHelpProvider: {
65
- triggerCharacters: ['(', ',']
66
- }
67
- }
68
- end
69
-
70
- def static_on_type_formatting
71
- {
72
- documentOnTypeFormattingProvider: {
73
- firstTriggerCharacter: '{',
74
- moreTriggerCharacter: ['(']
75
- }
76
- }
77
- end
78
-
79
- def static_hover
80
- {
81
- hoverProvider: true
82
- }
83
- end
84
-
85
- def static_document_formatting
86
- {
87
- documentFormattingProvider: true
88
- }
89
- end
90
-
91
- def static_document_symbols
92
- {
93
- documentSymbolProvider: true
94
- }
95
- end
96
-
97
- def static_workspace_symbols
98
- {
99
- workspaceSymbolProvider: true
100
- }
101
- end
102
-
103
- def static_definitions
104
- {
105
- definitionProvider: true
106
- }
107
- end
108
-
109
- def static_rename
110
- {
111
- renameProvider: {prepareProvider: true}
112
- }
113
- end
114
-
115
- def static_references
116
- {
117
- referencesProvider: true
118
- }
119
- end
120
-
121
- def static_folding_range
122
- {
123
- foldingRangeProvider: true
124
- }
125
- end
126
-
127
- # @param section [String]
128
- # @param capability [String]
129
- # @return [Boolean]
130
- def dynamic_registration_for? section, capability
131
- result = (params['capabilities'] &&
132
- params['capabilities'][section] &&
133
- params['capabilities'][section][capability] &&
134
- params['capabilities'][section][capability]['dynamicRegistration'])
135
- host.allow_registration("#{section}/#{capability}") if result
136
- result
137
- end
138
- end
139
- end
140
- end
141
- end
1
+ require 'benchmark'
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ class Initialize < Base
7
+ def process
8
+ bm = Benchmark.measure {
9
+ host.configure params['initializationOptions']
10
+ if support_workspace_folders?
11
+ host.prepare_folders params['workspaceFolders']
12
+ elsif params['rootUri']
13
+ host.prepare UriHelpers.uri_to_file(params['rootUri'])
14
+ else
15
+ host.prepare params['rootPath']
16
+ end
17
+ result = {
18
+ capabilities: {
19
+ textDocumentSync: 2, # @todo What should this be?
20
+ workspace: {
21
+ workspaceFolders: {
22
+ supported: true,
23
+ changeNotifications: true
24
+ }
25
+ }
26
+ }
27
+ }
28
+ result[:capabilities].merge! static_completion unless dynamic_registration_for?('textDocument', 'completion')
29
+ result[:capabilities].merge! static_signature_help unless dynamic_registration_for?('textDocument', 'signatureHelp')
30
+ # result[:capabilities].merge! static_on_type_formatting unless dynamic_registration_for?('textDocument', 'onTypeFormatting')
31
+ result[:capabilities].merge! static_hover unless dynamic_registration_for?('textDocument', 'hover')
32
+ result[:capabilities].merge! static_document_formatting unless dynamic_registration_for?('textDocument', 'formatting')
33
+ result[:capabilities].merge! static_document_symbols unless dynamic_registration_for?('textDocument', 'documentSymbol')
34
+ result[:capabilities].merge! static_definitions unless dynamic_registration_for?('textDocument', 'definition')
35
+ result[:capabilities].merge! static_rename unless dynamic_registration_for?('textDocument', 'rename')
36
+ result[:capabilities].merge! static_references unless dynamic_registration_for?('textDocument', 'references')
37
+ result[:capabilities].merge! static_workspace_symbols unless dynamic_registration_for?('workspace', 'symbol')
38
+ result[:capabilities].merge! static_folding_range unless dynamic_registration_for?('textDocument', 'foldingRange')
39
+ set_result result
40
+ }
41
+ Solargraph.logger.unknown "Solargraph initialized (#{bm.real} seconds)"
42
+ end
43
+
44
+ private
45
+
46
+ def support_workspace_folders?
47
+ params['capabilities'] &&
48
+ params['capabilities']['workspace'] &&
49
+ params['capabilities']['workspace']['workspaceFolders'] &&
50
+ params['workspaceFolders']
51
+ end
52
+
53
+ def static_completion
54
+ {
55
+ completionProvider: {
56
+ resolveProvider: true,
57
+ triggerCharacters: ['.', ':', '@']
58
+ }
59
+ }
60
+ end
61
+
62
+ def static_signature_help
63
+ {
64
+ signatureHelpProvider: {
65
+ triggerCharacters: ['(', ',']
66
+ }
67
+ }
68
+ end
69
+
70
+ def static_on_type_formatting
71
+ {
72
+ documentOnTypeFormattingProvider: {
73
+ firstTriggerCharacter: '{',
74
+ moreTriggerCharacter: ['(']
75
+ }
76
+ }
77
+ end
78
+
79
+ def static_hover
80
+ {
81
+ hoverProvider: true
82
+ }
83
+ end
84
+
85
+ def static_document_formatting
86
+ {
87
+ documentFormattingProvider: true
88
+ }
89
+ end
90
+
91
+ def static_document_symbols
92
+ {
93
+ documentSymbolProvider: true
94
+ }
95
+ end
96
+
97
+ def static_workspace_symbols
98
+ {
99
+ workspaceSymbolProvider: true
100
+ }
101
+ end
102
+
103
+ def static_definitions
104
+ {
105
+ definitionProvider: true
106
+ }
107
+ end
108
+
109
+ def static_rename
110
+ {
111
+ renameProvider: {prepareProvider: true}
112
+ }
113
+ end
114
+
115
+ def static_references
116
+ {
117
+ referencesProvider: true
118
+ }
119
+ end
120
+
121
+ def static_folding_range
122
+ {
123
+ foldingRangeProvider: true
124
+ }
125
+ end
126
+
127
+ # @param section [String]
128
+ # @param capability [String]
129
+ # @return [Boolean]
130
+ def dynamic_registration_for? section, capability
131
+ result = (params['capabilities'] &&
132
+ params['capabilities'][section] &&
133
+ params['capabilities'][section][capability] &&
134
+ params['capabilities'][section][capability]['dynamicRegistration'])
135
+ host.allow_registration("#{section}/#{capability}") if result
136
+ result
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end