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,31 +1,31 @@
1
- require 'uri'
2
- require 'htmlentities'
3
-
4
- module Solargraph::LanguageServer::Message::TextDocument
5
- class Hover < Base
6
- def process
7
- line = params['position']['line']
8
- col = params['position']['character']
9
- contents = []
10
- suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
11
- last_link = nil
12
- suggestions.each do |pin|
13
- parts = []
14
- this_link = pin.link_documentation
15
- if !this_link.nil? and this_link != last_link
16
- parts.push this_link
17
- end
18
- parts.push HTMLEntities.new.encode(pin.detail) unless pin.kind == Solargraph::Pin::NAMESPACE or pin.detail.nil?
19
- parts.push pin.documentation unless pin.documentation.nil? or pin.documentation.empty?
20
- contents.push parts.join("\n\n") unless parts.empty?
21
- last_link = this_link unless this_link.nil?
22
- end
23
- set_result(
24
- contents: {
25
- kind: 'markdown',
26
- value: contents.join("\n\n")
27
- }
28
- )
29
- end
30
- end
31
- end
1
+ require 'uri'
2
+ require 'htmlentities'
3
+
4
+ module Solargraph::LanguageServer::Message::TextDocument
5
+ class Hover < Base
6
+ def process
7
+ line = params['position']['line']
8
+ col = params['position']['character']
9
+ contents = []
10
+ suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
11
+ last_link = nil
12
+ suggestions.each do |pin|
13
+ parts = []
14
+ this_link = pin.link_documentation
15
+ if !this_link.nil? and this_link != last_link
16
+ parts.push this_link
17
+ end
18
+ parts.push HTMLEntities.new.encode(pin.detail) unless pin.kind == Solargraph::Pin::NAMESPACE or pin.detail.nil?
19
+ parts.push pin.documentation unless pin.documentation.nil? or pin.documentation.empty?
20
+ contents.push parts.join("\n\n") unless parts.empty?
21
+ last_link = this_link unless this_link.nil?
22
+ end
23
+ set_result(
24
+ contents: {
25
+ kind: 'markdown',
26
+ value: contents.join("\n\n")
27
+ }
28
+ )
29
+ end
30
+ end
31
+ end
@@ -1,32 +1,32 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module TextDocument
5
- class OnTypeFormatting < Base
6
- def process
7
- # @todo Temporarily disabled due to conflicts with VSCode formatting on type
8
- # src = host.send(:library).checkout(uri_to_file(params['textDocument']['uri']))
9
- # fragment = src.fragment_at(params['position']['line'], params['position']['character'] - 1)
10
- # offset = fragment.send(:offset)
11
- # if fragment.string? and params['ch'] == '{' and src.code[offset - 1, 2] == '#{'
12
- # set_result(
13
- # [
14
- # {
15
- # range: {
16
- # start: params['position'],
17
- # end: params['position']
18
- # },
19
- # newText: '}'
20
- # }
21
- # ]
22
- # )
23
- # else
24
- # # @todo Is `nil` or `[]` more appropriate here?
25
- # set_result nil
26
- # end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module TextDocument
5
+ class OnTypeFormatting < Base
6
+ def process
7
+ # @todo Temporarily disabled due to conflicts with VSCode formatting on type
8
+ # src = host.send(:library).checkout(uri_to_file(params['textDocument']['uri']))
9
+ # fragment = src.fragment_at(params['position']['line'], params['position']['character'] - 1)
10
+ # offset = fragment.send(:offset)
11
+ # if fragment.string? and params['ch'] == '{' and src.code[offset - 1, 2] == '#{'
12
+ # set_result(
13
+ # [
14
+ # {
15
+ # range: {
16
+ # start: params['position'],
17
+ # end: params['position']
18
+ # },
19
+ # newText: '}'
20
+ # }
21
+ # ]
22
+ # )
23
+ # else
24
+ # # @todo Is `nil` or `[]` more appropriate here?
25
+ # set_result nil
26
+ # end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -1,9 +1,9 @@
1
- module Solargraph::LanguageServer::Message::TextDocument
2
- class PrepareRename < Base
3
- def process
4
- line = params['position']['line']
5
- col = params['position']['character']
6
- set_result host.sources.find(params['textDocument']['uri']).cursor_at(Solargraph::Position.new(line, col)).range.to_hash
7
- end
8
- end
9
- end
1
+ module Solargraph::LanguageServer::Message::TextDocument
2
+ class PrepareRename < Base
3
+ def process
4
+ line = params['position']['line']
5
+ col = params['position']['character']
6
+ set_result host.sources.find(params['textDocument']['uri']).cursor_at(Solargraph::Position.new(line, col)).range.to_hash
7
+ end
8
+ end
9
+ end
@@ -1,14 +1,14 @@
1
- module Solargraph::LanguageServer::Message::TextDocument
2
- class References < Base
3
- def process
4
- locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'])
5
- result = locs.map do |loc|
6
- {
7
- uri: file_to_uri(loc.filename),
8
- range: loc.range.to_hash
9
- }
10
- end
11
- set_result result
12
- end
13
- end
14
- end
1
+ module Solargraph::LanguageServer::Message::TextDocument
2
+ class References < Base
3
+ def process
4
+ locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'])
5
+ result = locs.map do |loc|
6
+ {
7
+ uri: file_to_uri(loc.filename),
8
+ range: loc.range.to_hash
9
+ }
10
+ end
11
+ set_result result
12
+ end
13
+ end
14
+ end
@@ -1,17 +1,17 @@
1
- module Solargraph::LanguageServer::Message::TextDocument
2
- class Rename < Base
3
- def process
4
- locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'], strip: true)
5
- changes = {}
6
- locs.each do |loc|
7
- uri = file_to_uri(loc.filename)
8
- changes[uri] ||= []
9
- changes[uri].push({
10
- range: loc.range.to_hash,
11
- newText: params['newName']
12
- })
13
- end
14
- set_result changes: changes
15
- end
16
- end
17
- end
1
+ module Solargraph::LanguageServer::Message::TextDocument
2
+ class Rename < Base
3
+ def process
4
+ locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'], strip: true)
5
+ changes = {}
6
+ locs.each do |loc|
7
+ uri = file_to_uri(loc.filename)
8
+ changes[uri] ||= []
9
+ changes[uri].push({
10
+ range: loc.range.to_hash,
11
+ newText: params['newName']
12
+ })
13
+ end
14
+ set_result changes: changes
15
+ end
16
+ end
17
+ end
@@ -1,19 +1,19 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module TextDocument
5
- class SignatureHelp < TextDocument::Base
6
- def process
7
- line = params['position']['line']
8
- col = params['position']['character']
9
- suggestions = host.signatures_at(params['textDocument']['uri'], line, col)
10
- info = suggestions.map(&:signature_help)
11
- set_result({
12
- signatures: info
13
- })
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module TextDocument
5
+ class SignatureHelp < TextDocument::Base
6
+ def process
7
+ line = params['position']['line']
8
+ col = params['position']['character']
9
+ suggestions = host.signatures_at(params['textDocument']['uri'], line, col)
10
+ info = suggestions.map(&:signature_help)
11
+ set_result({
12
+ signatures: info
13
+ })
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,12 +1,12 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module Workspace
5
- autoload :DidChangeWatchedFiles, 'solargraph/language_server/message/workspace/did_change_watched_files'
6
- autoload :WorkspaceSymbol, 'solargraph/language_server/message/workspace/workspace_symbol'
7
- autoload :DidChangeConfiguration, 'solargraph/language_server/message/workspace/did_change_configuration'
8
- autoload :DidChangeWorkspaceFolders, 'solargraph/language_server/message/workspace/did_change_workspace_folders'
9
- end
10
- end
11
- end
12
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module Workspace
5
+ autoload :DidChangeWatchedFiles, 'solargraph/language_server/message/workspace/did_change_watched_files'
6
+ autoload :WorkspaceSymbol, 'solargraph/language_server/message/workspace/workspace_symbol'
7
+ autoload :DidChangeConfiguration, 'solargraph/language_server/message/workspace/did_change_configuration'
8
+ autoload :DidChangeWorkspaceFolders, 'solargraph/language_server/message/workspace/did_change_workspace_folders'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,29 +1,29 @@
1
- require 'uri'
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.register_capabilities y
26
- host.unregister_capabilities n
27
- end
28
- end
29
- end
1
+ require 'uri'
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.register_capabilities y
26
+ host.unregister_capabilities n
27
+ end
28
+ end
29
+ end
@@ -1,27 +1,29 @@
1
- require 'uri'
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
- # @param change [Hash]
13
- params['changes'].each do |change|
14
- # @todo Changes might need to be handled here even if the file is open
15
- if change['type'] == CREATED
16
- host.create change['uri'] #unless host.open?(change['uri'])
17
- elsif change['type'] == CHANGED
18
- host.create change['uri'] #unless host.open?(change['uri'])
19
- elsif change['type'] == DELETED
20
- host.delete change['uri']
21
- else
22
- set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS, "Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
23
- end
24
- end
25
- end
26
- end
27
- end
1
+ require 'uri'
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
+ # @param change [Hash]
13
+ params['changes'].each do |change|
14
+ # @todo Changes might need to be handled here even if the file is open
15
+ if change['type'] == CREATED
16
+ host.create change['uri'] #unless host.open?(change['uri'])
17
+ elsif change['type'] == CHANGED
18
+ host.create change['uri'] #unless host.open?(change['uri'])
19
+ elsif change['type'] == DELETED
20
+ host.delete change['uri']
21
+ else
22
+ set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS, "Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
23
+ end
24
+ end
25
+ # Force host to catalog libraries after file changes (see castwide/solargraph#139)
26
+ host.catalog
27
+ end
28
+ end
29
+ end
@@ -1,24 +1,24 @@
1
- require 'uri'
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
+ require 'uri'
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