solargraph 0.59.0.dev.1 → 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/.github/workflows/plugins.yml +4 -1
- data/.github/workflows/rspec.yml +3 -14
- data/.gitignore +1 -0
- data/.rubocop.yml +32 -5
- data/.rubocop_todo.yml +37 -931
- data/CHANGELOG.md +7 -1
- data/Gemfile +3 -1
- data/Rakefile +25 -23
- data/bin/solargraph +2 -1
- data/lib/solargraph/api_map/index.rb +5 -11
- data/lib/solargraph/api_map/source_to_yard.rb +9 -8
- data/lib/solargraph/api_map/store.rb +22 -20
- data/lib/solargraph/api_map.rb +50 -37
- data/lib/solargraph/bench.rb +44 -45
- data/lib/solargraph/complex_type/type_methods.rb +12 -15
- data/lib/solargraph/complex_type/unique_type.rb +54 -43
- data/lib/solargraph/complex_type.rb +69 -61
- data/lib/solargraph/convention/data_definition/data_assignment_node.rb +61 -61
- data/lib/solargraph/convention/data_definition/data_definition_node.rb +4 -4
- data/lib/solargraph/convention/data_definition.rb +1 -1
- 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 +1 -1
- data/lib/solargraph/convention/struct_definition/struct_definition_node.rb +3 -3
- data/lib/solargraph/convention/struct_definition.rb +3 -3
- 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/rubocop.rb +10 -10
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +3 -3
- data/lib/solargraph/diagnostics/type_check.rb +10 -10
- data/lib/solargraph/diagnostics/update_errors.rb +37 -41
- data/lib/solargraph/doc_map.rb +9 -10
- data/lib/solargraph/equality.rb +3 -3
- data/lib/solargraph/gem_pins.rb +7 -5
- data/lib/solargraph/language_server/error_codes.rb +20 -20
- data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
- data/lib/solargraph/language_server/host/dispatch.rb +2 -3
- data/lib/solargraph/language_server/host/message_worker.rb +2 -2
- data/lib/solargraph/language_server/host/sources.rb +1 -1
- data/lib/solargraph/language_server/host.rb +24 -21
- 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 +10 -11
- 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 +8 -8
- data/lib/solargraph/language_server/message/text_document/definition.rb +41 -34
- 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 -21
- data/lib/solargraph/language_server/message/text_document/formatting.rb +6 -6
- data/lib/solargraph/language_server/message/text_document/hover.rb +3 -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 +2 -2
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +25 -19
- 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 -19
- 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 +28 -33
- data/lib/solargraph/location.rb +10 -12
- data/lib/solargraph/logging.rb +4 -4
- data/lib/solargraph/page.rb +92 -92
- data/lib/solargraph/parser/comment_ripper.rb +12 -4
- data/lib/solargraph/parser/flow_sensitive_typing.rb +32 -42
- data/lib/solargraph/parser/node_processor/base.rb +4 -4
- data/lib/solargraph/parser/node_processor.rb +1 -1
- data/lib/solargraph/parser/parser_gem/class_methods.rb +4 -4
- data/lib/solargraph/parser/parser_gem/flawed_builder.rb +19 -19
- data/lib/solargraph/parser/parser_gem/node_chainer.rb +20 -20
- data/lib/solargraph/parser/parser_gem/node_methods.rb +66 -65
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +12 -12
- data/lib/solargraph/parser/parser_gem/node_processors/block_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/def_node.rb +3 -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 +3 -3
- data/lib/solargraph/parser/parser_gem/node_processors/ivasgn_node.rb +2 -1
- data/lib/solargraph/parser/parser_gem/node_processors/opasgn_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +3 -5
- data/lib/solargraph/parser/parser_gem/node_processors/send_node.rb +118 -112
- data/lib/solargraph/parser/parser_gem/node_processors/until_node.rb +29 -29
- data/lib/solargraph/parser/parser_gem/node_processors/when_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem/node_processors/while_node.rb +1 -1
- data/lib/solargraph/parser/parser_gem.rb +14 -12
- data/lib/solargraph/parser/snippet.rb +2 -0
- data/lib/solargraph/parser.rb +25 -23
- data/lib/solargraph/pin/base.rb +78 -64
- data/lib/solargraph/pin/base_variable.rb +28 -71
- data/lib/solargraph/pin/block.rb +3 -2
- data/lib/solargraph/pin/breakable.rb +2 -0
- data/lib/solargraph/pin/callable.rb +23 -26
- data/lib/solargraph/pin/closure.rb +5 -4
- data/lib/solargraph/pin/common.rb +5 -2
- data/lib/solargraph/pin/compound_statement.rb +3 -3
- data/lib/solargraph/pin/constant.rb +43 -45
- data/lib/solargraph/pin/conversions.rb +9 -4
- data/lib/solargraph/pin/delegated_method.rb +4 -4
- data/lib/solargraph/pin/documenting.rb +3 -2
- data/lib/solargraph/pin/local_variable.rb +4 -4
- data/lib/solargraph/pin/method.rb +71 -70
- data/lib/solargraph/pin/namespace.rb +13 -12
- data/lib/solargraph/pin/parameter.rb +28 -27
- data/lib/solargraph/pin/proxy_type.rb +2 -0
- data/lib/solargraph/pin/reference.rb +17 -0
- data/lib/solargraph/pin/search.rb +2 -2
- data/lib/solargraph/pin/signature.rb +9 -14
- data/lib/solargraph/pin/symbol.rb +1 -0
- data/lib/solargraph/pin/until.rb +1 -3
- data/lib/solargraph/pin/while.rb +1 -3
- data/lib/solargraph/pin_cache.rb +16 -19
- data/lib/solargraph/position.rb +35 -17
- data/lib/solargraph/range.rb +10 -9
- data/lib/solargraph/rbs_map/conversions.rb +312 -206
- data/lib/solargraph/rbs_map/core_fills.rb +91 -84
- data/lib/solargraph/rbs_map/stdlib_map.rb +0 -1
- data/lib/solargraph/rbs_map.rb +3 -12
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +63 -53
- data/lib/solargraph/source/chain/array.rb +39 -37
- data/lib/solargraph/source/chain/call.rb +49 -44
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +3 -1
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +8 -6
- data/lib/solargraph/source/chain/if.rb +11 -10
- data/lib/solargraph/source/chain/instance_variable.rb +3 -1
- data/lib/solargraph/source/chain/link.rb +99 -109
- data/lib/solargraph/source/chain/literal.rb +4 -6
- data/lib/solargraph/source/chain/or.rb +2 -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 +24 -16
- data/lib/solargraph/source/change.rb +3 -3
- data/lib/solargraph/source/cursor.rb +18 -18
- data/lib/solargraph/source/encoding_fixes.rb +6 -7
- data/lib/solargraph/source/source_chainer.rb +46 -32
- data/lib/solargraph/source/updater.rb +1 -1
- data/lib/solargraph/source.rb +27 -29
- data/lib/solargraph/source_map/clip.rb +38 -30
- data/lib/solargraph/source_map/mapper.rb +52 -46
- data/lib/solargraph/source_map.rb +8 -4
- data/lib/solargraph/type_checker/rules.rb +8 -8
- data/lib/solargraph/type_checker.rb +95 -101
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +10 -9
- data/lib/solargraph/workspace/gemspecs.rb +1 -1
- data/lib/solargraph/workspace.rb +21 -44
- data/lib/solargraph/yard_map/helpers.rb +6 -2
- data/lib/solargraph/yard_map/mapper/to_method.rb +8 -6
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +1 -1
- data/lib/solargraph/yard_map/mapper.rb +12 -12
- data/lib/solargraph/yard_tags.rb +20 -20
- data/lib/solargraph.rb +5 -5
- data/solargraph.gemspec +35 -34
- metadata +28 -28
|
@@ -1,60 +1,58 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module CompletionItem
|
|
7
|
-
# completionItem/resolve message handler
|
|
8
|
-
#
|
|
9
|
-
class Resolve < Base
|
|
10
|
-
def process
|
|
11
|
-
pins = host.locate_pins(params)
|
|
12
|
-
set_result merge(pins)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
private
|
|
16
|
-
|
|
17
|
-
# @param pins [Array<Pin::Base>]
|
|
18
|
-
# @return [Hash]
|
|
19
|
-
def merge pins
|
|
20
|
-
return params if pins.empty?
|
|
21
|
-
docs = pins
|
|
22
|
-
.reject { |pin| pin.documentation.empty? && pin.return_type.undefined? }
|
|
23
|
-
result = params
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
result[:detail] = pins.first.detail
|
|
28
|
-
result
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
# @param text [String]
|
|
32
|
-
# @return [Hash{Symbol => String}, nil]
|
|
33
|
-
def markup_content text
|
|
34
|
-
return nil if text.strip.empty?
|
|
35
|
-
{
|
|
36
|
-
kind: 'markdown',
|
|
37
|
-
value: text
|
|
38
|
-
}
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# @param pins [Array<Pin::Base>]
|
|
42
|
-
# @return [String]
|
|
43
|
-
def join_docs pins
|
|
44
|
-
result = []
|
|
45
|
-
last_link = nil
|
|
46
|
-
pins.
|
|
47
|
-
this_link = host.options['enablePages'] ? pin.link_documentation : pin.text_documentation
|
|
48
|
-
if this_link && this_link != last_link && this_link != 'undefined'
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
end
|
|
60
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module CompletionItem
|
|
7
|
+
# completionItem/resolve message handler
|
|
8
|
+
#
|
|
9
|
+
class Resolve < Base
|
|
10
|
+
def process
|
|
11
|
+
pins = host.locate_pins(params)
|
|
12
|
+
set_result merge(pins)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
# @param pins [Array<Pin::Base>]
|
|
18
|
+
# @return [Hash]
|
|
19
|
+
def merge pins
|
|
20
|
+
return params if pins.empty?
|
|
21
|
+
docs = pins
|
|
22
|
+
.reject { |pin| pin.documentation.empty? && pin.return_type.undefined? }
|
|
23
|
+
result = params
|
|
24
|
+
.transform_keys(&:to_sym)
|
|
25
|
+
.merge(pins.first.resolve_completion_item)
|
|
26
|
+
.merge(documentation: markup_content(join_docs(docs)))
|
|
27
|
+
result[:detail] = pins.first.detail
|
|
28
|
+
result
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @param text [String]
|
|
32
|
+
# @return [Hash{Symbol => String}, nil]
|
|
33
|
+
def markup_content text
|
|
34
|
+
return nil if text.strip.empty?
|
|
35
|
+
{
|
|
36
|
+
kind: 'markdown',
|
|
37
|
+
value: text
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @param pins [Array<Pin::Base>]
|
|
42
|
+
# @return [String]
|
|
43
|
+
def join_docs pins
|
|
44
|
+
result = []
|
|
45
|
+
last_link = nil
|
|
46
|
+
pins.each do |pin|
|
|
47
|
+
this_link = host.options['enablePages'] ? pin.link_documentation : pin.text_documentation
|
|
48
|
+
result.push this_link if this_link && this_link != last_link && this_link != 'undefined'
|
|
49
|
+
result.push pin.documentation unless result.last&.end_with?(pin.documentation)
|
|
50
|
+
last_link = this_link
|
|
51
|
+
end
|
|
52
|
+
result.join("\n\n")
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
module Solargraph
|
|
5
4
|
module LanguageServer
|
|
6
5
|
module Message
|
|
@@ -17,8 +16,8 @@ module Solargraph
|
|
|
17
16
|
|
|
18
17
|
# @param obj [Gem::SpecFetcher]
|
|
19
18
|
# @return [Gem::SpecFetcher]
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
class << self
|
|
20
|
+
attr_writer :fetcher
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
GEM_ZERO = Gem::Version.new('0.0.0')
|
|
@@ -41,11 +40,11 @@ module Solargraph
|
|
|
41
40
|
['Update now'] do |result|
|
|
42
41
|
next unless result == 'Update now'
|
|
43
42
|
cmd = if host.options['useBundler']
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
43
|
+
'bundle update solargraph'
|
|
44
|
+
else
|
|
45
|
+
'gem update solargraph'
|
|
46
|
+
end
|
|
47
|
+
_, s = Open3.capture2(cmd)
|
|
49
48
|
if s == 0
|
|
50
49
|
host.show_message 'Successfully updated the Solargraph gem.', LanguageServer::MessageTypes::INFO
|
|
51
50
|
host.send_notification '$/solargraph/restart', {}
|
|
@@ -62,9 +61,9 @@ module Solargraph
|
|
|
62
61
|
host.show_message(error, MessageTypes::ERROR) if params['verbose']
|
|
63
62
|
end
|
|
64
63
|
set_result({
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
installed: current,
|
|
65
|
+
available: available
|
|
66
|
+
})
|
|
68
67
|
end
|
|
69
68
|
|
|
70
69
|
private
|
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'open3'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
module LanguageServer
|
|
7
|
-
module Message
|
|
8
|
-
module Extended
|
|
9
|
-
# Update YARD documentation for installed gems. If the `rebuild`
|
|
10
|
-
# parameter is true, rebuild existing yardocs.
|
|
11
|
-
#
|
|
12
|
-
class DocumentGems < Base
|
|
13
|
-
def process
|
|
14
|
-
cmd = [host.command_path, 'gems']
|
|
15
|
-
cmd.push '--rebuild' if params['rebuild']
|
|
16
|
-
|
|
17
|
-
if s
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
set_result({
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'open3'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
module LanguageServer
|
|
7
|
+
module Message
|
|
8
|
+
module Extended
|
|
9
|
+
# Update YARD documentation for installed gems. If the `rebuild`
|
|
10
|
+
# parameter is true, rebuild existing yardocs.
|
|
11
|
+
#
|
|
12
|
+
class DocumentGems < Base
|
|
13
|
+
def process
|
|
14
|
+
cmd = [host.command_path, 'gems']
|
|
15
|
+
cmd.push '--rebuild' if params['rebuild']
|
|
16
|
+
_, s = Open3.capture2(*cmd)
|
|
17
|
+
if s == 0
|
|
18
|
+
set_result({
|
|
19
|
+
status: 'ok'
|
|
20
|
+
})
|
|
21
|
+
else
|
|
22
|
+
host.show_message 'An error occurred while building gem documentation.', LanguageServer::MessageTypes::ERROR
|
|
23
|
+
set_result({
|
|
24
|
+
status: 'err'
|
|
25
|
+
})
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -1,19 +1,20 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'open3'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
module LanguageServer
|
|
7
|
-
module Message
|
|
8
|
-
module Extended
|
|
9
|
-
# Update core Ruby documentation.
|
|
10
|
-
#
|
|
11
|
-
class DownloadCore < Base
|
|
12
|
-
def process
|
|
13
|
-
host.show_message
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'open3'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
module LanguageServer
|
|
7
|
+
module Message
|
|
8
|
+
module Extended
|
|
9
|
+
# Update core Ruby documentation.
|
|
10
|
+
#
|
|
11
|
+
class DownloadCore < Base
|
|
12
|
+
def process
|
|
13
|
+
host.show_message 'Downloading cores is deprecated. Solargraph currently uses RBS for core and stdlib documentation',
|
|
14
|
+
LanguageServer::MessageTypes::INFO
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module Extended
|
|
7
|
-
class Search < Base
|
|
8
|
-
def process
|
|
9
|
-
results = host.search(params['query'])
|
|
10
|
-
page = Solargraph::Page.new(host.options['viewsPath'])
|
|
11
|
-
content = page.render('search', layout: true, locals: {query: params['query'], results: results})
|
|
12
|
-
set_result(
|
|
13
|
-
content: content
|
|
14
|
-
)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module Extended
|
|
7
|
+
class Search < Base
|
|
8
|
+
def process
|
|
9
|
+
results = host.search(params['query'])
|
|
10
|
+
page = Solargraph::Page.new(host.options['viewsPath'])
|
|
11
|
+
content = page.render('search', layout: true, locals: { query: params['query'], results: results })
|
|
12
|
+
set_result(
|
|
13
|
+
content: content
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|