solargraph 0.46.0 → 0.54.5

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 (279) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/plugins.yml +40 -0
  4. data/.github/workflows/rspec.yml +37 -41
  5. data/.github/workflows/typecheck.yml +34 -0
  6. data/.gitignore +9 -9
  7. data/.rspec +2 -2
  8. data/.yardopts +2 -2
  9. data/CHANGELOG.md +1338 -1115
  10. data/Gemfile +0 -0
  11. data/LICENSE +1 -1
  12. data/README.md +131 -128
  13. data/Rakefile +0 -0
  14. data/SPONSORS.md +10 -18
  15. data/bin/solargraph +0 -0
  16. data/lib/solargraph/api_map/cache.rb +109 -70
  17. data/lib/solargraph/api_map/index.rb +167 -0
  18. data/lib/solargraph/api_map/source_to_yard.rb +88 -81
  19. data/lib/solargraph/api_map/store.rb +260 -256
  20. data/lib/solargraph/api_map.rb +870 -686
  21. data/lib/solargraph/bench.rb +44 -27
  22. data/lib/solargraph/cache.rb +77 -0
  23. data/lib/solargraph/complex_type/type_methods.rb +217 -130
  24. data/lib/solargraph/complex_type/unique_type.rb +386 -75
  25. data/lib/solargraph/complex_type.rb +394 -221
  26. data/lib/solargraph/convention/base.rb +33 -33
  27. data/lib/solargraph/convention/gemfile.rb +15 -15
  28. data/lib/solargraph/convention/gemspec.rb +22 -22
  29. data/lib/solargraph/convention/rakefile.rb +17 -0
  30. data/lib/solargraph/convention.rb +47 -47
  31. data/lib/solargraph/converters/dd.rb +17 -12
  32. data/lib/solargraph/converters/dl.rb +15 -12
  33. data/lib/solargraph/converters/dt.rb +15 -12
  34. data/lib/solargraph/converters/misc.rb +1 -1
  35. data/lib/solargraph/diagnostics/base.rb +29 -29
  36. data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
  37. data/lib/solargraph/diagnostics/rubocop.rb +113 -98
  38. data/lib/solargraph/diagnostics/rubocop_helpers.rb +66 -63
  39. data/lib/solargraph/diagnostics/severities.rb +15 -15
  40. data/lib/solargraph/diagnostics/type_check.rb +55 -54
  41. data/lib/solargraph/diagnostics/update_errors.rb +41 -41
  42. data/lib/solargraph/diagnostics.rb +55 -55
  43. data/lib/solargraph/doc_map.rb +188 -0
  44. data/lib/solargraph/environ.rb +45 -45
  45. data/lib/solargraph/equality.rb +33 -0
  46. data/lib/solargraph/gem_pins.rb +72 -0
  47. data/lib/solargraph/language_server/completion_item_kinds.rb +35 -35
  48. data/lib/solargraph/language_server/error_codes.rb +20 -20
  49. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  50. data/lib/solargraph/language_server/host/dispatch.rb +128 -111
  51. data/lib/solargraph/language_server/host/message_worker.rb +106 -59
  52. data/lib/solargraph/language_server/host/sources.rb +99 -156
  53. data/lib/solargraph/language_server/host.rb +861 -865
  54. data/lib/solargraph/language_server/message/base.rb +96 -89
  55. data/lib/solargraph/language_server/message/cancel_request.rb +13 -13
  56. data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
  57. data/lib/solargraph/language_server/message/client.rb +11 -11
  58. data/lib/solargraph/language_server/message/completion_item/resolve.rb +60 -58
  59. data/lib/solargraph/language_server/message/completion_item.rb +11 -11
  60. data/lib/solargraph/language_server/message/exit_notification.rb +13 -13
  61. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +112 -100
  62. data/lib/solargraph/language_server/message/extended/document.rb +20 -20
  63. data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
  64. data/lib/solargraph/language_server/message/extended/download_core.rb +19 -23
  65. data/lib/solargraph/language_server/message/extended/environment.rb +25 -25
  66. data/lib/solargraph/language_server/message/extended/search.rb +20 -20
  67. data/lib/solargraph/language_server/message/extended.rb +21 -21
  68. data/lib/solargraph/language_server/message/initialize.rb +191 -162
  69. data/lib/solargraph/language_server/message/initialized.rb +28 -27
  70. data/lib/solargraph/language_server/message/method_not_found.rb +16 -16
  71. data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -14
  72. data/lib/solargraph/language_server/message/shutdown.rb +13 -13
  73. data/lib/solargraph/language_server/message/text_document/base.rb +19 -19
  74. data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -17
  75. data/lib/solargraph/language_server/message/text_document/completion.rb +56 -59
  76. data/lib/solargraph/language_server/message/text_document/definition.rb +38 -38
  77. data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -15
  78. data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -15
  79. data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -15
  80. data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -17
  81. data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
  82. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -23
  83. data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -26
  84. data/lib/solargraph/language_server/message/text_document/formatting.rb +131 -126
  85. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -54
  86. data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -34
  87. data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
  88. data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
  89. data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
  90. data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -29
  91. data/lib/solargraph/language_server/message/text_document/type_definition.rb +24 -0
  92. data/lib/solargraph/language_server/message/text_document.rb +28 -28
  93. data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +35 -30
  94. data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +40 -33
  95. data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
  96. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
  97. data/lib/solargraph/language_server/message/workspace.rb +14 -14
  98. data/lib/solargraph/language_server/message.rb +94 -93
  99. data/lib/solargraph/language_server/message_types.rb +14 -14
  100. data/lib/solargraph/language_server/progress.rb +135 -0
  101. data/lib/solargraph/language_server/request.rb +24 -24
  102. data/lib/solargraph/language_server/symbol_kinds.rb +36 -36
  103. data/lib/solargraph/language_server/transport/adapter.rb +68 -53
  104. data/lib/solargraph/language_server/transport/data_reader.rb +74 -72
  105. data/lib/solargraph/language_server/transport.rb +13 -13
  106. data/lib/solargraph/language_server/uri_helpers.rb +49 -49
  107. data/lib/solargraph/language_server.rb +20 -19
  108. data/lib/solargraph/library.rb +663 -546
  109. data/lib/solargraph/location.rb +58 -37
  110. data/lib/solargraph/logging.rb +27 -27
  111. data/lib/solargraph/page.rb +89 -83
  112. data/lib/solargraph/parser/comment_ripper.rb +56 -52
  113. data/lib/solargraph/parser/node_methods.rb +83 -43
  114. data/lib/solargraph/parser/node_processor/base.rb +87 -77
  115. data/lib/solargraph/parser/node_processor.rb +45 -43
  116. data/lib/solargraph/parser/{legacy → parser_gem}/class_methods.rb +153 -135
  117. data/lib/solargraph/parser/{legacy → parser_gem}/flawed_builder.rb +18 -16
  118. data/lib/solargraph/parser/{legacy → parser_gem}/node_chainer.rb +164 -148
  119. data/lib/solargraph/parser/parser_gem/node_methods.rb +495 -0
  120. data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/alias_node.rb +23 -23
  121. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +57 -0
  122. data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/begin_node.rb +15 -15
  123. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/block_node.rb +43 -42
  124. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/casgn_node.rb +35 -25
  125. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/cvasgn_node.rb +23 -23
  126. data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/def_node.rb +50 -63
  127. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/defs_node.rb +36 -36
  128. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/gvasgn_node.rb +23 -23
  129. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/ivasgn_node.rb +38 -38
  130. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/lvasgn_node.rb +28 -28
  131. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +53 -0
  132. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/namespace_node.rb +39 -39
  133. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/orasgn_node.rb +16 -16
  134. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/resbody_node.rb +36 -36
  135. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +42 -0
  136. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/send_node.rb +259 -257
  137. data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/sym_node.rb +18 -18
  138. data/lib/solargraph/parser/parser_gem/node_processors.rb +56 -0
  139. data/lib/solargraph/parser/parser_gem.rb +12 -0
  140. data/lib/solargraph/parser/region.rb +66 -66
  141. data/lib/solargraph/parser/snippet.rb +15 -13
  142. data/lib/solargraph/parser.rb +22 -26
  143. data/lib/solargraph/pin/base.rb +378 -296
  144. data/lib/solargraph/pin/base_variable.rb +118 -84
  145. data/lib/solargraph/pin/block.rb +101 -72
  146. data/lib/solargraph/pin/callable.rb +147 -0
  147. data/lib/solargraph/pin/class_variable.rb +8 -8
  148. data/lib/solargraph/pin/closure.rb +57 -37
  149. data/lib/solargraph/pin/common.rb +70 -70
  150. data/lib/solargraph/pin/constant.rb +43 -43
  151. data/lib/solargraph/pin/conversions.rb +123 -96
  152. data/lib/solargraph/pin/delegated_method.rb +101 -0
  153. data/lib/solargraph/pin/documenting.rb +98 -105
  154. data/lib/solargraph/pin/duck_method.rb +16 -16
  155. data/lib/solargraph/pin/global_variable.rb +8 -8
  156. data/lib/solargraph/pin/instance_variable.rb +34 -30
  157. data/lib/solargraph/pin/keyword.rb +15 -15
  158. data/lib/solargraph/pin/keyword_param.rb +8 -8
  159. data/lib/solargraph/pin/local_variable.rb +67 -55
  160. data/lib/solargraph/pin/method.rb +527 -245
  161. data/lib/solargraph/pin/method_alias.rb +31 -31
  162. data/lib/solargraph/pin/namespace.rb +107 -91
  163. data/lib/solargraph/pin/parameter.rb +212 -201
  164. data/lib/solargraph/pin/proxy_type.rb +29 -29
  165. data/lib/solargraph/pin/reference/extend.rb +10 -10
  166. data/lib/solargraph/pin/reference/include.rb +10 -10
  167. data/lib/solargraph/pin/reference/override.rb +29 -29
  168. data/lib/solargraph/pin/reference/prepend.rb +10 -10
  169. data/lib/solargraph/pin/reference/require.rb +14 -14
  170. data/lib/solargraph/pin/reference/superclass.rb +10 -10
  171. data/lib/solargraph/pin/reference.rb +22 -14
  172. data/lib/solargraph/pin/search.rb +56 -56
  173. data/lib/solargraph/pin/signature.rb +17 -0
  174. data/lib/solargraph/pin/singleton.rb +11 -11
  175. data/lib/solargraph/pin/symbol.rb +47 -47
  176. data/lib/solargraph/pin.rb +41 -37
  177. data/lib/solargraph/position.rb +107 -100
  178. data/lib/solargraph/range.rb +98 -95
  179. data/lib/solargraph/rbs_map/conversions.rb +646 -0
  180. data/lib/solargraph/rbs_map/core_fills.rb +50 -0
  181. data/lib/solargraph/rbs_map/core_map.rb +28 -0
  182. data/lib/solargraph/rbs_map/stdlib_map.rb +33 -0
  183. data/lib/solargraph/rbs_map.rb +93 -0
  184. data/lib/solargraph/server_methods.rb +16 -16
  185. data/lib/solargraph/shell.rb +269 -226
  186. data/lib/solargraph/source/chain/array.rb +33 -0
  187. data/lib/solargraph/source/chain/block_symbol.rb +13 -0
  188. data/lib/solargraph/source/chain/block_variable.rb +13 -13
  189. data/lib/solargraph/source/chain/call.rb +303 -204
  190. data/lib/solargraph/source/chain/class_variable.rb +13 -13
  191. data/lib/solargraph/source/chain/constant.rb +89 -75
  192. data/lib/solargraph/source/chain/global_variable.rb +13 -13
  193. data/lib/solargraph/source/chain/hash.rb +33 -28
  194. data/lib/solargraph/source/chain/head.rb +19 -19
  195. data/lib/solargraph/source/chain/if.rb +28 -0
  196. data/lib/solargraph/source/chain/instance_variable.rb +13 -13
  197. data/lib/solargraph/source/chain/link.rb +98 -71
  198. data/lib/solargraph/source/chain/literal.rb +28 -23
  199. data/lib/solargraph/source/chain/or.rb +23 -23
  200. data/lib/solargraph/source/chain/q_call.rb +11 -11
  201. data/lib/solargraph/source/chain/variable.rb +13 -13
  202. data/lib/solargraph/source/chain/z_super.rb +30 -30
  203. data/lib/solargraph/source/chain.rb +252 -164
  204. data/lib/solargraph/source/change.rb +82 -79
  205. data/lib/solargraph/source/cursor.rb +167 -164
  206. data/lib/solargraph/source/source_chainer.rb +194 -191
  207. data/lib/solargraph/source/updater.rb +55 -54
  208. data/lib/solargraph/source.rb +495 -522
  209. data/lib/solargraph/source_map/clip.rb +232 -224
  210. data/lib/solargraph/source_map/completion.rb +23 -23
  211. data/lib/solargraph/source_map/data.rb +30 -0
  212. data/lib/solargraph/source_map/mapper.rb +255 -212
  213. data/lib/solargraph/source_map.rb +217 -180
  214. data/lib/solargraph/type_checker/checks.rb +120 -99
  215. data/lib/solargraph/type_checker/param_def.rb +35 -35
  216. data/lib/solargraph/type_checker/problem.rb +32 -32
  217. data/lib/solargraph/type_checker/rules.rb +62 -57
  218. data/lib/solargraph/type_checker.rb +672 -543
  219. data/lib/solargraph/version.rb +5 -5
  220. data/lib/solargraph/views/environment.erb +56 -58
  221. data/lib/solargraph/workspace/config.rb +239 -231
  222. data/lib/solargraph/workspace.rb +239 -215
  223. data/lib/solargraph/yard_map/cache.rb +25 -19
  224. data/lib/solargraph/yard_map/helpers.rb +16 -16
  225. data/lib/solargraph/yard_map/mapper/to_constant.rb +26 -25
  226. data/lib/solargraph/yard_map/mapper/to_method.rb +94 -78
  227. data/lib/solargraph/yard_map/mapper/to_namespace.rb +28 -27
  228. data/lib/solargraph/yard_map/mapper.rb +78 -77
  229. data/lib/solargraph/yard_map/to_method.rb +86 -79
  230. data/lib/solargraph/yard_map.rb +18 -460
  231. data/lib/solargraph/yard_tags.rb +20 -0
  232. data/lib/solargraph/yardoc.rb +52 -0
  233. data/lib/solargraph.rb +72 -69
  234. data/solargraph.gemspec +21 -10
  235. metadata +184 -115
  236. data/.travis.yml +0 -19
  237. data/lib/solargraph/api_map/bundler_methods.rb +0 -22
  238. data/lib/solargraph/compat.rb +0 -37
  239. data/lib/solargraph/convention/rspec.rb +0 -30
  240. data/lib/solargraph/documentor.rb +0 -76
  241. data/lib/solargraph/language_server/host/cataloger.rb +0 -56
  242. data/lib/solargraph/parser/legacy/node_methods.rb +0 -325
  243. data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +0 -23
  244. data/lib/solargraph/parser/legacy/node_processors/args_node.rb +0 -35
  245. data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +0 -15
  246. data/lib/solargraph/parser/legacy/node_processors/def_node.rb +0 -63
  247. data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +0 -21
  248. data/lib/solargraph/parser/legacy/node_processors.rb +0 -54
  249. data/lib/solargraph/parser/legacy.rb +0 -12
  250. data/lib/solargraph/parser/rubyvm/class_methods.rb +0 -144
  251. data/lib/solargraph/parser/rubyvm/node_chainer.rb +0 -160
  252. data/lib/solargraph/parser/rubyvm/node_methods.rb +0 -315
  253. data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +0 -85
  254. data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +0 -42
  255. data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +0 -22
  256. data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +0 -23
  257. data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +0 -57
  258. data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +0 -23
  259. data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +0 -38
  260. data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +0 -39
  261. data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +0 -20
  262. data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +0 -27
  263. data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +0 -39
  264. data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +0 -26
  265. data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +0 -15
  266. data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +0 -45
  267. data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +0 -21
  268. data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +0 -15
  269. data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +0 -277
  270. data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +0 -18
  271. data/lib/solargraph/parser/rubyvm/node_processors.rb +0 -63
  272. data/lib/solargraph/parser/rubyvm.rb +0 -40
  273. data/lib/solargraph/yard_map/core_docs.rb +0 -170
  274. data/lib/solargraph/yard_map/core_fills.rb +0 -208
  275. data/lib/solargraph/yard_map/core_gen.rb +0 -76
  276. data/lib/solargraph/yard_map/rdoc_to_yard.rb +0 -140
  277. data/lib/solargraph/yard_map/stdlib_fills.rb +0 -43
  278. data/lib/yard-solargraph.rb +0 -33
  279. data/yardoc/2.2.2.tar.gz +0 -0
