solargraph 0.58.1 → 0.58.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 (147) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +7 -1
  4. data/lib/solargraph/api_map/cache.rb +110 -110
  5. data/lib/solargraph/api_map/constants.rb +279 -279
  6. data/lib/solargraph/api_map/index.rb +193 -193
  7. data/lib/solargraph/api_map/source_to_yard.rb +97 -97
  8. data/lib/solargraph/api_map/store.rb +384 -384
  9. data/lib/solargraph/api_map.rb +945 -945
  10. data/lib/solargraph/complex_type/type_methods.rb +228 -228
  11. data/lib/solargraph/complex_type/unique_type.rb +482 -482
  12. data/lib/solargraph/complex_type.rb +444 -444
  13. data/lib/solargraph/convention/data_definition/data_definition_node.rb +91 -91
  14. data/lib/solargraph/convention/data_definition.rb +105 -105
  15. data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +61 -61
  16. data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +102 -102
  17. data/lib/solargraph/convention/struct_definition.rb +164 -164
  18. data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
  19. data/lib/solargraph/diagnostics/rubocop.rb +118 -118
  20. data/lib/solargraph/diagnostics/rubocop_helpers.rb +68 -68
  21. data/lib/solargraph/diagnostics/type_check.rb +55 -55
  22. data/lib/solargraph/doc_map.rb +439 -439
  23. data/lib/solargraph/equality.rb +34 -34
  24. data/lib/solargraph/gem_pins.rb +98 -98
  25. data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
  26. data/lib/solargraph/language_server/host/dispatch.rb +130 -130
  27. data/lib/solargraph/language_server/host/message_worker.rb +112 -112
  28. data/lib/solargraph/language_server/host/sources.rb +99 -99
  29. data/lib/solargraph/language_server/host.rb +878 -878
  30. data/lib/solargraph/language_server/message/extended/check_gem_version.rb +114 -114
  31. data/lib/solargraph/language_server/message/extended/document.rb +23 -23
  32. data/lib/solargraph/language_server/message/text_document/completion.rb +56 -56
  33. data/lib/solargraph/language_server/message/text_document/definition.rb +40 -40
  34. data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -26
  35. data/lib/solargraph/language_server/message/text_document/formatting.rb +148 -148
  36. data/lib/solargraph/language_server/message/text_document/hover.rb +58 -58
  37. data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -24
  38. data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -25
  39. data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
  40. data/lib/solargraph/library.rb +683 -683
  41. data/lib/solargraph/location.rb +82 -82
  42. data/lib/solargraph/logging.rb +37 -37
  43. data/lib/solargraph/parser/comment_ripper.rb +69 -69
  44. data/lib/solargraph/parser/flow_sensitive_typing.rb +255 -255
  45. data/lib/solargraph/parser/node_processor/base.rb +92 -92
  46. data/lib/solargraph/parser/node_processor.rb +62 -62
  47. data/lib/solargraph/parser/parser_gem/class_methods.rb +149 -149
  48. data/lib/solargraph/parser/parser_gem/node_chainer.rb +166 -166
  49. data/lib/solargraph/parser/parser_gem/node_methods.rb +486 -486
  50. data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +22 -22
  51. data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +59 -59
  52. data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +15 -15
  53. data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +46 -46
  54. data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +53 -53
  55. data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +23 -23
  56. data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +40 -40
  57. data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +29 -29
  58. data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +59 -59
  59. data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +98 -98
  60. data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +17 -17
  61. data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +38 -38
  62. data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +52 -52
  63. data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +291 -291
  64. data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +29 -29
  65. data/lib/solargraph/parser/parser_gem/node_processors.rb +70 -70
  66. data/lib/solargraph/parser/region.rb +69 -69
  67. data/lib/solargraph/parser/snippet.rb +17 -17
  68. data/lib/solargraph/pin/base.rb +729 -729
  69. data/lib/solargraph/pin/base_variable.rb +126 -126
  70. data/lib/solargraph/pin/block.rb +104 -104
  71. data/lib/solargraph/pin/breakable.rb +9 -9
  72. data/lib/solargraph/pin/callable.rb +231 -231
  73. data/lib/solargraph/pin/closure.rb +72 -72
  74. data/lib/solargraph/pin/common.rb +79 -79
  75. data/lib/solargraph/pin/conversions.rb +123 -123
  76. data/lib/solargraph/pin/delegated_method.rb +120 -120
  77. data/lib/solargraph/pin/documenting.rb +114 -114
  78. data/lib/solargraph/pin/instance_variable.rb +34 -34
  79. data/lib/solargraph/pin/keyword.rb +20 -20
  80. data/lib/solargraph/pin/local_variable.rb +75 -75
  81. data/lib/solargraph/pin/method.rb +672 -672
  82. data/lib/solargraph/pin/method_alias.rb +34 -34
  83. data/lib/solargraph/pin/namespace.rb +115 -115
  84. data/lib/solargraph/pin/parameter.rb +275 -275
  85. data/lib/solargraph/pin/proxy_type.rb +39 -39
  86. data/lib/solargraph/pin/reference/override.rb +47 -47
  87. data/lib/solargraph/pin/reference/superclass.rb +15 -15
  88. data/lib/solargraph/pin/reference.rb +39 -39
  89. data/lib/solargraph/pin/search.rb +61 -61
  90. data/lib/solargraph/pin/signature.rb +61 -61
  91. data/lib/solargraph/pin/symbol.rb +53 -53
  92. data/lib/solargraph/pin/until.rb +18 -18
  93. data/lib/solargraph/pin/while.rb +18 -18
  94. data/lib/solargraph/pin.rb +44 -44
  95. data/lib/solargraph/pin_cache.rb +245 -245
  96. data/lib/solargraph/position.rb +132 -119
  97. data/lib/solargraph/range.rb +112 -112
  98. data/lib/solargraph/rbs_map/conversions.rb +823 -823
  99. data/lib/solargraph/rbs_map/core_map.rb +58 -58
  100. data/lib/solargraph/rbs_map/stdlib_map.rb +43 -43
  101. data/lib/solargraph/rbs_map.rb +163 -163
  102. data/lib/solargraph/shell.rb +352 -352
  103. data/lib/solargraph/source/chain/call.rb +337 -337
  104. data/lib/solargraph/source/chain/constant.rb +26 -26
  105. data/lib/solargraph/source/chain/hash.rb +34 -34
  106. data/lib/solargraph/source/chain/if.rb +28 -28
  107. data/lib/solargraph/source/chain/instance_variable.rb +13 -13
  108. data/lib/solargraph/source/chain/literal.rb +48 -48
  109. data/lib/solargraph/source/chain/or.rb +23 -23
  110. data/lib/solargraph/source/chain.rb +291 -291
  111. data/lib/solargraph/source/change.rb +82 -82
  112. data/lib/solargraph/source/cursor.rb +166 -166
  113. data/lib/solargraph/source/source_chainer.rb +194 -194
  114. data/lib/solargraph/source/updater.rb +55 -55
  115. data/lib/solargraph/source.rb +498 -498
  116. data/lib/solargraph/source_map/clip.rb +226 -226
  117. data/lib/solargraph/source_map/data.rb +34 -34
  118. data/lib/solargraph/source_map/mapper.rb +259 -259
  119. data/lib/solargraph/source_map.rb +212 -212
  120. data/lib/solargraph/type_checker/checks.rb +124 -124
  121. data/lib/solargraph/type_checker/param_def.rb +37 -37
  122. data/lib/solargraph/type_checker/problem.rb +32 -32
  123. data/lib/solargraph/type_checker/rules.rb +84 -84
  124. data/lib/solargraph/type_checker.rb +814 -814
  125. data/lib/solargraph/version.rb +1 -1
  126. data/lib/solargraph/workspace/config.rb +255 -255
  127. data/lib/solargraph/workspace/require_paths.rb +97 -97
  128. data/lib/solargraph/workspace.rb +220 -220
  129. data/lib/solargraph/yard_map/helpers.rb +44 -44
  130. data/lib/solargraph/yard_map/mapper/to_method.rb +130 -130
  131. data/lib/solargraph/yard_map/mapper/to_namespace.rb +31 -31
  132. data/lib/solargraph/yard_map/mapper.rb +79 -79
  133. data/lib/solargraph/yard_map/to_method.rb +89 -89
  134. data/lib/solargraph/yardoc.rb +87 -87
  135. data/lib/solargraph.rb +105 -105
  136. data/rbs_collection.yaml +1 -1
  137. metadata +12 -12
  138. /data/{sig → rbs}/shims/ast/0/node.rbs +0 -0
  139. /data/{sig → rbs}/shims/ast/2.4/.rbs_meta.yaml +0 -0
  140. /data/{sig → rbs}/shims/ast/2.4/ast.rbs +0 -0
  141. /data/{sig → rbs}/shims/parser/3.2.0.1/builders/default.rbs +0 -0
  142. /data/{sig → rbs}/shims/parser/3.2.0.1/manifest.yaml +0 -0
  143. /data/{sig → rbs}/shims/parser/3.2.0.1/parser.rbs +0 -0
  144. /data/{sig → rbs}/shims/parser/3.2.0.1/polyfill.rbs +0 -0
  145. /data/{sig → rbs}/shims/thor/1.2.0.1/.rbs_meta.yaml +0 -0
  146. /data/{sig → rbs}/shims/thor/1.2.0.1/manifest.yaml +0 -0
  147. /data/{sig → rbs}/shims/thor/1.2.0.1/thor.rbs +0 -0
