solargraph 0.58.0 → 0.59.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.
Files changed (219) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +3 -0
  3. data/.gitattributes +2 -0
  4. data/.github/workflows/linting.yml +6 -5
  5. data/.github/workflows/plugins.yml +48 -35
  6. data/.github/workflows/rspec.yml +15 -28
  7. data/.github/workflows/typecheck.yml +3 -2
  8. data/.gitignore +1 -0
  9. data/.rubocop.yml +38 -6
  10. data/.rubocop_todo.yml +53 -966
  11. data/CHANGELOG.md +24 -0
  12. data/Gemfile +3 -1
  13. data/README.md +3 -3
  14. data/Rakefile +26 -23
  15. data/bin/solargraph +9 -8
  16. data/lib/solargraph/api_map/cache.rb +110 -110
  17. data/lib/solargraph/api_map/constants.rb +288 -279
  18. data/lib/solargraph/api_map/index.rb +204 -193
  19. data/lib/solargraph/api_map/source_to_yard.rb +110 -97
  20. data/lib/solargraph/api_map/store.rb +395 -384
  21. data/lib/solargraph/api_map.rb +1029 -945
  22. data/lib/solargraph/bench.rb +44 -45
  23. data/lib/solargraph/complex_type/conformance.rb +176 -0
  24. data/lib/solargraph/complex_type/type_methods.rb +240 -228
  25. data/lib/solargraph/complex_type/unique_type.rb +641 -482
  26. data/lib/solargraph/complex_type.rb +557 -444
  27. data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
  28. data/lib/solargraph/convention/data_definition/data_definition_node.rb +93 -91
  29. data/lib/solargraph/convention/data_definition.rb +108 -105
  30. data/lib/solargraph/convention/gemfile.rb +15 -15
  31. data/lib/solargraph/convention/gemspec.rb +23 -23
  32. data/lib/solargraph/convention/rakefile.rb +17 -17
  33. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +62 -61
  34. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +103 -102
  35. data/lib/solargraph/convention/struct_definition.rb +168 -164
  36. data/lib/solargraph/convention.rb +78 -78
  37. data/lib/solargraph/converters/dd.rb +19 -17
  38. data/lib/solargraph/converters/dl.rb +17 -15
  39. data/lib/solargraph/converters/dt.rb +17 -15
  40. data/lib/solargraph/converters/misc.rb +3 -1
  41. data/lib/solargraph/diagnostics/require_not_found.rb +54 -53
  42. data/lib/solargraph/diagnostics/rubocop.rb +119 -118
  43. data/lib/solargraph/diagnostics/rubocop_helpers.rb +70 -68
  44. data/lib/solargraph/diagnostics/type_check.rb +56 -55
  45. data/lib/solargraph/diagnostics/update_errors.rb +37 -41
  46. data/lib/solargraph/doc_map.rb +438 -439
  47. data/lib/solargraph/equality.rb +34 -34
  48. data/lib/solargraph/gem_pins.rb +98 -98
  49. data/lib/solargraph/language_server/error_codes.rb +20 -20
  50. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  51. data/lib/solargraph/language_server/host/dispatch.rb +130 -130
  52. data/lib/solargraph/language_server/host/message_worker.rb +113 -112
  53. data/lib/solargraph/language_server/host/sources.rb +100 -99
  54. data/lib/solargraph/language_server/host.rb +886 -878
  55. data/lib/solargraph/language_server/message/base.rb +97 -97
  56. data/lib/solargraph/language_server/message/client/register_capability.rb +13 -15
  57. data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -60
  58. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +108 -114
  59. data/lib/solargraph/language_server/message/extended/document.rb +24 -23
  60. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  61. data/lib/solargraph/language_server/message/extended/download_core.rb +20 -19
  62. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  63. data/lib/solargraph/language_server/message/initialize.rb +197 -191
  64. data/lib/solargraph/language_server/message/text_document/completion.rb +58 -56
  65. data/lib/solargraph/language_server/message/text_document/definition.rb +49 -40
  66. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +23 -16
  67. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +36 -26
  68. data/lib/solargraph/language_server/message/text_document/formatting.rb +150 -148
  69. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
  70. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +18 -11
  71. data/lib/solargraph/language_server/message/text_document/references.rb +23 -16
  72. data/lib/solargraph/language_server/message/text_document/rename.rb +26 -19
  73. data/lib/solargraph/language_server/message/text_document/signature_help.rb +25 -24
  74. data/lib/solargraph/language_server/message/text_document/type_definition.rb +33 -25
  75. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +41 -35
  76. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +48 -40
  77. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +32 -26
  78. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +33 -23
  79. data/lib/solargraph/language_server/message.rb +94 -94
  80. data/lib/solargraph/language_server/request.rb +29 -27
  81. data/lib/solargraph/language_server/transport/data_reader.rb +72 -74
  82. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  83. data/lib/solargraph/library.rb +702 -683
  84. data/lib/solargraph/location.rb +85 -82
  85. data/lib/solargraph/logging.rb +55 -37
  86. data/lib/solargraph/page.rb +92 -92
  87. data/lib/solargraph/parser/comment_ripper.rb +84 -69
  88. data/lib/solargraph/parser/flow_sensitive_typing.rb +471 -255
  89. data/lib/solargraph/parser/node_processor/base.rb +122 -92
  90. data/lib/solargraph/parser/node_processor.rb +63 -62
  91. data/lib/solargraph/parser/parser_gem/class_methods.rb +165 -149
  92. data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
  93. data/lib/solargraph/parser/parser_gem/node_chainer.rb +191 -166
  94. data/lib/solargraph/parser/parser_gem/node_methods.rb +507 -486
  95. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -22
  96. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +61 -59
  97. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +24 -15
  98. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +45 -46
  99. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +60 -53
  100. data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
  101. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +53 -23
  102. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +42 -40
  103. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +30 -29
  104. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +61 -59
  105. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
  106. data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
  107. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
  108. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +39 -38
  109. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +51 -52
  110. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +302 -291
  111. data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
  112. data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
  113. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +33 -29
  114. data/lib/solargraph/parser/parser_gem/node_processors.rb +74 -70
  115. data/lib/solargraph/parser/parser_gem.rb +14 -12
  116. data/lib/solargraph/parser/region.rb +75 -69
  117. data/lib/solargraph/parser/snippet.rb +19 -17
  118. data/lib/solargraph/parser.rb +25 -23
  119. data/lib/solargraph/pin/base.rb +773 -729
  120. data/lib/solargraph/pin/base_variable.rb +375 -126
  121. data/lib/solargraph/pin/block.rb +127 -104
  122. data/lib/solargraph/pin/breakable.rb +15 -9
  123. data/lib/solargraph/pin/callable.rb +275 -231
  124. data/lib/solargraph/pin/closure.rb +69 -72
  125. data/lib/solargraph/pin/common.rb +97 -79
  126. data/lib/solargraph/pin/compound_statement.rb +55 -0
  127. data/lib/solargraph/pin/constant.rb +43 -45
  128. data/lib/solargraph/pin/conversions.rb +129 -123
  129. data/lib/solargraph/pin/delegated_method.rb +131 -120
  130. data/lib/solargraph/pin/documenting.rb +116 -114
  131. data/lib/solargraph/pin/instance_variable.rb +38 -34
  132. data/lib/solargraph/pin/keyword.rb +16 -20
  133. data/lib/solargraph/pin/local_variable.rb +31 -75
  134. data/lib/solargraph/pin/method.rb +724 -672
  135. data/lib/solargraph/pin/method_alias.rb +42 -34
  136. data/lib/solargraph/pin/namespace.rb +122 -115
  137. data/lib/solargraph/pin/parameter.rb +339 -275
  138. data/lib/solargraph/pin/proxy_type.rb +42 -39
  139. data/lib/solargraph/pin/reference/override.rb +47 -47
  140. data/lib/solargraph/pin/reference/superclass.rb +17 -15
  141. data/lib/solargraph/pin/reference/type_alias.rb +16 -0
  142. data/lib/solargraph/pin/reference.rb +59 -39
  143. data/lib/solargraph/pin/search.rb +62 -61
  144. data/lib/solargraph/pin/signature.rb +64 -61
  145. data/lib/solargraph/pin/symbol.rb +54 -53
  146. data/lib/solargraph/pin/until.rb +16 -18
  147. data/lib/solargraph/pin/while.rb +16 -18
  148. data/lib/solargraph/pin.rb +46 -44
  149. data/lib/solargraph/pin_cache.rb +248 -245
  150. data/lib/solargraph/position.rb +139 -119
  151. data/lib/solargraph/range.rb +113 -112
  152. data/lib/solargraph/rbs_map/conversions.rb +952 -823
  153. data/lib/solargraph/rbs_map/core_fills.rb +91 -84
  154. data/lib/solargraph/rbs_map/core_map.rb +65 -58
  155. data/lib/solargraph/rbs_map/stdlib_map.rb +71 -43
  156. data/lib/solargraph/rbs_map.rb +207 -163
  157. data/lib/solargraph/server_methods.rb +16 -16
  158. data/lib/solargraph/shell.rb +555 -352
  159. data/lib/solargraph/source/chain/array.rb +39 -37
  160. data/lib/solargraph/source/chain/call.rb +377 -337
  161. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  162. data/lib/solargraph/source/chain/constant.rb +30 -26
  163. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  164. data/lib/solargraph/source/chain/hash.rb +37 -34
  165. data/lib/solargraph/source/chain/if.rb +30 -28
  166. data/lib/solargraph/source/chain/instance_variable.rb +36 -13
  167. data/lib/solargraph/source/chain/link.rb +99 -109
  168. data/lib/solargraph/source/chain/literal.rb +51 -48
  169. data/lib/solargraph/source/chain/or.rb +29 -23
  170. data/lib/solargraph/source/chain/q_call.rb +13 -11
  171. data/lib/solargraph/source/chain/variable.rb +15 -13
  172. data/lib/solargraph/source/chain/z_super.rb +28 -30
  173. data/lib/solargraph/source/chain.rb +304 -291
  174. data/lib/solargraph/source/change.rb +89 -82
  175. data/lib/solargraph/source/cursor.rb +172 -166
  176. data/lib/solargraph/source/encoding_fixes.rb +22 -23
  177. data/lib/solargraph/source/source_chainer.rb +218 -194
  178. data/lib/solargraph/source/updater.rb +59 -55
  179. data/lib/solargraph/source.rb +522 -498
  180. data/lib/solargraph/source_map/clip.rb +245 -226
  181. data/lib/solargraph/source_map/data.rb +37 -34
  182. data/lib/solargraph/source_map/mapper.rb +286 -259
  183. data/lib/solargraph/source_map.rb +224 -212
  184. data/lib/solargraph/type_checker/problem.rb +34 -32
  185. data/lib/solargraph/type_checker/rules.rb +157 -84
  186. data/lib/solargraph/type_checker.rb +888 -814
  187. data/lib/solargraph/version.rb +5 -5
  188. data/lib/solargraph/workspace/config.rb +258 -255
  189. data/lib/solargraph/workspace/gemspecs.rb +367 -0
  190. data/lib/solargraph/workspace/require_paths.rb +98 -97
  191. data/lib/solargraph/workspace.rb +242 -220
  192. data/lib/solargraph/yard_map/helpers.rb +49 -44
  193. data/lib/solargraph/yard_map/mapper/to_method.rb +136 -130
  194. data/lib/solargraph/yard_map/mapper/to_namespace.rb +32 -31
  195. data/lib/solargraph/yard_map/mapper.rb +84 -79
  196. data/lib/solargraph/yard_map.rb +17 -18
  197. data/lib/solargraph/yard_tags.rb +20 -20
  198. data/lib/solargraph/yardoc.rb +90 -87
  199. data/lib/solargraph.rb +128 -105
  200. data/rbs/fills/rubygems/0/dependency.rbs +193 -0
  201. data/rbs/fills/tuple/tuple.rbs +28 -0
  202. data/rbs/shims/ast/0/node.rbs +5 -0
  203. data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
  204. data/rbs_collection.yaml +1 -1
  205. data/solargraph.gemspec +37 -35
  206. metadata +52 -51
  207. data/lib/solargraph/type_checker/checks.rb +0 -124
  208. data/lib/solargraph/type_checker/param_def.rb +0 -37
  209. data/lib/solargraph/yard_map/to_method.rb +0 -89
  210. data/sig/shims/ast/0/node.rbs +0 -5
  211. /data/{sig → rbs}/shims/ast/2.4/.rbs_meta.yaml +0 -0
  212. /data/{sig → rbs}/shims/ast/2.4/ast.rbs +0 -0
  213. /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
  214. /data/{sig → rbs}/shims/parser/3.2.0.1/manifest.yaml +0 -0
  215. /data/{sig → rbs}/shims/parser/3.2.0.1/parser.rbs +0 -0
  216. /data/{sig → rbs}/shims/parser/3.2.0.1/polyfill.rbs +0 -0
  217. /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
  218. /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
  219. /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