@@ -0,0 +1,24 @@
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
+ def code_location
14
+ suggestions = host.type_definitions_at(params['textDocument']['uri'], @line, @column)
15
+ return nil if suggestions.empty?
16
+ suggestions.reject { |pin| pin.best_location.nil? || pin.best_location.filename.nil? }.map do |pin|
17
+ {
18
+ uri: file_to_uri(pin.best_location.filename),
19
+ range: pin.best_location.range.to_hash
20
+ }
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,28 +1,28 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module LanguageServer
5
- module Message
6
- module TextDocument
7
- autoload :Base, 'solargraph/language_server/message/text_document/base'
8
- autoload :Completion, 'solargraph/language_server/message/text_document/completion'
9
- autoload :DidOpen, 'solargraph/language_server/message/text_document/did_open'
10
- autoload :DidChange, 'solargraph/language_server/message/text_document/did_change'
11
- autoload :DidClose, 'solargraph/language_server/message/text_document/did_close'
12
- autoload :DidSave, 'solargraph/language_server/message/text_document/did_save'
13
- autoload :Hover, 'solargraph/language_server/message/text_document/hover'
14
- autoload :SignatureHelp, 'solargraph/language_server/message/text_document/signature_help'
15
- autoload :DiagnosticsQueue, 'solargraph/language_server/message/text_document/diagnostics_queue'
16
- autoload :OnTypeFormatting, 'solargraph/language_server/message/text_document/on_type_formatting'
17
- autoload :Definition, 'solargraph/language_server/message/text_document/definition'
18
- autoload :DocumentSymbol, 'solargraph/language_server/message/text_document/document_symbol'
19
- autoload :Formatting, 'solargraph/language_server/message/text_document/formatting'
20
- autoload :References, 'solargraph/language_server/message/text_document/references'
21
- autoload :Rename, 'solargraph/language_server/message/text_document/rename'
22
- autoload :PrepareRename, 'solargraph/language_server/message/text_document/prepare_rename'
23
- autoload :FoldingRange, 'solargraph/language_server/message/text_document/folding_range'
24
- autoload :DocumentHighlight, 'solargraph/language_server/message/text_document/document_highlight'
25
- end
26
- end
27
- end
28
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module TextDocument
7
+ autoload :Base, 'solargraph/language_server/message/text_document/base'
8
+ autoload :Completion, 'solargraph/language_server/message/text_document/completion'
9
+ autoload :DidOpen, 'solargraph/language_server/message/text_document/did_open'
10
+ autoload :DidChange, 'solargraph/language_server/message/text_document/did_change'
11
+ autoload :DidClose, 'solargraph/language_server/message/text_document/did_close'
12
+ autoload :DidSave, 'solargraph/language_server/message/text_document/did_save'
13
+ autoload :Hover, 'solargraph/language_server/message/text_document/hover'
14
+ autoload :SignatureHelp, 'solargraph/language_server/message/text_document/signature_help'
15
+ autoload :OnTypeFormatting, 'solargraph/language_server/message/text_document/on_type_formatting'
16
+ autoload :Definition, 'solargraph/language_server/message/text_document/definition'
17
+ autoload :TypeDefinition, 'solargraph/language_server/message/text_document/type_definition'
18
+ autoload :DocumentSymbol, 'solargraph/language_server/message/text_document/document_symbol'
19
+ autoload :Formatting, 'solargraph/language_server/message/text_document/formatting'
20
+ autoload :References, 'solargraph/language_server/message/text_document/references'
21
+ autoload :Rename, 'solargraph/language_server/message/text_document/rename'
22
+ autoload :PrepareRename, 'solargraph/language_server/message/text_document/prepare_rename'
23
+ autoload :FoldingRange, 'solargraph/language_server/message/text_document/folding_range'
24
+ autoload :DocumentHighlight, 'solargraph/language_server/message/text_document/document_highlight'
25
+ end
26
+ end
27
+ end
28
+ end
@@ -1,30 +1,35 @@
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
- def register_from_options
15
- y = []
16
- n = []
17
- (host.options['completion'] ? y : n).push('textDocument/completion')
18
- (host.options['hover'] ? y : n).push('textDocument/hover', 'textDocument/signatureHelp')
19
- (host.options['autoformat'] ? y : n).push('textDocument/onTypeFormatting')
20
- (host.options['formatting'] ? y : n).push('textDocument/formatting')
21
- (host.options['symbols'] ? y : n).push('textDocument/documentSymbol', 'workspace/symbol')
22
- (host.options['definitions'] ? y : n).push('textDocument/definition')
23
- (host.options['references'] ? y : n).push('textDocument/references')
24
- (host.options['folding'] ? y : n).push('textDocument/folding')
25
- (host.options['highlights'] ? y : n).push('textDocument/documentHighlight')
26
- host.register_capabilities y
27
- host.unregister_capabilities n
28
- end
29
- end
30
- end
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,33 +1,40 @@
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
- # @param change [Hash]
14
- params['changes'].each do |change|
15
- if change['type'] == CREATED
16
- host.create change['uri']
17
- need_catalog = true
18
- elsif change['type'] == CHANGED
19
- next if host.open?(change['uri'])
20
- host.create change['uri']
21
- need_catalog = true
22
- elsif change['type'] == DELETED
23
- host.delete change['uri']
24
- need_catalog = true
25
- else
26
- set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS, "Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
27
- end
28
- end
29
- # Force host to catalog libraries after file changes (see castwide/solargraph#139)
30
- host.catalog if need_catalog
31
- end
32
- end
33
- end
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,24 +1,24 @@
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
- def add_folders
13
- return unless params['event'] && params['event']['added']
14
- host.prepare_folders params['event']['added']
15
- end
16
-
17
- def remove_folders
18
- return unless params['event'] && params['event']['removed']
19
- params['event']['removed'].each do |folder|
20
- host.remove_folders params['event']['removed']
21
- end
22
- end
23
- end
24
- end
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
+ def add_folders
13
+ return unless params['event'] && params['event']['added']
14
+ host.prepare_folders params['event']['added']
15
+ end
16
+
17
+ def remove_folders
18
+ return unless params['event'] && params['event']['removed']
19
+ params['event']['removed'].each do |folder|
20
+ host.remove_folders params['event']['removed']
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,23 +1,23 @@
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.location.filename)
10
- {
11
- name: pin.path,
12
- containerName: pin.namespace,
13
- kind: pin.symbol_kind,
14
- location: {
15
- uri: uri,
16
- range: pin.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
+ 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,14 +1,14 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module LanguageServer
5
- module Message
6
- module Workspace
7
- autoload :DidChangeWatchedFiles, 'solargraph/language_server/message/workspace/did_change_watched_files'
8
- autoload :WorkspaceSymbol, 'solargraph/language_server/message/workspace/workspace_symbol'
9
- autoload :DidChangeConfiguration, 'solargraph/language_server/message/workspace/did_change_configuration'
10
- autoload :DidChangeWorkspaceFolders, 'solargraph/language_server/message/workspace/did_change_workspace_folders'
11
- end
12
- end
13
- end
14
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module Workspace
7
+ autoload :DidChangeWatchedFiles, 'solargraph/language_server/message/workspace/did_change_watched_files'
8
+ autoload :WorkspaceSymbol, 'solargraph/language_server/message/workspace/workspace_symbol'
9
+ autoload :DidChangeConfiguration, 'solargraph/language_server/message/workspace/did_change_configuration'
10
+ autoload :DidChangeWorkspaceFolders, 'solargraph/language_server/message/workspace/did_change_workspace_folders'
11
+ end
12
+ end
13
+ end
14
+ end
@@ -1,93 +1,94 @@
1
- # frozen_string_literal: true
2
-
3
- require 'solargraph'
4
-
5
- module Solargraph
6
- module LanguageServer
7
- # The Message namespace contains classes that implement language server
8
- # protocol methods.
9
- #
10
- module Message
11
- autoload :Base, 'solargraph/language_server/message/base'
12
- autoload :Initialize, 'solargraph/language_server/message/initialize'
13
- autoload :Initialized, 'solargraph/language_server/message/initialized'
14
- autoload :TextDocument, 'solargraph/language_server/message/text_document'
15
- autoload :CompletionItem, 'solargraph/language_server/message/completion_item'
16
- autoload :CancelRequest, 'solargraph/language_server/message/cancel_request'
17
- autoload :MethodNotFound, 'solargraph/language_server/message/method_not_found'
18
- autoload :MethodNotImplemented, 'solargraph/language_server/message/method_not_implemented'
19
- autoload :Extended, 'solargraph/language_server/message/extended'
20
- autoload :Shutdown, 'solargraph/language_server/message/shutdown'
21
- autoload :ExitNotification, 'solargraph/language_server/message/exit_notification'
22
- autoload :Workspace, 'solargraph/language_server/message/workspace'
23
-
24
- class << self
25
- # Register a method name and message for handling by the language
26
- # server.
27
- #
28
- # @example
29
- # Message.register 'initialize', Solargraph::Message::Initialize
30
- #
31
- # @param path [String] The method name
32
- # @param message_class [Class<Message::Base>] The message class
33
- # @return [void]
34
- def register path, message_class
35
- method_map[path] = message_class
36
- end
37
-
38
- # @param path [String]
39
- # @return [Class<Solargraph::LanguageServer::Message::Base>]
40
- def select path
41
- if method_map.has_key?(path)
42
- method_map[path]
43
- elsif path.start_with?('$/')
44
- MethodNotImplemented
45
- else
46
- MethodNotFound
47
- end
48
- end
49
-
50
- private
51
-
52
- # @return [Hash{String => Class<Message::Base>}]
53
- def method_map
54
- @method_map ||= {}
55
- end
56
- end
57
-
58
- register 'initialize', Initialize
59
- register 'initialized', Initialized
60
- register 'textDocument/completion', TextDocument::Completion
61
- register 'completionItem/resolve', CompletionItem::Resolve
62
- register 'textDocument/signatureHelp', TextDocument::SignatureHelp
63
- register 'textDocument/didOpen', TextDocument::DidOpen
64
- register 'textDocument/didChange', TextDocument::DidChange
65
- register 'textDocument/didSave', TextDocument::DidSave
66
- register 'textDocument/didClose', TextDocument::DidClose
67
- register 'textDocument/hover', TextDocument::Hover
68
- register 'textDocument/definition', TextDocument::Definition
69
- register 'textDocument/formatting', TextDocument::Formatting
70
- register 'textDocument/onTypeFormatting', TextDocument::OnTypeFormatting
71
- register 'textDocument/documentSymbol', TextDocument::DocumentSymbol
72
- register 'textDocument/references', TextDocument::References
73
- register 'textDocument/rename', TextDocument::Rename
74
- register 'textDocument/prepareRename', TextDocument::PrepareRename
75
- register 'textDocument/foldingRange', TextDocument::FoldingRange
76
- # register 'textDocument/codeAction', TextDocument::CodeAction
77
- register 'textDocument/documentHighlight', TextDocument::DocumentHighlight
78
- register 'workspace/didChangeWatchedFiles', Workspace::DidChangeWatchedFiles
79
- register 'workspace/didChangeConfiguration', Workspace::DidChangeConfiguration
80
- register 'workspace/didChangeWorkspaceFolders', Workspace::DidChangeWorkspaceFolders
81
- register 'workspace/symbol', Workspace::WorkspaceSymbol
82
- register '$/cancelRequest', CancelRequest
83
- register '$/solargraph/document', Extended::Document
84
- register '$/solargraph/search', Extended::Search
85
- register '$/solargraph/checkGemVersion', Extended::CheckGemVersion
86
- register '$/solargraph/documentGems', Extended::DocumentGems
87
- register '$/solargraph/downloadCore', Extended::DownloadCore
88
- register '$/solargraph/environment', Extended::Environment
89
- register 'shutdown', Shutdown
90
- register 'exit', ExitNotification
91
- end
92
- end
93
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'solargraph'
4
+
5
+ module Solargraph
6
+ module LanguageServer
7
+ # The Message namespace contains classes that implement language server
8
+ # protocol methods.
9
+ #
10
+ module Message
11
+ autoload :Base, 'solargraph/language_server/message/base'
12
+ autoload :Initialize, 'solargraph/language_server/message/initialize'
13
+ autoload :Initialized, 'solargraph/language_server/message/initialized'
14
+ autoload :TextDocument, 'solargraph/language_server/message/text_document'
15
+ autoload :CompletionItem, 'solargraph/language_server/message/completion_item'
16
+ autoload :CancelRequest, 'solargraph/language_server/message/cancel_request'
17
+ autoload :MethodNotFound, 'solargraph/language_server/message/method_not_found'
18
+ autoload :MethodNotImplemented, 'solargraph/language_server/message/method_not_implemented'
19
+ autoload :Extended, 'solargraph/language_server/message/extended'
20
+ autoload :Shutdown, 'solargraph/language_server/message/shutdown'
21
+ autoload :ExitNotification, 'solargraph/language_server/message/exit_notification'
22
+ autoload :Workspace, 'solargraph/language_server/message/workspace'
23
+
24
+ class << self
25
+ # Register a method name and message for handling by the language
26
+ # server.
27
+ #
28
+ # @example
29
+ # Message.register 'initialize', Solargraph::Message::Initialize
30
+ #
31
+ # @param path [String] The method name
32
+ # @param message_class [Class<Message::Base>] The message class
33
+ # @return [void]
34
+ def register path, message_class
35
+ method_map[path] = message_class
36
+ end
37
+
38
+ # @param path [String]
39
+ # @return [Class<Solargraph::LanguageServer::Message::Base>]
40
+ def select path
41
+ if method_map.has_key?(path)
42
+ method_map[path]
43
+ elsif path.start_with?('$/')
44
+ MethodNotImplemented
45
+ else
46
+ MethodNotFound
47
+ end
48
+ end
49
+
50
+ private
51
+
52
+ # @return [Hash{String => Class<Message::Base>}]
53
+ def method_map
54
+ @method_map ||= {}
55
+ end
56
+ end
57
+
58
+ register 'initialize', Initialize
59
+ register 'initialized', Initialized
60
+ register 'textDocument/completion', TextDocument::Completion
61
+ register 'completionItem/resolve', CompletionItem::Resolve
62
+ register 'textDocument/signatureHelp', TextDocument::SignatureHelp
63
+ register 'textDocument/didOpen', TextDocument::DidOpen
64
+ register 'textDocument/didChange', TextDocument::DidChange
65
+ register 'textDocument/didSave', TextDocument::DidSave
66
+ register 'textDocument/didClose', TextDocument::DidClose
67
+ register 'textDocument/hover', TextDocument::Hover
68
+ register 'textDocument/definition', TextDocument::Definition
69
+ register 'textDocument/typeDefinition', TextDocument::TypeDefinition
70
+ register 'textDocument/formatting', TextDocument::Formatting
71
+ register 'textDocument/onTypeFormatting', TextDocument::OnTypeFormatting
72
+ register 'textDocument/documentSymbol', TextDocument::DocumentSymbol
73
+ register 'textDocument/references', TextDocument::References
74
+ register 'textDocument/rename', TextDocument::Rename
75
+ register 'textDocument/prepareRename', TextDocument::PrepareRename
76
+ register 'textDocument/foldingRange', TextDocument::FoldingRange
77
+ # register 'textDocument/codeAction', TextDocument::CodeAction
78
+ register 'textDocument/documentHighlight', TextDocument::DocumentHighlight
79
+ register 'workspace/didChangeWatchedFiles', Workspace::DidChangeWatchedFiles
80
+ register 'workspace/didChangeConfiguration', Workspace::DidChangeConfiguration
81
+ register 'workspace/didChangeWorkspaceFolders', Workspace::DidChangeWorkspaceFolders
82
+ register 'workspace/symbol', Workspace::WorkspaceSymbol
83
+ register '$/cancelRequest', CancelRequest
84
+ register '$/solargraph/document', Extended::Document
85
+ register '$/solargraph/search', Extended::Search
86
+ register '$/solargraph/checkGemVersion', Extended::CheckGemVersion
87
+ register '$/solargraph/documentGems', Extended::DocumentGems
88
+ register '$/solargraph/downloadCore', Extended::DownloadCore
89
+ register '$/solargraph/environment', Extended::Environment
90
+ register 'shutdown', Shutdown
91
+ register 'exit', ExitNotification
92
+ end
93
+ end
94
+ end
@@ -1,14 +1,14 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module LanguageServer
5
- # The MessageType constants from the language server specification.
6
- #
7
- module MessageTypes
8
- ERROR = 1
9
- WARNING = 2
10
- INFO = 3
11
- LOG = 4
12
- end
13
- end
14
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ # The MessageType constants from the language server specification.
6
+ #
7
+ module MessageTypes
8
+ ERROR = 1
9
+ WARNING = 2
10
+ INFO = 3
11
+ LOG = 4
12
+ end
13
+ end
14
+ end