solargraph 0.58.2 → 0.59.0.dev.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.
- checksums.yaml +4 -4
- data/.envrc +3 -0
- data/.github/workflows/linting.yml +4 -5
- data/.github/workflows/plugins.yml +41 -34
- data/.github/workflows/rspec.yml +44 -23
- data/.github/workflows/typecheck.yml +2 -2
- data/.rubocop.yml +32 -5
- data/.rubocop_todo.yml +50 -966
- data/Gemfile +3 -1
- data/README.md +3 -3
- data/Rakefile +26 -23
- data/bin/solargraph +2 -1
- data/lib/solargraph/api_map/cache.rb +3 -3
- data/lib/solargraph/api_map/constants.rb +13 -3
- data/lib/solargraph/api_map/index.rb +23 -18
- data/lib/solargraph/api_map/source_to_yard.rb +22 -9
- data/lib/solargraph/api_map/store.rb +33 -28
- data/lib/solargraph/api_map.rb +150 -82
- data/lib/solargraph/bench.rb +44 -45
- data/lib/solargraph/complex_type/conformance.rb +176 -0
- data/lib/solargraph/complex_type/type_methods.rb +28 -17
- data/lib/solargraph/complex_type/unique_type.rb +218 -57
- data/lib/solargraph/complex_type.rb +170 -57
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +7 -5
- data/lib/solargraph/convention/data_definition.rb +5 -2
- data/lib/solargraph/convention/gemfile.rb +15 -15
- data/lib/solargraph/convention/gemspec.rb +23 -23
- data/lib/solargraph/convention/rakefile.rb +17 -17
- data/lib/solargraph/convention/struct_definition/struct_assignment_node.rb +2 -1
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +4 -3
- data/lib/solargraph/convention/struct_definition.rb +8 -4
- data/lib/solargraph/convention.rb +78 -78
- data/lib/solargraph/converters/dd.rb +19 -17
- data/lib/solargraph/converters/dl.rb +17 -15
- data/lib/solargraph/converters/dt.rb +17 -15
- data/lib/solargraph/converters/misc.rb +3 -1
- data/lib/solargraph/diagnostics/require_not_found.rb +1 -0
- data/lib/solargraph/diagnostics/rubocop.rb +11 -10
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +5 -3
- data/lib/solargraph/diagnostics/type_check.rb +11 -10
- data/lib/solargraph/diagnostics/update_errors.rb +37 -41
- data/lib/solargraph/doc_map.rb +133 -373
- data/lib/solargraph/equality.rb +4 -4
- data/lib/solargraph/gem_pins.rb +21 -20
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- data/lib/solargraph/language_server/host/diagnoser.rb +1 -1
- data/lib/solargraph/language_server/host/dispatch.rb +3 -3
- data/lib/solargraph/language_server/host/message_worker.rb +4 -3
- data/lib/solargraph/language_server/host/sources.rb +2 -1
- data/lib/solargraph/language_server/host.rb +30 -22
- data/lib/solargraph/language_server/message/base.rb +97 -97
- data/lib/solargraph/language_server/message/client/register_capability.rb +13 -15
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +58 -60
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +12 -18
- data/lib/solargraph/language_server/message/extended/document.rb +1 -0
- data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
- data/lib/solargraph/language_server/message/extended/download_core.rb +20 -19
- data/lib/solargraph/language_server/message/extended/search.rb +20 -20
- data/lib/solargraph/language_server/message/initialize.rb +197 -191
- data/lib/solargraph/language_server/message/text_document/completion.rb +10 -8
- data/lib/solargraph/language_server/message/text_document/definition.rb +41 -32
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +23 -16
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +29 -19
- data/lib/solargraph/language_server/message/text_document/formatting.rb +8 -6
- data/lib/solargraph/language_server/message/text_document/hover.rb +5 -5
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +18 -11
- data/lib/solargraph/language_server/message/text_document/references.rb +23 -16
- data/lib/solargraph/language_server/message/text_document/rename.rb +26 -19
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +3 -2
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -17
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +41 -35
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +48 -40
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +32 -26
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +27 -17
- data/lib/solargraph/language_server/message.rb +94 -94
- data/lib/solargraph/language_server/request.rb +29 -27
- data/lib/solargraph/language_server/transport/data_reader.rb +72 -74
- data/lib/solargraph/language_server/uri_helpers.rb +49 -49
- data/lib/solargraph/library.rb +85 -44
- data/lib/solargraph/location.rb +17 -14
- data/lib/solargraph/logging.rb +24 -4
- data/lib/solargraph/page.rb +92 -92
- data/lib/solargraph/parser/comment_ripper.rb +19 -4
- data/lib/solargraph/parser/flow_sensitive_typing.rb +326 -108
- data/lib/solargraph/parser/node_processor/base.rb +34 -4
- data/lib/solargraph/parser/node_processor.rb +8 -7
- data/lib/solargraph/parser/parser_gem/class_methods.rb +32 -14
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +50 -25
- data/lib/solargraph/parser/parser_gem/node_methods.rb +91 -70
- data/lib/solargraph/parser/parser_gem/node_processors/and_node.rb +4 -4
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +13 -11
- data/lib/solargraph/parser/parser_gem/node_processors/begin_node.rb +9 -0
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +12 -12
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +10 -3
- data/lib/solargraph/parser/parser_gem/node_processors/defs_node.rb +38 -37
- data/lib/solargraph/parser/parser_gem/node_processors/if_node.rb +36 -6
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +5 -3
- data/lib/solargraph/parser/parser_gem/node_processors/lvasgn_node.rb +1 -0
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +3 -1
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +3 -3
- data/lib/solargraph/parser/parser_gem/node_processors/or_node.rb +22 -0
- data/lib/solargraph/parser/parser_gem/node_processors/orasgn_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/resbody_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +4 -5
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +124 -113
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +23 -0
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +6 -2
- data/lib/solargraph/parser/parser_gem/node_processors.rb +4 -0
- data/lib/solargraph/parser/parser_gem.rb +14 -12
- data/lib/solargraph/parser/region.rb +9 -3
- data/lib/solargraph/parser/snippet.rb +3 -1
- data/lib/solargraph/parser.rb +25 -23
- data/lib/solargraph/pin/base.rb +126 -80
- data/lib/solargraph/pin/base_variable.rb +273 -24
- data/lib/solargraph/pin/block.rb +29 -6
- data/lib/solargraph/pin/breakable.rb +7 -1
- data/lib/solargraph/pin/callable.rb +65 -21
- data/lib/solargraph/pin/closure.rb +7 -10
- data/lib/solargraph/pin/common.rb +24 -6
- data/lib/solargraph/pin/compound_statement.rb +55 -0
- data/lib/solargraph/pin/constant.rb +43 -45
- data/lib/solargraph/pin/conversions.rb +10 -4
- data/lib/solargraph/pin/delegated_method.rb +19 -8
- data/lib/solargraph/pin/documenting.rb +4 -2
- data/lib/solargraph/pin/instance_variable.rb +5 -1
- data/lib/solargraph/pin/keyword.rb +0 -4
- data/lib/solargraph/pin/local_variable.rb +15 -59
- data/lib/solargraph/pin/method.rb +153 -104
- data/lib/solargraph/pin/method_alias.rb +8 -0
- data/lib/solargraph/pin/namespace.rb +19 -12
- data/lib/solargraph/pin/parameter.rb +100 -36
- data/lib/solargraph/pin/proxy_type.rb +4 -1
- data/lib/solargraph/pin/reference/override.rb +1 -1
- data/lib/solargraph/pin/reference/superclass.rb +2 -0
- data/lib/solargraph/pin/reference.rb +19 -0
- data/lib/solargraph/pin/search.rb +3 -2
- data/lib/solargraph/pin/signature.rb +15 -12
- data/lib/solargraph/pin/symbol.rb +2 -1
- data/lib/solargraph/pin/until.rb +2 -4
- data/lib/solargraph/pin/while.rb +2 -4
- data/lib/solargraph/pin.rb +2 -0
- data/lib/solargraph/pin_cache.rb +490 -73
- data/lib/solargraph/position.rb +14 -10
- data/lib/solargraph/range.rb +16 -15
- data/lib/solargraph/rbs_map/conversions.rb +343 -214
- data/lib/solargraph/rbs_map/core_fills.rb +91 -84
- data/lib/solargraph/rbs_map/core_map.rb +24 -17
- data/lib/solargraph/rbs_map/stdlib_map.rb +33 -5
- data/lib/solargraph/rbs_map.rb +77 -32
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +128 -73
- data/lib/solargraph/source/chain/array.rb +39 -37
- data/lib/solargraph/source/chain/call.rb +96 -56
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +5 -1
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +8 -5
- data/lib/solargraph/source/chain/if.rb +12 -10
- data/lib/solargraph/source/chain/instance_variable.rb +24 -1
- data/lib/solargraph/source/chain/link.rb +99 -109
- data/lib/solargraph/source/chain/literal.rb +9 -6
- data/lib/solargraph/source/chain/or.rb +10 -4
- data/lib/solargraph/source/chain/q_call.rb +13 -11
- data/lib/solargraph/source/chain/variable.rb +15 -13
- data/lib/solargraph/source/chain/z_super.rb +28 -30
- data/lib/solargraph/source/chain.rb +49 -38
- data/lib/solargraph/source/change.rb +12 -5
- data/lib/solargraph/source/cursor.rb +23 -17
- data/lib/solargraph/source/encoding_fixes.rb +6 -7
- data/lib/solargraph/source/source_chainer.rb +56 -32
- data/lib/solargraph/source/updater.rb +5 -1
- data/lib/solargraph/source.rb +59 -35
- data/lib/solargraph/source_map/clip.rb +48 -29
- data/lib/solargraph/source_map/data.rb +4 -1
- data/lib/solargraph/source_map/mapper.rb +71 -42
- data/lib/solargraph/source_map.rb +21 -9
- data/lib/solargraph/type_checker/problem.rb +3 -1
- data/lib/solargraph/type_checker/rules.rb +81 -8
- data/lib/solargraph/type_checker.rb +195 -120
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +13 -10
- data/lib/solargraph/workspace/gemspecs.rb +367 -0
- data/lib/solargraph/workspace/require_paths.rb +1 -0
- data/lib/solargraph/workspace.rb +149 -30
- data/lib/solargraph/yard_map/helpers.rb +8 -3
- data/lib/solargraph/yard_map/mapper/to_method.rb +13 -7
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +2 -1
- data/lib/solargraph/yard_map/mapper.rb +13 -8
- data/lib/solargraph/yard_tags.rb +20 -20
- data/lib/solargraph/yardoc.rb +33 -23
- data/lib/solargraph.rb +29 -8
- data/rbs/fills/rubygems/0/dependency.rbs +193 -0
- data/rbs/fills/tuple/tuple.rbs +28 -0
- data/rbs/shims/ast/0/node.rbs +1 -1
- data/rbs/shims/diff-lcs/1.5/diff-lcs.rbs +11 -0
- data/solargraph.gemspec +36 -34
- metadata +38 -33
- data/lib/solargraph/type_checker/checks.rb +0 -124
- data/lib/solargraph/type_checker/param_def.rb +0 -37
- data/lib/solargraph/yard_map/to_method.rb +0 -89
|
@@ -43,7 +43,7 @@ module Solargraph
|
|
|
43
43
|
|
|
44
44
|
# @param corrections [String]
|
|
45
45
|
# @return [void]
|
|
46
|
-
def log_corrections
|
|
46
|
+
def log_corrections corrections
|
|
47
47
|
corrections = corrections&.strip
|
|
48
48
|
return if corrections&.empty?
|
|
49
49
|
|
|
@@ -56,7 +56,7 @@ module Solargraph
|
|
|
56
56
|
|
|
57
57
|
# @param file_uri [String]
|
|
58
58
|
# @return [Hash{String => undefined}]
|
|
59
|
-
def config_for
|
|
59
|
+
def config_for file_uri
|
|
60
60
|
conf = host.formatter_config(file_uri)
|
|
61
61
|
return {} unless conf.is_a?(Hash)
|
|
62
62
|
|
|
@@ -71,10 +71,10 @@ module Solargraph
|
|
|
71
71
|
args = [
|
|
72
72
|
config['cops'] == 'all' ? '-A' : '-a',
|
|
73
73
|
'--cache', 'false',
|
|
74
|
-
'--format', formatter_class(config).name
|
|
74
|
+
'--format', formatter_class(config).name
|
|
75
75
|
]
|
|
76
76
|
|
|
77
|
-
[
|
|
77
|
+
%w[except only].each do |arg|
|
|
78
78
|
cops = cop_list(config[arg])
|
|
79
79
|
args += ["--#{arg}", cops] if cops
|
|
80
80
|
end
|
|
@@ -86,7 +86,7 @@ module Solargraph
|
|
|
86
86
|
# @param config [Hash{String => String}]
|
|
87
87
|
# @sg-ignore
|
|
88
88
|
# @return [Class<RuboCop::Formatter::BaseFormatter>]
|
|
89
|
-
def formatter_class
|
|
89
|
+
def formatter_class config
|
|
90
90
|
if self.class.const_defined?('BlankRubocopFormatter')
|
|
91
91
|
# @sg-ignore
|
|
92
92
|
BlankRubocopFormatter
|
|
@@ -98,9 +98,11 @@ module Solargraph
|
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
# @param value [Array, String]
|
|
101
|
+
#
|
|
101
102
|
# @return [String, nil]
|
|
102
|
-
def cop_list
|
|
103
|
+
def cop_list value
|
|
103
104
|
# @type [String]
|
|
105
|
+
# @sg-ignore Translate to something flow sensitive typing understands
|
|
104
106
|
value = value.join(',') if value.respond_to?(:join)
|
|
105
107
|
return nil if value == '' || !value.is_a?(String)
|
|
106
108
|
value
|
|
@@ -11,12 +11,11 @@ module Solargraph
|
|
|
11
11
|
contents = []
|
|
12
12
|
suggestions = host.definitions_at(params['textDocument']['uri'], line, col)
|
|
13
13
|
last_link = nil
|
|
14
|
+
# @sg-ignore Need to add nil check here
|
|
14
15
|
suggestions.each do |pin|
|
|
15
16
|
parts = []
|
|
16
17
|
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
|
|
18
|
+
parts.push this_link if !this_link.nil? && this_link != last_link
|
|
20
19
|
parts.push "`#{pin.detail}`" unless pin.is_a?(Pin::Namespace) || pin.detail.nil?
|
|
21
20
|
parts.push pin.documentation unless pin.documentation.nil? || pin.documentation.empty?
|
|
22
21
|
unless parts.empty?
|
|
@@ -31,6 +30,7 @@ module Solargraph
|
|
|
31
30
|
)
|
|
32
31
|
rescue FileNotFoundError => e
|
|
33
32
|
Logging.logger.warn "[#{e.class}] #{e.message}"
|
|
33
|
+
# @sg-ignore Need to add nil check here
|
|
34
34
|
Logging.logger.warn e.backtrace.join("\n")
|
|
35
35
|
set_result nil
|
|
36
36
|
end
|
|
@@ -41,8 +41,8 @@ module Solargraph
|
|
|
41
41
|
# @return [Hash{Symbol => Hash{Symbol => String}}, nil]
|
|
42
42
|
def contents_or_nil contents
|
|
43
43
|
stripped = contents
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
.map(&:strip)
|
|
45
|
+
.reject(&:empty?)
|
|
46
46
|
return nil if stripped.empty?
|
|
47
47
|
{
|
|
48
48
|
contents: {
|
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module TextDocument
|
|
7
|
+
class PrepareRename < Base
|
|
8
|
+
def process
|
|
9
|
+
line = params['position']['line']
|
|
10
|
+
col = params['position']['character']
|
|
11
|
+
set_result host.sources.find(params['textDocument']['uri']).cursor_at(Solargraph::Position.new(line,
|
|
12
|
+
col)).range.to_hash
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module TextDocument
|
|
7
|
+
class References < Base
|
|
8
|
+
def process
|
|
9
|
+
locs = host.references_from(params['textDocument']['uri'], params['position']['line'],
|
|
10
|
+
params['position']['character'])
|
|
11
|
+
result = locs.map do |loc|
|
|
12
|
+
{
|
|
13
|
+
uri: file_to_uri(loc.filename),
|
|
14
|
+
range: loc.range.to_hash
|
|
15
|
+
}
|
|
16
|
+
end
|
|
17
|
+
set_result result
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -1,19 +1,26 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module TextDocument
|
|
7
|
+
class Rename < Base
|
|
8
|
+
def process
|
|
9
|
+
locs = host.references_from(params['textDocument']['uri'], params['position']['line'],
|
|
10
|
+
params['position']['character'], strip: true)
|
|
11
|
+
changes = {}
|
|
12
|
+
locs.each do |loc|
|
|
13
|
+
uri = file_to_uri(loc.filename)
|
|
14
|
+
changes[uri] ||= []
|
|
15
|
+
changes[uri].push({
|
|
16
|
+
range: loc.range.to_hash,
|
|
17
|
+
newText: params['newName']
|
|
18
|
+
})
|
|
19
|
+
end
|
|
20
|
+
set_result changes: changes
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -10,10 +10,11 @@ module Solargraph
|
|
|
10
10
|
col = params['position']['character']
|
|
11
11
|
suggestions = host.signatures_at(params['textDocument']['uri'], line, col)
|
|
12
12
|
set_result({
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
signatures: suggestions.flat_map(&:signature_help)
|
|
14
|
+
})
|
|
15
15
|
rescue FileNotFoundError => e
|
|
16
16
|
Logging.logger.warn "[#{e.class}] #{e.message}"
|
|
17
|
+
# @sg-ignore Need to add nil check here
|
|
17
18
|
Logging.logger.warn e.backtrace.join("\n")
|
|
18
19
|
set_result nil
|
|
19
20
|
end
|
|
@@ -1,24 +1,32 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
module Solargraph
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module TextDocument
|
|
7
|
+
class TypeDefinition < Base
|
|
8
|
+
def process
|
|
9
|
+
@line = params['position']['line']
|
|
10
|
+
@column = params['position']['character']
|
|
11
|
+
set_result(code_location || [])
|
|
12
|
+
end
|
|
10
13
|
|
|
11
|
-
|
|
14
|
+
private
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
# @return [Array<Hash>, nil]
|
|
17
|
+
def code_location
|
|
18
|
+
suggestions = host.type_definitions_at(params['textDocument']['uri'], @line, @column)
|
|
19
|
+
# @sg-ignore Need to add nil check here
|
|
20
|
+
return nil if suggestions.empty?
|
|
21
|
+
# @sg-ignore Need to add nil check here
|
|
22
|
+
suggestions.reject { |pin| pin.best_location.nil? || pin.best_location.filename.nil? }.map do |pin|
|
|
23
|
+
{
|
|
24
|
+
uri: file_to_uri(pin.best_location.filename),
|
|
25
|
+
range: pin.best_location.range.to_hash
|
|
26
|
+
}
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
22
30
|
end
|
|
23
31
|
end
|
|
24
32
|
end
|
|
@@ -1,35 +1,41 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module Workspace
|
|
7
|
+
class DidChangeConfiguration < Solargraph::LanguageServer::Message::Base
|
|
8
|
+
def process
|
|
9
|
+
return unless params['settings']
|
|
10
|
+
update = params['settings']['solargraph']
|
|
11
|
+
host.configure update
|
|
12
|
+
register_from_options
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
# @return [void]
|
|
18
|
+
def register_from_options
|
|
19
|
+
Solargraph.logger.debug "Registering capabilities from options: #{host.options.inspect}"
|
|
20
|
+
# @type [Array<String>]
|
|
21
|
+
y = []
|
|
22
|
+
# @type [Array<String>]
|
|
23
|
+
n = []
|
|
24
|
+
(host.options['completion'] ? y : n).push('textDocument/completion')
|
|
25
|
+
(host.options['hover'] ? y : n).push('textDocument/hover', 'textDocument/signatureHelp')
|
|
26
|
+
(host.options['autoformat'] ? y : n).push('textDocument/onTypeFormatting')
|
|
27
|
+
(host.options['formatting'] ? y : n).push('textDocument/formatting')
|
|
28
|
+
(host.options['symbols'] ? y : n).push('textDocument/documentSymbol', 'workspace/symbol')
|
|
29
|
+
(host.options['definitions'] ? y : n).push('textDocument/definition')
|
|
30
|
+
(host.options['typeDefinitions'] ? y : n).push('textDocument/typeDefinition')
|
|
31
|
+
(host.options['references'] ? y : n).push('textDocument/references')
|
|
32
|
+
(host.options['folding'] ? y : n).push('textDocument/folding')
|
|
33
|
+
(host.options['highlights'] ? y : n).push('textDocument/documentHighlight')
|
|
34
|
+
host.register_capabilities y
|
|
35
|
+
host.unregister_capabilities n
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
@@ -1,40 +1,48 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module Workspace
|
|
7
|
+
class DidChangeWatchedFiles < Solargraph::LanguageServer::Message::Base
|
|
8
|
+
CREATED = 1
|
|
9
|
+
CHANGED = 2
|
|
10
|
+
DELETED = 3
|
|
11
|
+
|
|
12
|
+
include Solargraph::LanguageServer::UriHelpers
|
|
13
|
+
|
|
14
|
+
def process
|
|
15
|
+
need_catalog = false
|
|
16
|
+
to_create = []
|
|
17
|
+
to_delete = []
|
|
18
|
+
|
|
19
|
+
# @param change [Hash]
|
|
20
|
+
params['changes'].each do |change|
|
|
21
|
+
case change['type']
|
|
22
|
+
when CREATED
|
|
23
|
+
to_create << change['uri']
|
|
24
|
+
need_catalog = true
|
|
25
|
+
when CHANGED
|
|
26
|
+
next if host.open?(change['uri'])
|
|
27
|
+
to_create << change['uri']
|
|
28
|
+
need_catalog = true
|
|
29
|
+
when DELETED
|
|
30
|
+
to_delete << change['uri']
|
|
31
|
+
need_catalog = true
|
|
32
|
+
else
|
|
33
|
+
set_error Solargraph::LanguageServer::ErrorCodes::INVALID_PARAMS,
|
|
34
|
+
"Unknown change type ##{change['type']} for #{uri_to_file(change['uri'])}"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
host.create(*to_create)
|
|
39
|
+
host.delete(*to_delete)
|
|
40
|
+
|
|
41
|
+
# Force host to catalog libraries after file changes (see castwide/solargraph#139)
|
|
42
|
+
host.catalog if need_catalog
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -1,26 +1,32 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module Workspace
|
|
7
|
+
class DidChangeWorkspaceFolders < Solargraph::LanguageServer::Message::Base
|
|
8
|
+
def process
|
|
9
|
+
add_folders
|
|
10
|
+
remove_folders
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
private
|
|
14
|
+
|
|
15
|
+
# @return [void]
|
|
16
|
+
def add_folders
|
|
17
|
+
return unless params['event'] && params['event']['added']
|
|
18
|
+
host.prepare_folders params['event']['added']
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# @return [void]
|
|
22
|
+
def remove_folders
|
|
23
|
+
return unless params['event'] && params['event']['removed']
|
|
24
|
+
params['event']['removed'].each do |_folder|
|
|
25
|
+
host.remove_folders params['event']['removed']
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module Workspace
|
|
7
|
+
class WorkspaceSymbol < Solargraph::LanguageServer::Message::Base
|
|
8
|
+
include Solargraph::LanguageServer::UriHelpers
|
|
5
9
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
def process
|
|
11
|
+
pins = host.query_symbols(params['query'])
|
|
12
|
+
info = pins.map do |pin|
|
|
13
|
+
# @sg-ignore Need to add nil check here
|
|
14
|
+
uri = file_to_uri(pin.best_location.filename)
|
|
15
|
+
{
|
|
16
|
+
name: pin.path,
|
|
17
|
+
containerName: pin.namespace,
|
|
18
|
+
kind: pin.symbol_kind,
|
|
19
|
+
location: {
|
|
20
|
+
uri: uri,
|
|
21
|
+
# @sg-ignore Need to add nil check here
|
|
22
|
+
range: pin.best_location.range.to_hash
|
|
23
|
+
},
|
|
24
|
+
deprecated: pin.deprecated?
|
|
25
|
+
}
|
|
26
|
+
end
|
|
27
|
+
set_result info
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
20
31
|
end
|
|
21
|
-
set_result info
|
|
22
32
|
end
|
|
23
33
|
end
|