@@ -1,16 +1,23 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph::LanguageServer::Message::TextDocument
4
- class References < Base
5
- def process
6
- locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'])
7
- result = locs.map do |loc|
8
- {
9
- uri: file_to_uri(loc.filename),
10
- range: loc.range.to_hash
11
- }
12
- end
13
- set_result result
14
- end
15
- end
16
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module TextDocument
7
+ class References < Base
8
+ def process
9
+ locs = host.references_from(params['textDocument']['uri'], params['position']['line'],
10
+ params['position']['character'])
11
+ result = locs.map do |loc|
12
+ {
13
+ uri: file_to_uri(loc.filename),
14
+ range: loc.range.to_hash
15
+ }
16
+ end
17
+ set_result result
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,19 +1,26 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph::LanguageServer::Message::TextDocument
4
- class Rename < Base
5
- def process
6
- locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'], strip: true)
7
- changes = {}
8
- locs.each do |loc|
9
- uri = file_to_uri(loc.filename)
10
- changes[uri] ||= []
11
- changes[uri].push({
12
- range: loc.range.to_hash,
13
- newText: params['newName']
14
- })
15
- end
16
- set_result changes: changes
17
- end
18
- end
19
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module TextDocument
7
+ class Rename < Base
8
+ def process
9
+ locs = host.references_from(params['textDocument']['uri'], params['position']['line'],
10
+ params['position']['character'], strip: true)
11
+ changes = {}
12
+ locs.each do |loc|
13
+ uri = file_to_uri(loc.filename)
14
+ changes[uri] ||= []
15
+ changes[uri].push({
16
+ range: loc.range.to_hash,
17
+ newText: params['newName']
18
+ })
19
+ end
20
+ set_result changes: changes
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,24 +1,25 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module LanguageServer
5
- module Message
6
- module TextDocument
7
- class SignatureHelp < TextDocument::Base
8
- def process
9
- line = params['position']['line']
10
- col = params['position']['character']
11
- suggestions = host.signatures_at(params['textDocument']['uri'], line, col)
12
- set_result({
13
- signatures: suggestions.flat_map { |pin| pin.signature_help }
14
- })
15
- rescue FileNotFoundError => e
16
- Logging.logger.warn "[#{e.class}] #{e.message}"
17
- Logging.logger.warn e.backtrace.join("\n")
18
- set_result nil
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module TextDocument
7
+ class SignatureHelp < TextDocument::Base
8
+ def process
9
+ line = params['position']['line']
10
+ col = params['position']['character']
11
+ suggestions = host.signatures_at(params['textDocument']['uri'], line, col)
12
+ set_result({
13
+ signatures: suggestions.flat_map(&:signature_help)
14
+ })
15
+ rescue FileNotFoundError => e
16
+ Logging.logger.warn "[#{e.class}] #{e.message}"
17
+ # @sg-ignore Need to add nil check here
18
+ Logging.logger.warn e.backtrace.join("\n")
19
+ set_result nil
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,25 +1,33 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph::LanguageServer::Message::TextDocument
4
- class TypeDefinition < Base
5
- def process
6
- @line = params['position']['line']
7
- @column = params['position']['character']
8
- set_result(code_location || [])
9
- end
10
-
11
- private
12
-
13
- # @return [Array<Hash>, nil]
14
- def code_location
15
- suggestions = host.type_definitions_at(params['textDocument']['uri'], @line, @column)
16
- return nil if suggestions.empty?
17
- suggestions.reject { |pin| pin.best_location.nil? || pin.best_location.filename.nil? }.map do |pin|
18
- {
19
- uri: file_to_uri(pin.best_location.filename),
20
- range: pin.best_location.range.to_hash
21
- }
22
- end
23
- end
24
- end
25
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module TextDocument
7
+ class TypeDefinition < Base
8
+ def process
9
+ @line = params['position']['line']
10
+ @column = params['position']['character']
11
+ set_result(code_location || [])
12
+ end
13
+
14
+ private
15
+
16
+ # @return [Array<Hash>, nil]
17
+ def code_location
18
+ suggestions = host.type_definitions_at(params['textDocument']['uri'], @line, @column)
19
+ # @sg-ignore Need to add nil check here
20
+ return nil if suggestions.empty?
21
+ # @sg-ignore Need to add nil check here
22
+ suggestions.reject { |pin| pin.best_location.nil? || pin.best_location.filename.nil? }.map do |pin|
23
+ {
24
+ uri: file_to_uri(pin.best_location.filename),
25
+ range: pin.best_location.range.to_hash
26
+ }
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,35 +1,41 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph::LanguageServer::Message::Workspace
4
- class DidChangeConfiguration < Solargraph::LanguageServer::Message::Base
5
- def process
6
- return unless params['settings']
7
- update = params['settings']['solargraph']
8
- host.configure update
9
- register_from_options
10
- end
11
-
12
- private
13
-
14
- # @return [void]
15
- def register_from_options
16
- Solargraph.logger.debug "Registering capabilities from options: #{host.options.inspect}"
17
- # @type [Array<String>]
18
- y = []
19
- # @type [Array<String>]
20
- n = []
21
- (host.options['completion'] ? y : n).push('textDocument/completion')
22
- (host.options['hover'] ? y : n).push('textDocument/hover', 'textDocument/signatureHelp')
23
- (host.options['autoformat'] ? y : n).push('textDocument/onTypeFormatting')
24
- (host.options['formatting'] ? y : n).push('textDocument/formatting')
25
- (host.options['symbols'] ? y : n).push('textDocument/documentSymbol', 'workspace/symbol')
26
- (host.options['definitions'] ? y : n).push('textDocument/definition')
27
- (host.options['typeDefinitions'] ? y : n).push('textDocument/typeDefinition')
28
- (host.options['references'] ? y : n).push('textDocument/references')
29
- (host.options['folding'] ? y : n).push('textDocument/folding')
30
- (host.options['highlights'] ? y : n).push('textDocument/documentHighlight')
31
- host.register_capabilities y
32
- host.unregister_capabilities n
33
- end
34
- end
35
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ class DidChangeConfiguration < Solargraph::LanguageServer::Message::Base
8
+ def process
9
+ return unless params['settings']
10
+ update = params['settings']['solargraph']
11
+ host.configure update
12
+ register_from_options
13
+ end
14
+
15
+ private
16
+
17
+ # @return [void]
18
+ def register_from_options
19
+ Solargraph.logger.debug "Registering capabilities from options: #{host.options.inspect}"
20
+ # @type [Array<String>]
21
+ y = []
22
+ # @type [Array<String>]
23
+ n = []
24
+ (host.options['completion'] ? y : n).push('textDocument/completion')
25
+ (host.options['hover'] ? y : n).push('textDocument/hover', 'textDocument/signatureHelp')
26
+ (host.options['autoformat'] ? y : n).push('textDocument/onTypeFormatting')
27
+ (host.options['formatting'] ? y : n).push('textDocument/formatting')
28
+ (host.options['symbols'] ? y : n).push('textDocument/documentSymbol', 'workspace/symbol')
29
+ (host.options['definitions'] ? y : n).push('textDocument/definition')
30
+ (host.options['typeDefinitions'] ? y : n).push('textDocument/typeDefinition')
31
+ (host.options['references'] ? y : n).push('textDocument/references')
32
+ (host.options['folding'] ? y : n).push('textDocument/folding')
33
+ (host.options['highlights'] ? y : n).push('textDocument/documentHighlight')
34
+ host.register_capabilities y
35
+ host.unregister_capabilities n
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -1,40 +1,48 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph::LanguageServer::Message::Workspace
4
- class DidChangeWatchedFiles < Solargraph::LanguageServer::Message::Base
5
- CREATED = 1
6
- CHANGED = 2
7
- DELETED = 3
8
-
9
- include Solargraph::LanguageServer::UriHelpers
10
-
11
- def process
12
- need_catalog = false
13
- to_create = []
14
- to_delete = []
15
-
16
- # @param change [Hash]
17
- params['changes'].each do |change|
18
- if change['type'] == CREATED
19
- to_create << change['uri']
20
- need_catalog = true
21
- elsif change['type'] == CHANGED
22
- next if host.open?(change['uri'])
23
- to_create << change['uri']
24
- need_catalog = true
25
- elsif change['type'] == DELETED
26
- to_delete << change['uri']
27
- need_catalog = true
28
- else
29
- set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS, "Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
30
- end
31
- end
32
-
33
- host.create *to_create
34
- host.delete *to_delete
35
-
36
- # Force host to catalog libraries after file changes (see castwide/solargraph#139)
37
- host.catalog if need_catalog
38
- end
39
- end
40
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ class DidChangeWatchedFiles < Solargraph::LanguageServer::Message::Base
8
+ CREATED = 1
9
+ CHANGED = 2
10
+ DELETED = 3
11
+
12
+ include Solargraph::LanguageServer::UriHelpers
13
+
14
+ def process
15
+ need_catalog = false
16
+ to_create = []
17
+ to_delete = []
18
+
19
+ # @param change [Hash]
20
+ params['changes'].each do |change|
21
+ case change['type']
22
+ when CREATED
23
+ to_create << change['uri']
24
+ need_catalog = true
25
+ when CHANGED
26
+ next if host.open?(change['uri'])
27
+ to_create << change['uri']
28
+ need_catalog = true
29
+ when DELETED
30
+ to_delete << change['uri']
31
+ need_catalog = true
32
+ else
33
+ set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS,
34
+ "Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
35
+ end
36
+ end
37
+
38
+ host.create(*to_create)
39
+ host.delete(*to_delete)
40
+
41
+ # Force host to catalog libraries after file changes (see castwide/solargraph#139)
42
+ host.catalog if need_catalog
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,26 +1,32 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph::LanguageServer::Message::Workspace
4
- class DidChangeWorkspaceFolders < Solargraph::LanguageServer::Message::Base
5
- def process
6
- add_folders
7
- remove_folders
8
- end
9
-
10
- private
11
-
12
- # @return [void]
13
- def add_folders
14
- return unless params['event'] && params['event']['added']
15
- host.prepare_folders params['event']['added']
16
- end
17
-
18
- # @return [void]
19
- def remove_folders
20
- return unless params['event'] && params['event']['removed']
21
- params['event']['removed'].each do |folder|
22
- host.remove_folders params['event']['removed']
23
- end
24
- end
25
- end
26
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ class DidChangeWorkspaceFolders < Solargraph::LanguageServer::Message::Base
8
+ def process
9
+ add_folders
10
+ remove_folders
11
+ end
12
+
13
+ private
14
+
15
+ # @return [void]
16
+ def add_folders
17
+ return unless params['event'] && params['event']['added']
18
+ host.prepare_folders params['event']['added']
19
+ end
20
+
21
+ # @return [void]
22
+ def remove_folders
23
+ return unless params['event'] && params['event']['removed']
24
+ params['event']['removed'].each do |_folder|
25
+ host.remove_folders params['event']['removed']
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,23 +1,33 @@
1
- # frozen_string_literal: true
2
-
3
- class Solargraph::LanguageServer::Message::Workspace::WorkspaceSymbol < Solargraph::LanguageServer::Message::Base
4
- include Solargraph::LanguageServer::UriHelpers
5
-
6
- def process
7
- pins = host.query_symbols(params['query'])
8
- info = pins.map do |pin|
9
- uri = file_to_uri(pin.best_location.filename)
10
- {
11
- name: pin.path,
12
- containerName: pin.namespace,
13
- kind: pin.symbol_kind,
14
- location: {
15
- uri: uri,
16
- range: pin.best_location.range.to_hash
17
- },
18
- deprecated: pin.deprecated?
19
- }
20
- end
21
- set_result info
22
- end
23
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ class WorkspaceSymbol < Solargraph::LanguageServer::Message::Base
8
+ include Solargraph::LanguageServer::UriHelpers
9
+
10
+ def process
11
+ pins = host.query_symbols(params['query'])
12
+ info = pins.map do |pin|
13
+ # @sg-ignore Need to add nil check here
14
+ uri = file_to_uri(pin.best_location.filename)
15
+ {
16
+ name: pin.path,
17
+ containerName: pin.namespace,
18
+ kind: pin.symbol_kind,
19
+ location: {
20
+ uri: uri,
21
+ # @sg-ignore Need to add nil check here
22
+ range: pin.best_location.range.to_hash
23
+ },
24
+ deprecated: pin.deprecated?
25
+ }
26
+ end
27
+ set_result info
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end