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,23 +1,23 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- class Initialized < Base
5
- def process
6
- host.register_capabilities %w[
7
- textDocument/completion
8
- textDocument/hover
9
- textDocument/signatureHelp
10
- textDocument/formatting
11
- textDocument/documentSymbol
12
- textDocument/definition
13
- textDocument/references
14
- textDocument/rename
15
- textDocument/prepareRename
16
- textDocument/foldingRange
17
- workspace/symbol
18
- ]
19
- end
20
- end
21
- end
22
- end
23
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ class Initialized < Base
5
+ def process
6
+ host.register_capabilities %w[
7
+ textDocument/completion
8
+ textDocument/hover
9
+ textDocument/signatureHelp
10
+ textDocument/formatting
11
+ textDocument/documentSymbol
12
+ textDocument/definition
13
+ textDocument/references
14
+ textDocument/rename
15
+ textDocument/prepareRename
16
+ textDocument/foldingRange
17
+ workspace/symbol
18
+ ]
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,11 +1,11 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- class Shutdown < Base
5
- def process
6
- # Nothing to do?
7
- end
8
- end
9
- end
10
- end
11
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ class Shutdown < Base
5
+ def process
6
+ # Nothing to do?
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,25 +1,25 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module TextDocument
5
- autoload :Base, 'solargraph/language_server/message/text_document/base'
6
- autoload :Completion, 'solargraph/language_server/message/text_document/completion'
7
- autoload :DidOpen, 'solargraph/language_server/message/text_document/did_open'
8
- autoload :DidChange, 'solargraph/language_server/message/text_document/did_change'
9
- autoload :DidClose, 'solargraph/language_server/message/text_document/did_close'
10
- autoload :DidSave, 'solargraph/language_server/message/text_document/did_save'
11
- autoload :Hover, 'solargraph/language_server/message/text_document/hover'
12
- autoload :SignatureHelp, 'solargraph/language_server/message/text_document/signature_help'
13
- autoload :DiagnosticsQueue, 'solargraph/language_server/message/text_document/diagnostics_queue'
14
- autoload :OnTypeFormatting, 'solargraph/language_server/message/text_document/on_type_formatting'
15
- autoload :Definition, 'solargraph/language_server/message/text_document/definition'
16
- autoload :DocumentSymbol, 'solargraph/language_server/message/text_document/document_symbol'
17
- autoload :Formatting, 'solargraph/language_server/message/text_document/formatting'
18
- autoload :References, 'solargraph/language_server/message/text_document/references'
19
- autoload :Rename, 'solargraph/language_server/message/text_document/rename'
20
- autoload :PrepareRename, 'solargraph/language_server/message/text_document/prepare_rename'
21
- autoload :FoldingRange, 'solargraph/language_server/message/text_document/folding_range'
22
- end
23
- end
24
- end
25
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module TextDocument
5
+ autoload :Base, 'solargraph/language_server/message/text_document/base'
6
+ autoload :Completion, 'solargraph/language_server/message/text_document/completion'
7
+ autoload :DidOpen, 'solargraph/language_server/message/text_document/did_open'
8
+ autoload :DidChange, 'solargraph/language_server/message/text_document/did_change'
9
+ autoload :DidClose, 'solargraph/language_server/message/text_document/did_close'
10
+ autoload :DidSave, 'solargraph/language_server/message/text_document/did_save'
11
+ autoload :Hover, 'solargraph/language_server/message/text_document/hover'
12
+ autoload :SignatureHelp, 'solargraph/language_server/message/text_document/signature_help'
13
+ autoload :DiagnosticsQueue, 'solargraph/language_server/message/text_document/diagnostics_queue'
14
+ autoload :OnTypeFormatting, 'solargraph/language_server/message/text_document/on_type_formatting'
15
+ autoload :Definition, 'solargraph/language_server/message/text_document/definition'
16
+ autoload :DocumentSymbol, 'solargraph/language_server/message/text_document/document_symbol'
17
+ autoload :Formatting, 'solargraph/language_server/message/text_document/formatting'
18
+ autoload :References, 'solargraph/language_server/message/text_document/references'
19
+ autoload :Rename, 'solargraph/language_server/message/text_document/rename'
20
+ autoload :PrepareRename, 'solargraph/language_server/message/text_document/prepare_rename'
21
+ autoload :FoldingRange, 'solargraph/language_server/message/text_document/folding_range'
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,51 +1,51 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module TextDocument
5
- class Completion < Base
6
- def process
7
- line = params['position']['line']
8
- col = params['position']['character']
9
- begin
10
- completion = host.completions_at(params['textDocument']['uri'], line, col)
11
- if host.cancel?(id)
12
- return set_result(empty_result) if host.cancel?(id)
13
- end
14
- items = []
15
- last_context = nil
16
- idx = -1
17
- completion.pins.each do |pin|
18
- idx += 1 if last_context != pin.context
19
- items.push pin.completion_item.merge({
20
- textEdit: {
21
- range: completion.range.to_hash,
22
- newText: pin.name.sub(/=$/, ' = ')
23
- },
24
- sortText: "#{idx.to_s.rjust(4, '0')}#{pin.name}"
25
- })
26
- items.last[:data][:uri] = params['textDocument']['uri']
27
- last_context = pin.context
28
- end
29
- set_result(
30
- isIncomplete: false,
31
- items: items
32
- )
33
- rescue InvalidOffsetError => e
34
- Logging.logger.info "Completion ignored invalid offset: #{params['textDocument']['uri']}, line #{line}, character #{col}"
35
- set_result empty_result
36
- end
37
- end
38
-
39
- # @param incomplete [Boolean]
40
- # @return [Hash]
41
- def empty_result incomplete = false
42
- {
43
- isIncomplete: incomplete,
44
- items: []
45
- }
46
- end
47
- end
48
- end
49
- end
50
- end
51
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module TextDocument
5
+ class Completion < Base
6
+ def process
7
+ line = params['position']['line']
8
+ col = params['position']['character']
9
+ begin
10
+ completion = host.completions_at(params['textDocument']['uri'], line, col)
11
+ if host.cancel?(id)
12
+ return set_result(empty_result) if host.cancel?(id)
13
+ end
14
+ items = []
15
+ last_context = nil
16
+ idx = -1
17
+ completion.pins.each do |pin|
18
+ idx += 1 if last_context != pin.context
19
+ items.push pin.completion_item.merge({
20
+ textEdit: {
21
+ range: completion.range.to_hash,
22
+ newText: pin.name.sub(/=$/, ' = ')
23
+ },
24
+ sortText: "#{idx.to_s.rjust(4, '0')}#{pin.name}"
25
+ })
26
+ items.last[:data][:uri] = params['textDocument']['uri']
27
+ last_context = pin.context
28
+ end
29
+ set_result(
30
+ isIncomplete: false,
31
+ items: items
32
+ )
33
+ rescue InvalidOffsetError => e
34
+ Logging.logger.info "Completion ignored invalid offset: #{params['textDocument']['uri']}, line #{line}, character #{col}"
35
+ set_result empty_result
36
+ end
37
+ end
38
+
39
+ # @param incomplete [Boolean]
40
+ # @return [Hash]
41
+ def empty_result incomplete = false
42
+ {
43
+ isIncomplete: incomplete,
44
+ items: []
45
+ }
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -1,18 +1,18 @@
1
- require 'uri'
2
-
3
- module Solargraph::LanguageServer::Message::TextDocument
4
- class Definition < Base
5
- def process
6
- line = params['position']['line']
7
- col = params['position']['character']
8
- suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
9
- locations = suggestions.reject{|pin| pin.location.nil?}.map do |pin|
10
- {
11
- uri: file_to_uri(pin.location.filename),
12
- range: pin.location.range.to_hash
13
- }
14
- end
15
- set_result locations
16
- end
17
- end
18
- end
1
+ require 'uri'
2
+
3
+ module Solargraph::LanguageServer::Message::TextDocument
4
+ class Definition < Base
5
+ def process
6
+ line = params['position']['line']
7
+ col = params['position']['character']
8
+ suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
9
+ locations = suggestions.reject{|pin| pin.location.nil?}.map do |pin|
10
+ {
11
+ uri: file_to_uri(pin.location.filename),
12
+ range: pin.location.range.to_hash
13
+ }
14
+ end
15
+ set_result locations
16
+ end
17
+ end
18
+ end
@@ -1,13 +1,13 @@
1
- module Solargraph
2
- module LanguageServer
3
- module Message
4
- module TextDocument
5
- class DidChange < Base
6
- def process
7
- host.change params
8
- end
9
- end
10
- end
11
- end
12
- end
13
- end
1
+ module Solargraph
2
+ module LanguageServer
3
+ module Message
4
+ module TextDocument
5
+ class DidChange < Base
6
+ def process
7
+ host.change params
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,21 +1,21 @@
1
- class Solargraph::LanguageServer::Message::TextDocument::DocumentSymbol < Solargraph::LanguageServer::Message::Base
2
- include Solargraph::LanguageServer::UriHelpers
3
-
4
- def process
5
- pins = host.document_symbols params['textDocument']['uri']
6
- info = pins.map do |pin|
7
- result = {
8
- name: pin.name,
9
- containerName: pin.namespace,
10
- kind: pin.symbol_kind,
11
- location: {
12
- uri: file_to_uri(pin.location.filename),
13
- range: pin.location.range.to_hash
14
- },
15
- deprecated: pin.deprecated?
16
- }
17
- result
18
- end
19
- set_result info
20
- end
21
- end
1
+ class Solargraph::LanguageServer::Message::TextDocument::DocumentSymbol < Solargraph::LanguageServer::Message::Base
2
+ include Solargraph::LanguageServer::UriHelpers
3
+
4
+ def process
5
+ pins = host.document_symbols params['textDocument']['uri']
6
+ info = pins.map do |pin|
7
+ result = {
8
+ name: pin.name,
9
+ containerName: pin.namespace,
10
+ kind: pin.symbol_kind,
11
+ location: {
12
+ uri: file_to_uri(pin.location.filename),
13
+ range: pin.location.range.to_hash
14
+ },
15
+ deprecated: pin.deprecated?
16
+ }
17
+ result
18
+ end
19
+ set_result info
20
+ end
21
+ end
@@ -1,24 +1,24 @@
1
- require 'open3'
2
-
3
- module Solargraph
4
- module LanguageServer
5
- module Message
6
- module TextDocument
7
- class FoldingRange < Base
8
- def process
9
- result = host.folding_ranges(params['textDocument']['uri']).map do |range|
10
- {
11
- startLine: range.start.line,
12
- startCharacter: 0,
13
- endLine: range.ending.line - 1,
14
- endCharacter: 0,
15
- kind: 'region'
16
- }
17
- end
18
- set_result result
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
1
+ require 'open3'
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module TextDocument
7
+ class FoldingRange < Base
8
+ def process
9
+ result = host.folding_ranges(params['textDocument']['uri']).map do |range|
10
+ {
11
+ startLine: range.start.line,
12
+ startCharacter: 0,
13
+ endLine: range.ending.line - 1,
14
+ endCharacter: 0,
15
+ kind: 'region'
16
+ }
17
+ end
18
+ set_result result
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,50 +1,50 @@
1
- require 'open3'
2
- require 'shellwords'
3
-
4
- module Solargraph
5
- module LanguageServer
6
- module Message
7
- module TextDocument
8
- class Formatting < Base
9
- def process
10
- filename = uri_to_file(params['textDocument']['uri'])
11
- filename = 'tmp.rb' if filename.nil? or filename.empty?
12
- original = host.read_text(params['textDocument']['uri'])
13
- cmd = "rubocop -a -f fi -s #{Shellwords.escape(filename)}"
14
- o, e, s = Open3.capture3(cmd, stdin_data: original)
15
- lines = o.lines
16
- index = lines.index{|l| l.start_with?('====================')}
17
- formatted = lines[index+1..-1].join
18
- # The response is required to send an explicit range. Text edits
19
- # with null ranges get ignored. See castwide/vscode-solargraph#83
20
- if original.end_with?("\n")
21
- ending = {
22
- line: original.lines.length,
23
- character: 0
24
- }
25
- else
26
- ending = {
27
- line: original.lines.length - 1,
28
- character: original.lines.last.length
29
- }
30
- end
31
- set_result(
32
- [
33
- {
34
- range: {
35
- start: {
36
- line: 0,
37
- character: 0
38
- },
39
- end: ending
40
- },
41
- newText: formatted
42
- }
43
- ]
44
- )
45
- end
46
- end
47
- end
48
- end
49
- end
50
- end
1
+ require 'open3'
2
+ require 'shellwords'
3
+
4
+ module Solargraph
5
+ module LanguageServer
6
+ module Message
7
+ module TextDocument
8
+ class Formatting < Base
9
+ def process
10
+ filename = uri_to_file(params['textDocument']['uri'])
11
+ filename = 'tmp.rb' if filename.nil? or filename.empty?
12
+ original = host.read_text(params['textDocument']['uri'])
13
+ cmd = "rubocop -a -f fi -s #{Shellwords.escape(filename)}"
14
+ o, e, s = Open3.capture3(cmd, stdin_data: original)
15
+ lines = o.lines
16
+ index = lines.index{|l| l.start_with?('====================')}
17
+ formatted = lines[index+1..-1].join
18
+ # The response is required to send an explicit range. Text edits
19
+ # with null ranges get ignored. See castwide/vscode-solargraph#83
20
+ if original.end_with?("\n")
21
+ ending = {
22
+ line: original.lines.length,
23
+ character: 0
24
+ }
25
+ else
26
+ ending = {
27
+ line: original.lines.length - 1,
28
+ character: original.lines.last.length
29
+ }
30
+ end
31
+ set_result(
32
+ [
33
+ {
34
+ range: {
35
+ start: {
36
+ line: 0,
37
+ character: 0
38
+ },
39
+ end: ending
40
+ },
41
+ newText: formatted
42
+ }
43
+ ]
44
+ )
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end