@@ -1,148 +1,148 @@
1
- # frozen_string_literal: true
2
-
3
- require 'securerandom'
4
- require 'tmpdir'
5
-
6
- module Solargraph
7
- module LanguageServer
8
- module Message
9
- module TextDocument
10
- class Formatting < Base
11
- include Solargraph::Diagnostics::RubocopHelpers
12
-
13
- def process
14
- file_uri = params['textDocument']['uri']
15
- config = config_for(file_uri)
16
- original = host.read_text(file_uri)
17
- args = cli_args(file_uri, config)
18
-
19
- require_rubocop(config['version'])
20
- options, paths = ::RuboCop::Options.new.parse(args)
21
- # @sg-ignore Unresolved call to []=
22
- options[:stdin] = original
23
-
24
- # Ensure only one instance of RuboCop::Runner is running at
25
- # a time - it uses 'chdir' to read config files with ERB,
26
- # which can conflict with other chdirs.
27
- corrections = Solargraph::CHDIR_MUTEX.synchronize do
28
- redirect_stdout do
29
- ::RuboCop::Runner.new(options, ::RuboCop::ConfigStore.new).run(paths)
30
- end
31
- end
32
- # @sg-ignore Unresolved call to []=
33
- result = options[:stdin]
34
-
35
- log_corrections(corrections)
36
-
37
- format original, result
38
- rescue ::RuboCop::ValidationError, ::RuboCop::ConfigNotFoundError => e
39
- set_error(Solargraph::LanguageServer::ErrorCodes::INTERNAL_ERROR, "[#{e.class}] #{e.message}")
40
- end
41
-
42
- private
43
-
44
- # @param corrections [String]
45
- # @return [void]
46
- def log_corrections(corrections)
47
- corrections = corrections&.strip
48
- return if corrections&.empty?
49
-
50
- Solargraph.logger.info('Formatting result:')
51
- corrections.each_line do |line|
52
- next if line.strip.empty?
53
- Solargraph.logger.info(line.strip)
54
- end
55
- end
56
-
57
- # @param file_uri [String]
58
- # @return [Hash{String => undefined}]
59
- def config_for(file_uri)
60
- conf = host.formatter_config(file_uri)
61
- return {} unless conf.is_a?(Hash)
62
-
63
- conf['rubocop'] || {}
64
- end
65
-
66
- # @param file_uri [String]
67
- # @param config [Hash{String => String}]
68
- # @return [Array<String>]
69
- def cli_args file_uri, config
70
- file = UriHelpers.uri_to_file(file_uri)
71
- args = [
72
- config['cops'] == 'all' ? '-A' : '-a',
73
- '--cache', 'false',
74
- '--format', formatter_class(config).name,
75
- ]
76
-
77
- ['except', 'only'].each do |arg|
78
- cops = cop_list(config[arg])
79
- args += ["--#{arg}", cops] if cops
80
- end
81
-
82
- args += config['extra_args'] if config['extra_args']
83
- args + [file]
84
- end
85
-
86
- # @param config [Hash{String => String}]
87
- # @sg-ignore
88
- # @return [Class<RuboCop::Formatter::BaseFormatter>]
89
- def formatter_class(config)
90
- if self.class.const_defined?('BlankRubocopFormatter')
91
- # @sg-ignore
92
- BlankRubocopFormatter
93
- else
94
- require_rubocop(config['version'])
95
- klass = Class.new(::RuboCop::Formatter::BaseFormatter)
96
- self.class.const_set 'BlankRubocopFormatter', klass
97
- end
98
- end
99
-
100
- # @param value [Array, String]
101
- # @return [String, nil]
102
- def cop_list(value)
103
- # @type [String]
104
- value = value.join(',') if value.respond_to?(:join)
105
- return nil if value == '' || !value.is_a?(String)
106
- value
107
- end
108
-
109
- # @param original [String]
110
- # @param result [String]
111
- # @return [void]
112
- def format original, result
113
- ending = if original.end_with?("\n")
114
- {
115
- line: original.lines.length,
116
- character: 0
117
- }
118
- elsif original.lines.empty?
119
- {
120
- line: 0,
121
- character: 0
122
- }
123
- else
124
- {
125
- line: original.lines.length - 1,
126
- character: original.lines.last.length
127
- }
128
- end
129
- set_result(
130
- [
131
- {
132
- range: {
133
- start: {
134
- line: 0,
135
- character: 0
136
- },
137
- end: ending
138
- },
139
- newText: result
140
- }
141
- ]
142
- )
143
- end
144
- end
145
- end
146
- end
147
- end
148
- end
1
+ # frozen_string_literal: true
2
+
3
+ require 'securerandom'
4
+ require 'tmpdir'
5
+
6
+ module Solargraph
7
+ module LanguageServer
8
+ module Message
9
+ module TextDocument
10
+ class Formatting < Base
11
+ include Solargraph::Diagnostics::RubocopHelpers
12
+
13
+ def process
14
+ file_uri = params['textDocument']['uri']
15
+ config = config_for(file_uri)
16
+ original = host.read_text(file_uri)
17
+ args = cli_args(file_uri, config)
18
+
19
+ require_rubocop(config['version'])
20
+ options, paths = ::RuboCop::Options.new.parse(args)
21
+ # @sg-ignore Unresolved call to []=
22
+ options[:stdin] = original
23
+
24
+ # Ensure only one instance of RuboCop::Runner is running at
25
+ # a time - it uses 'chdir' to read config files with ERB,
26
+ # which can conflict with other chdirs.
27
+ corrections = Solargraph::CHDIR_MUTEX.synchronize do
28
+ redirect_stdout do
29
+ ::RuboCop::Runner.new(options, ::RuboCop::ConfigStore.new).run(paths)
30
+ end
31
+ end
32
+ # @sg-ignore Unresolved call to []=
33
+ result = options[:stdin]
34
+
35
+ log_corrections(corrections)
36
+
37
+ format original, result
38
+ rescue ::RuboCop::ValidationError, ::RuboCop::ConfigNotFoundError => e
39
+ set_error(Solargraph::LanguageServer::ErrorCodes::INTERNAL_ERROR, "[#{e.class}] #{e.message}")
40
+ end
41
+
42
+ private
43
+
44
+ # @param corrections [String]
45
+ # @return [void]
46
+ def log_corrections(corrections)
47
+ corrections = corrections&.strip
48
+ return if corrections&.empty?
49
+
50
+ Solargraph.logger.info('Formatting result:')
51
+ corrections.each_line do |line|
52
+ next if line.strip.empty?
53
+ Solargraph.logger.info(line.strip)
54
+ end
55
+ end
56
+
57
+ # @param file_uri [String]
58
+ # @return [Hash{String => undefined}]
59
+ def config_for(file_uri)
60
+ conf = host.formatter_config(file_uri)
61
+ return {} unless conf.is_a?(Hash)
62
+
63
+ conf['rubocop'] || {}
64
+ end
65
+
66
+ # @param file_uri [String]
67
+ # @param config [Hash{String => String}]
68
+ # @return [Array<String>]
69
+ def cli_args file_uri, config
70
+ file = UriHelpers.uri_to_file(file_uri)
71
+ args = [
72
+ config['cops'] == 'all' ? '-A' : '-a',
73
+ '--cache', 'false',
74
+ '--format', formatter_class(config).name,
75
+ ]
76
+
77
+ ['except', 'only'].each do |arg|
78
+ cops = cop_list(config[arg])
79
+ args += ["--#{arg}", cops] if cops
80
+ end
81
+
82
+ args += config['extra_args'] if config['extra_args']
83
+ args + [file]
84
+ end
85
+
86
+ # @param config [Hash{String => String}]
87
+ # @sg-ignore
88
+ # @return [Class<RuboCop::Formatter::BaseFormatter>]
89
+ def formatter_class(config)
90
+ if self.class.const_defined?('BlankRubocopFormatter')
91
+ # @sg-ignore
92
+ BlankRubocopFormatter
93
+ else
94
+ require_rubocop(config['version'])
95
+ klass = Class.new(::RuboCop::Formatter::BaseFormatter)
96
+ self.class.const_set 'BlankRubocopFormatter', klass
97
+ end
98
+ end
99
+
100
+ # @param value [Array, String]
101
+ # @return [String, nil]
102
+ def cop_list(value)
103
+ # @type [String]
104
+ value = value.join(',') if value.respond_to?(:join)
105
+ return nil if value == '' || !value.is_a?(String)
106
+ value
107
+ end
108
+
109
+ # @param original [String]
110
+ # @param result [String]
111
+ # @return [void]
112
+ def format original, result
113
+ ending = if original.end_with?("\n")
114
+ {
115
+ line: original.lines.length,
116
+ character: 0
117
+ }
118
+ elsif original.lines.empty?
119
+ {
120
+ line: 0,
121
+ character: 0
122
+ }
123
+ else
124
+ {
125
+ line: original.lines.length - 1,
126
+ character: original.lines.last.length
127
+ }
128
+ end
129
+ set_result(
130
+ [
131
+ {
132
+ range: {
133
+ start: {
134
+ line: 0,
135
+ character: 0
136
+ },
137
+ end: ending
138
+ },
139
+ newText: result
140
+ }
141
+ ]
142
+ )
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
148
+ end
@@ -1,58 +1,58 @@
1
- # frozen_string_literal: true
2
-
3
- module Solargraph
4
- module LanguageServer
5
- module Message
6
- module TextDocument
7
- class Hover < Base
8
- def process
9
- line = params['position']['line']
10
- col = params['position']['character']
11
- contents = []
12
- suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
13
- last_link = nil
14
- suggestions.each do |pin|
15
- parts = []
16
- this_link = host.options['enablePages'] ? pin.link_documentation : pin.text_documentation
17
- if !this_link.nil? && this_link != last_link
18
- parts.push this_link
19
- end
20
- parts.push "`#{pin.detail}`" unless pin.is_a?(Pin::Namespace) || pin.detail.nil?
21
- parts.push pin.documentation unless pin.documentation.nil? || pin.documentation.empty?
22
- unless parts.empty?
23
- data = parts.join("\n\n")
24
- next if contents.last&.end_with?(data)
25
- contents.push data
26
- end
27
- last_link = this_link unless this_link.nil?
28
- end
29
- set_result(
30
- contents_or_nil(contents)
31
- )
32
- rescue FileNotFoundError => e
33
- Logging.logger.warn "[#{e.class}] #{e.message}"
34
- Logging.logger.warn e.backtrace.join("\n")
35
- set_result nil
36
- end
37
-
38
- private
39
-
40
- # @param contents [Array<String>]
41
- # @return [Hash{Symbol => Hash{Symbol => String}}, nil]
42
- def contents_or_nil contents
43
- stripped = contents
44
- .map(&:strip)
45
- .reject { |c| c.empty? }
46
- return nil if stripped.empty?
47
- {
48
- contents: {
49
- kind: 'markdown',
50
- value: stripped.join("\n\n")
51
- }
52
- }
53
- end
54
- end
55
- end
56
- end
57
- end
58
- end
1
+ # frozen_string_literal: true
2
+
3
+ module Solargraph
4
+ module LanguageServer
5
+ module Message
6
+ module TextDocument
7
+ class Hover < Base
8
+ def process
9
+ line = params['position']['line']
10
+ col = params['position']['character']
11
+ contents = []
12
+ suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
13
+ last_link = nil
14
+ suggestions.each do |pin|
15
+ parts = []
16
+ this_link = host.options['enablePages'] ? pin.link_documentation : pin.text_documentation
17
+ if !this_link.nil? && this_link != last_link
18
+ parts.push this_link
19
+ end
20
+ parts.push "`#{pin.detail}`" unless pin.is_a?(Pin::Namespace) || pin.detail.nil?
21
+ parts.push pin.documentation unless pin.documentation.nil? || pin.documentation.empty?
22
+ unless parts.empty?
23
+ data = parts.join("\n\n")
24
+ next if contents.last&.end_with?(data)
25
+ contents.push data
26
+ end
27
+ last_link = this_link unless this_link.nil?
28
+ end
29
+ set_result(
30
+ contents_or_nil(contents)
31
+ )
32
+ rescue FileNotFoundError => e
33
+ Logging.logger.warn "[#{e.class}] #{e.message}"
34
+ Logging.logger.warn e.backtrace.join("\n")
35
+ set_result nil
36
+ end
37
+
38
+ private
39
+
40
+ # @param contents [Array<String>]
41
+ # @return [Hash{Symbol => Hash{Symbol => String}}, nil]
42
+ def contents_or_nil contents
43
+ stripped = contents
44
+ .map(&:strip)
45
+ .reject { |c| c.empty? }
46
+ return nil if stripped.empty?
47
+ {
48
+ contents: {
49
+ kind: 'markdown',
50
+ value: stripped.join("\n\n")
51
+ }
52
+ }
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -1,24 +1,24 @@
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 { |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,25 +1,25 @@
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::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,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.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
+ 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