solargraph 0.46.0 → 0.54.5
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/FUNDING.yml +1 -0
- data/.github/workflows/plugins.yml +40 -0
- data/.github/workflows/rspec.yml +37 -41
- data/.github/workflows/typecheck.yml +34 -0
- data/.gitignore +9 -9
- data/.rspec +2 -2
- data/.yardopts +2 -2
- data/CHANGELOG.md +1338 -1115
- data/Gemfile +0 -0
- data/LICENSE +1 -1
- data/README.md +131 -128
- data/Rakefile +0 -0
- data/SPONSORS.md +10 -18
- data/bin/solargraph +0 -0
- data/lib/solargraph/api_map/cache.rb +109 -70
- data/lib/solargraph/api_map/index.rb +167 -0
- data/lib/solargraph/api_map/source_to_yard.rb +88 -81
- data/lib/solargraph/api_map/store.rb +260 -256
- data/lib/solargraph/api_map.rb +870 -686
- data/lib/solargraph/bench.rb +44 -27
- data/lib/solargraph/cache.rb +77 -0
- data/lib/solargraph/complex_type/type_methods.rb +217 -130
- data/lib/solargraph/complex_type/unique_type.rb +386 -75
- data/lib/solargraph/complex_type.rb +394 -221
- data/lib/solargraph/convention/base.rb +33 -33
- data/lib/solargraph/convention/gemfile.rb +15 -15
- data/lib/solargraph/convention/gemspec.rb +22 -22
- data/lib/solargraph/convention/rakefile.rb +17 -0
- data/lib/solargraph/convention.rb +47 -47
- data/lib/solargraph/converters/dd.rb +17 -12
- data/lib/solargraph/converters/dl.rb +15 -12
- data/lib/solargraph/converters/dt.rb +15 -12
- data/lib/solargraph/converters/misc.rb +1 -1
- data/lib/solargraph/diagnostics/base.rb +29 -29
- data/lib/solargraph/diagnostics/require_not_found.rb +53 -53
- data/lib/solargraph/diagnostics/rubocop.rb +113 -98
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +66 -63
- data/lib/solargraph/diagnostics/severities.rb +15 -15
- data/lib/solargraph/diagnostics/type_check.rb +55 -54
- data/lib/solargraph/diagnostics/update_errors.rb +41 -41
- data/lib/solargraph/diagnostics.rb +55 -55
- data/lib/solargraph/doc_map.rb +188 -0
- data/lib/solargraph/environ.rb +45 -45
- data/lib/solargraph/equality.rb +33 -0
- data/lib/solargraph/gem_pins.rb +72 -0
- data/lib/solargraph/language_server/completion_item_kinds.rb +35 -35
- 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 +128 -111
- data/lib/solargraph/language_server/host/message_worker.rb +106 -59
- data/lib/solargraph/language_server/host/sources.rb +99 -156
- data/lib/solargraph/language_server/host.rb +861 -865
- data/lib/solargraph/language_server/message/base.rb +96 -89
- data/lib/solargraph/language_server/message/cancel_request.rb +13 -13
- data/lib/solargraph/language_server/message/client/register_capability.rb +15 -15
- data/lib/solargraph/language_server/message/client.rb +11 -11
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +60 -58
- data/lib/solargraph/language_server/message/completion_item.rb +11 -11
- data/lib/solargraph/language_server/message/exit_notification.rb +13 -13
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +112 -100
- data/lib/solargraph/language_server/message/extended/document.rb +20 -20
- data/lib/solargraph/language_server/message/extended/document_gems.rb +32 -32
- data/lib/solargraph/language_server/message/extended/download_core.rb +19 -23
- data/lib/solargraph/language_server/message/extended/environment.rb +25 -25
- data/lib/solargraph/language_server/message/extended/search.rb +20 -20
- data/lib/solargraph/language_server/message/extended.rb +21 -21
- data/lib/solargraph/language_server/message/initialize.rb +191 -162
- data/lib/solargraph/language_server/message/initialized.rb +28 -27
- data/lib/solargraph/language_server/message/method_not_found.rb +16 -16
- data/lib/solargraph/language_server/message/method_not_implemented.rb +14 -14
- data/lib/solargraph/language_server/message/shutdown.rb +13 -13
- data/lib/solargraph/language_server/message/text_document/base.rb +19 -19
- data/lib/solargraph/language_server/message/text_document/code_action.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/completion.rb +56 -59
- data/lib/solargraph/language_server/message/text_document/definition.rb +38 -38
- data/lib/solargraph/language_server/message/text_document/did_change.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_close.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_open.rb +15 -15
- data/lib/solargraph/language_server/message/text_document/did_save.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/document_highlight.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +26 -23
- data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +131 -126
- data/lib/solargraph/language_server/message/text_document/hover.rb +58 -54
- data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +34 -34
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +11 -11
- data/lib/solargraph/language_server/message/text_document/references.rb +16 -16
- data/lib/solargraph/language_server/message/text_document/rename.rb +19 -19
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +24 -29
- data/lib/solargraph/language_server/message/text_document/type_definition.rb +24 -0
- data/lib/solargraph/language_server/message/text_document.rb +28 -28
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +35 -30
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +40 -33
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +23 -23
- data/lib/solargraph/language_server/message/workspace.rb +14 -14
- data/lib/solargraph/language_server/message.rb +94 -93
- data/lib/solargraph/language_server/message_types.rb +14 -14
- data/lib/solargraph/language_server/progress.rb +135 -0
- data/lib/solargraph/language_server/request.rb +24 -24
- data/lib/solargraph/language_server/symbol_kinds.rb +36 -36
- data/lib/solargraph/language_server/transport/adapter.rb +68 -53
- data/lib/solargraph/language_server/transport/data_reader.rb +74 -72
- data/lib/solargraph/language_server/transport.rb +13 -13
- data/lib/solargraph/language_server/uri_helpers.rb +49 -49
- data/lib/solargraph/language_server.rb +20 -19
- data/lib/solargraph/library.rb +663 -546
- data/lib/solargraph/location.rb +58 -37
- data/lib/solargraph/logging.rb +27 -27
- data/lib/solargraph/page.rb +89 -83
- data/lib/solargraph/parser/comment_ripper.rb +56 -52
- data/lib/solargraph/parser/node_methods.rb +83 -43
- data/lib/solargraph/parser/node_processor/base.rb +87 -77
- data/lib/solargraph/parser/node_processor.rb +45 -43
- data/lib/solargraph/parser/{legacy → parser_gem}/class_methods.rb +153 -135
- data/lib/solargraph/parser/{legacy → parser_gem}/flawed_builder.rb +18 -16
- data/lib/solargraph/parser/{legacy → parser_gem}/node_chainer.rb +164 -148
- data/lib/solargraph/parser/parser_gem/node_methods.rb +495 -0
- data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/alias_node.rb +23 -23
- data/lib/solargraph/parser/parser_gem/node_processors/args_node.rb +57 -0
- data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/block_node.rb +43 -42
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/casgn_node.rb +35 -25
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/cvasgn_node.rb +23 -23
- data/lib/solargraph/parser/{rubyvm → parser_gem}/node_processors/def_node.rb +50 -63
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/defs_node.rb +36 -36
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/gvasgn_node.rb +23 -23
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/ivasgn_node.rb +38 -38
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/lvasgn_node.rb +28 -28
- data/lib/solargraph/parser/parser_gem/node_processors/masgn_node.rb +53 -0
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/namespace_node.rb +39 -39
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/orasgn_node.rb +16 -16
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/resbody_node.rb +36 -36
- data/lib/solargraph/parser/parser_gem/node_processors/sclass_node.rb +42 -0
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/send_node.rb +259 -257
- data/lib/solargraph/parser/{legacy → parser_gem}/node_processors/sym_node.rb +18 -18
- data/lib/solargraph/parser/parser_gem/node_processors.rb +56 -0
- data/lib/solargraph/parser/parser_gem.rb +12 -0
- data/lib/solargraph/parser/region.rb +66 -66
- data/lib/solargraph/parser/snippet.rb +15 -13
- data/lib/solargraph/parser.rb +22 -26
- data/lib/solargraph/pin/base.rb +378 -296
- data/lib/solargraph/pin/base_variable.rb +118 -84
- data/lib/solargraph/pin/block.rb +101 -72
- data/lib/solargraph/pin/callable.rb +147 -0
- data/lib/solargraph/pin/class_variable.rb +8 -8
- data/lib/solargraph/pin/closure.rb +57 -37
- data/lib/solargraph/pin/common.rb +70 -70
- data/lib/solargraph/pin/constant.rb +43 -43
- data/lib/solargraph/pin/conversions.rb +123 -96
- data/lib/solargraph/pin/delegated_method.rb +101 -0
- data/lib/solargraph/pin/documenting.rb +98 -105
- data/lib/solargraph/pin/duck_method.rb +16 -16
- data/lib/solargraph/pin/global_variable.rb +8 -8
- data/lib/solargraph/pin/instance_variable.rb +34 -30
- data/lib/solargraph/pin/keyword.rb +15 -15
- data/lib/solargraph/pin/keyword_param.rb +8 -8
- data/lib/solargraph/pin/local_variable.rb +67 -55
- data/lib/solargraph/pin/method.rb +527 -245
- data/lib/solargraph/pin/method_alias.rb +31 -31
- data/lib/solargraph/pin/namespace.rb +107 -91
- data/lib/solargraph/pin/parameter.rb +212 -201
- data/lib/solargraph/pin/proxy_type.rb +29 -29
- data/lib/solargraph/pin/reference/extend.rb +10 -10
- data/lib/solargraph/pin/reference/include.rb +10 -10
- data/lib/solargraph/pin/reference/override.rb +29 -29
- data/lib/solargraph/pin/reference/prepend.rb +10 -10
- data/lib/solargraph/pin/reference/require.rb +14 -14
- data/lib/solargraph/pin/reference/superclass.rb +10 -10
- data/lib/solargraph/pin/reference.rb +22 -14
- data/lib/solargraph/pin/search.rb +56 -56
- data/lib/solargraph/pin/signature.rb +17 -0
- data/lib/solargraph/pin/singleton.rb +11 -11
- data/lib/solargraph/pin/symbol.rb +47 -47
- data/lib/solargraph/pin.rb +41 -37
- data/lib/solargraph/position.rb +107 -100
- data/lib/solargraph/range.rb +98 -95
- data/lib/solargraph/rbs_map/conversions.rb +646 -0
- data/lib/solargraph/rbs_map/core_fills.rb +50 -0
- data/lib/solargraph/rbs_map/core_map.rb +28 -0
- data/lib/solargraph/rbs_map/stdlib_map.rb +33 -0
- data/lib/solargraph/rbs_map.rb +93 -0
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +269 -226
- data/lib/solargraph/source/chain/array.rb +33 -0
- data/lib/solargraph/source/chain/block_symbol.rb +13 -0
- data/lib/solargraph/source/chain/block_variable.rb +13 -13
- data/lib/solargraph/source/chain/call.rb +303 -204
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +89 -75
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +33 -28
- data/lib/solargraph/source/chain/head.rb +19 -19
- data/lib/solargraph/source/chain/if.rb +28 -0
- data/lib/solargraph/source/chain/instance_variable.rb +13 -13
- data/lib/solargraph/source/chain/link.rb +98 -71
- data/lib/solargraph/source/chain/literal.rb +28 -23
- data/lib/solargraph/source/chain/or.rb +23 -23
- data/lib/solargraph/source/chain/q_call.rb +11 -11
- data/lib/solargraph/source/chain/variable.rb +13 -13
- data/lib/solargraph/source/chain/z_super.rb +30 -30
- data/lib/solargraph/source/chain.rb +252 -164
- data/lib/solargraph/source/change.rb +82 -79
- data/lib/solargraph/source/cursor.rb +167 -164
- data/lib/solargraph/source/source_chainer.rb +194 -191
- data/lib/solargraph/source/updater.rb +55 -54
- data/lib/solargraph/source.rb +495 -522
- data/lib/solargraph/source_map/clip.rb +232 -224
- data/lib/solargraph/source_map/completion.rb +23 -23
- data/lib/solargraph/source_map/data.rb +30 -0
- data/lib/solargraph/source_map/mapper.rb +255 -212
- data/lib/solargraph/source_map.rb +217 -180
- data/lib/solargraph/type_checker/checks.rb +120 -99
- data/lib/solargraph/type_checker/param_def.rb +35 -35
- data/lib/solargraph/type_checker/problem.rb +32 -32
- data/lib/solargraph/type_checker/rules.rb +62 -57
- data/lib/solargraph/type_checker.rb +672 -543
- data/lib/solargraph/version.rb +5 -5
- data/lib/solargraph/views/environment.erb +56 -58
- data/lib/solargraph/workspace/config.rb +239 -231
- data/lib/solargraph/workspace.rb +239 -215
- data/lib/solargraph/yard_map/cache.rb +25 -19
- data/lib/solargraph/yard_map/helpers.rb +16 -16
- data/lib/solargraph/yard_map/mapper/to_constant.rb +26 -25
- data/lib/solargraph/yard_map/mapper/to_method.rb +94 -78
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +28 -27
- data/lib/solargraph/yard_map/mapper.rb +78 -77
- data/lib/solargraph/yard_map/to_method.rb +86 -79
- data/lib/solargraph/yard_map.rb +18 -460
- data/lib/solargraph/yard_tags.rb +20 -0
- data/lib/solargraph/yardoc.rb +52 -0
- data/lib/solargraph.rb +72 -69
- data/solargraph.gemspec +21 -10
- metadata +184 -115
- data/.travis.yml +0 -19
- data/lib/solargraph/api_map/bundler_methods.rb +0 -22
- data/lib/solargraph/compat.rb +0 -37
- data/lib/solargraph/convention/rspec.rb +0 -30
- data/lib/solargraph/documentor.rb +0 -76
- data/lib/solargraph/language_server/host/cataloger.rb +0 -56
- data/lib/solargraph/parser/legacy/node_methods.rb +0 -325
- data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +0 -23
- data/lib/solargraph/parser/legacy/node_processors/args_node.rb +0 -35
- data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +0 -15
- data/lib/solargraph/parser/legacy/node_processors/def_node.rb +0 -63
- data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +0 -21
- data/lib/solargraph/parser/legacy/node_processors.rb +0 -54
- data/lib/solargraph/parser/legacy.rb +0 -12
- data/lib/solargraph/parser/rubyvm/class_methods.rb +0 -144
- data/lib/solargraph/parser/rubyvm/node_chainer.rb +0 -160
- data/lib/solargraph/parser/rubyvm/node_methods.rb +0 -315
- data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +0 -85
- data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +0 -42
- data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +0 -22
- data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +0 -23
- data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +0 -57
- data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +0 -23
- data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +0 -38
- data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +0 -39
- data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +0 -20
- data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +0 -27
- data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +0 -39
- data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +0 -26
- data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +0 -15
- data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +0 -45
- data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +0 -21
- data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +0 -15
- data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +0 -277
- data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +0 -18
- data/lib/solargraph/parser/rubyvm/node_processors.rb +0 -63
- data/lib/solargraph/parser/rubyvm.rb +0 -40
- data/lib/solargraph/yard_map/core_docs.rb +0 -170
- data/lib/solargraph/yard_map/core_fills.rb +0 -208
- data/lib/solargraph/yard_map/core_gen.rb +0 -76
- data/lib/solargraph/yard_map/rdoc_to_yard.rb +0 -140
- data/lib/solargraph/yard_map/stdlib_fills.rb +0 -43
- data/lib/yard-solargraph.rb +0 -33
- data/yardoc/2.2.2.tar.gz +0 -0
@@ -1,89 +1,96 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module LanguageServer
|
5
|
-
module Message
|
6
|
-
class Base
|
7
|
-
# @return [Solargraph::LanguageServer::Host]
|
8
|
-
attr_reader :host
|
9
|
-
|
10
|
-
# @return [Integer]
|
11
|
-
attr_reader :id
|
12
|
-
|
13
|
-
# @return [Hash]
|
14
|
-
attr_reader :request
|
15
|
-
|
16
|
-
# @return [String]
|
17
|
-
attr_reader :method
|
18
|
-
|
19
|
-
# @return [Hash]
|
20
|
-
attr_reader :params
|
21
|
-
|
22
|
-
# @return [Hash, Array, nil]
|
23
|
-
attr_reader :result
|
24
|
-
|
25
|
-
# @return [Hash, nil]
|
26
|
-
attr_reader :error
|
27
|
-
|
28
|
-
# @param host [Solargraph::LanguageServer::Host]
|
29
|
-
# @param request [Hash]
|
30
|
-
def initialize host, request
|
31
|
-
@host = host
|
32
|
-
@id = request['id'].freeze
|
33
|
-
@request = request.freeze
|
34
|
-
@method = request['method'].freeze
|
35
|
-
@params = (request['params'] || {}).freeze
|
36
|
-
post_initialize
|
37
|
-
end
|
38
|
-
|
39
|
-
# @return [void]
|
40
|
-
def post_initialize; end
|
41
|
-
|
42
|
-
# @return [void]
|
43
|
-
def process; end
|
44
|
-
|
45
|
-
# @param data [Hash, Array, nil]
|
46
|
-
# @return [void]
|
47
|
-
def set_result data
|
48
|
-
@result = data
|
49
|
-
end
|
50
|
-
|
51
|
-
# @param code [Integer] See Solargraph::LanguageServer::ErrorCodes
|
52
|
-
# @param message [String]
|
53
|
-
# @return [void]
|
54
|
-
def set_error code, message
|
55
|
-
@error = {
|
56
|
-
code: code,
|
57
|
-
message: message
|
58
|
-
}
|
59
|
-
end
|
60
|
-
|
61
|
-
# @return [void]
|
62
|
-
def send_response
|
63
|
-
return if id.nil?
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
host.
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Solargraph
|
4
|
+
module LanguageServer
|
5
|
+
module Message
|
6
|
+
class Base
|
7
|
+
# @return [Solargraph::LanguageServer::Host]
|
8
|
+
attr_reader :host
|
9
|
+
|
10
|
+
# @return [Integer]
|
11
|
+
attr_reader :id
|
12
|
+
|
13
|
+
# @return [Hash]
|
14
|
+
attr_reader :request
|
15
|
+
|
16
|
+
# @return [String]
|
17
|
+
attr_reader :method
|
18
|
+
|
19
|
+
# @return [Hash{String => Array<undefined>, Hash{String => undefined}, String, Integer}]
|
20
|
+
attr_reader :params
|
21
|
+
|
22
|
+
# @return [Hash, Array, nil]
|
23
|
+
attr_reader :result
|
24
|
+
|
25
|
+
# @return [Hash, nil]
|
26
|
+
attr_reader :error
|
27
|
+
|
28
|
+
# @param host [Solargraph::LanguageServer::Host]
|
29
|
+
# @param request [Hash]
|
30
|
+
def initialize host, request
|
31
|
+
@host = host
|
32
|
+
@id = request['id'].freeze
|
33
|
+
@request = request.freeze
|
34
|
+
@method = request['method'].freeze
|
35
|
+
@params = (request['params'] || {}).freeze
|
36
|
+
post_initialize
|
37
|
+
end
|
38
|
+
|
39
|
+
# @return [void]
|
40
|
+
def post_initialize; end
|
41
|
+
|
42
|
+
# @return [void]
|
43
|
+
def process; end
|
44
|
+
|
45
|
+
# @param data [Hash, Array, nil]
|
46
|
+
# @return [void]
|
47
|
+
def set_result data
|
48
|
+
@result = data
|
49
|
+
end
|
50
|
+
|
51
|
+
# @param code [Integer] See Solargraph::LanguageServer::ErrorCodes
|
52
|
+
# @param message [String]
|
53
|
+
# @return [void]
|
54
|
+
def set_error code, message
|
55
|
+
@error = {
|
56
|
+
code: code,
|
57
|
+
message: message
|
58
|
+
}
|
59
|
+
end
|
60
|
+
|
61
|
+
# @return [void]
|
62
|
+
def send_response
|
63
|
+
return if id.nil?
|
64
|
+
|
65
|
+
accept_or_cancel
|
66
|
+
response = {
|
67
|
+
jsonrpc: '2.0',
|
68
|
+
id: id
|
69
|
+
}
|
70
|
+
response[:result] = result unless result.nil?
|
71
|
+
response[:error] = error unless error.nil?
|
72
|
+
response[:result] = nil if result.nil? and error.nil?
|
73
|
+
json = response.to_json
|
74
|
+
envelope = "Content-Length: #{json.bytesize}\r\n\r\n#{json}"
|
75
|
+
Solargraph.logger.debug envelope
|
76
|
+
host.queue envelope
|
77
|
+
host.clear id
|
78
|
+
end
|
79
|
+
|
80
|
+
private
|
81
|
+
|
82
|
+
def accept_or_cancel
|
83
|
+
if host.cancel?(id)
|
84
|
+
# https://microsoft.github.io/language-server-protocol/specifications/specification-current/#cancelRequest
|
85
|
+
# cancel should send response RequestCancelled
|
86
|
+
Solargraph::Logging.logger.info "Cancelled response to ##{id} #{method}"
|
87
|
+
set_result nil
|
88
|
+
set_error ErrorCodes::REQUEST_CANCELLED, 'Cancelled by client'
|
89
|
+
else
|
90
|
+
Solargraph::Logging.logger.info "Sending response to ##{id} #{method}"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module LanguageServer
|
5
|
-
module Message
|
6
|
-
class CancelRequest < Base
|
7
|
-
def process
|
8
|
-
host.cancel params['id']
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Solargraph
|
4
|
+
module LanguageServer
|
5
|
+
module Message
|
6
|
+
class CancelRequest < Base
|
7
|
+
def process
|
8
|
+
host.cancel params['id']
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,15 +1,15 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module LanguageServer
|
5
|
-
module Message
|
6
|
-
module Client
|
7
|
-
class RegisterCapability < Solargraph::LanguageServer::Message::Base
|
8
|
-
def process
|
9
|
-
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Solargraph
|
4
|
+
module LanguageServer
|
5
|
+
module Message
|
6
|
+
module Client
|
7
|
+
class RegisterCapability < Solargraph::LanguageServer::Message::Base
|
8
|
+
def process
|
9
|
+
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module LanguageServer
|
5
|
-
module Message
|
6
|
-
module Client
|
7
|
-
autoload :RegisterCapability, 'solargraph/language_server/message/client/register_capability'
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Solargraph
|
4
|
+
module LanguageServer
|
5
|
+
module Message
|
6
|
+
module Client
|
7
|
+
autoload :RegisterCapability, 'solargraph/language_server/message/client/register_capability'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -1,58 +1,60 @@
|
|
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}]
|
33
|
-
def markup_content text
|
34
|
-
return nil if text.strip.empty?
|
35
|
-
{
|
36
|
-
kind: 'markdown',
|
37
|
-
value: text
|
38
|
-
}
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
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_with_index do |pin|
|
47
|
+
this_link = host.options['enablePages'] ? pin.link_documentation : pin.text_documentation
|
48
|
+
if this_link && this_link != last_link && this_link != 'undefined'
|
49
|
+
result.push this_link
|
50
|
+
end
|
51
|
+
result.push pin.documentation unless result.last && result.last.end_with?(pin.documentation)
|
52
|
+
last_link = this_link
|
53
|
+
end
|
54
|
+
result.join("\n\n")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -1,11 +1,11 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module LanguageServer
|
5
|
-
module Message
|
6
|
-
module CompletionItem
|
7
|
-
autoload :Resolve, 'solargraph/language_server/message/completion_item/resolve'
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Solargraph
|
4
|
+
module LanguageServer
|
5
|
+
module Message
|
6
|
+
module CompletionItem
|
7
|
+
autoload :Resolve, 'solargraph/language_server/message/completion_item/resolve'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -1,13 +1,13 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Solargraph
|
4
|
-
module LanguageServer
|
5
|
-
module Message
|
6
|
-
class ExitNotification < Base
|
7
|
-
def process
|
8
|
-
host.stop
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Solargraph
|
4
|
+
module LanguageServer
|
5
|
+
module Message
|
6
|
+
class ExitNotification < Base
|
7
|
+
def process
|
8
|
+
host.stop
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,100 +1,112 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
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
|
-
end
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
end
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
|
4
|
+
# @todo PR the RBS gem to add this
|
5
|
+
# @!parse
|
6
|
+
# module ::Gem
|
7
|
+
# class SpecFetcher; end
|
8
|
+
# end
|
9
|
+
|
10
|
+
module Solargraph
|
11
|
+
module LanguageServer
|
12
|
+
module Message
|
13
|
+
module Extended
|
14
|
+
# Check if a more recent version of the Solargraph gem is available.
|
15
|
+
# Notify the client when an update exists. If the `verbose` parameter
|
16
|
+
# is true, notify the client when the gem is up to date.
|
17
|
+
#
|
18
|
+
class CheckGemVersion < Base
|
19
|
+
# @return [Gem::SpecFetcher]
|
20
|
+
def self.fetcher
|
21
|
+
@fetcher ||= Gem::SpecFetcher.new
|
22
|
+
end
|
23
|
+
|
24
|
+
# @param obj [Gem::SpecFetcher]
|
25
|
+
# @return [Gem::SpecFetcher]
|
26
|
+
def self.fetcher= obj
|
27
|
+
@fetcher = obj
|
28
|
+
end
|
29
|
+
|
30
|
+
GEM_ZERO = Gem::Version.new('0.0.0')
|
31
|
+
|
32
|
+
# @param host [Solargraph::LanguageServer::Host]
|
33
|
+
# @param request [Hash]
|
34
|
+
# @param current [Gem::Version]
|
35
|
+
# @param available [Gem::Version, nil]
|
36
|
+
def initialize host, request, current: Gem::Version.new(Solargraph::VERSION), available: nil
|
37
|
+
super(host, request)
|
38
|
+
@current = current
|
39
|
+
@available = available
|
40
|
+
end
|
41
|
+
|
42
|
+
def process
|
43
|
+
if available > GEM_ZERO
|
44
|
+
if available > current
|
45
|
+
host.show_message_request "Solargraph gem version #{available} is available. (Current version: #{current})",
|
46
|
+
LanguageServer::MessageTypes::INFO,
|
47
|
+
['Update now'] do |result|
|
48
|
+
next unless result == 'Update now'
|
49
|
+
cmd = if host.options['useBundler']
|
50
|
+
'bundle update solargraph'
|
51
|
+
else
|
52
|
+
'gem update solargraph'
|
53
|
+
end
|
54
|
+
o, s = Open3.capture2(cmd)
|
55
|
+
if s == 0
|
56
|
+
host.show_message 'Successfully updated the Solargraph gem.', LanguageServer::MessageTypes::INFO
|
57
|
+
host.send_notification '$/solargraph/restart', {}
|
58
|
+
else
|
59
|
+
host.show_message 'An error occurred while updating the gem.', LanguageServer::MessageTypes::ERROR
|
60
|
+
end
|
61
|
+
end
|
62
|
+
elsif params['verbose']
|
63
|
+
host.show_message "The Solargraph gem is up to date (version #{Solargraph::VERSION})."
|
64
|
+
end
|
65
|
+
elsif fetched?
|
66
|
+
Solargraph::Logging.logger.warn error
|
67
|
+
host.show_message(error, MessageTypes::ERROR) if params['verbose']
|
68
|
+
end
|
69
|
+
set_result({
|
70
|
+
installed: current,
|
71
|
+
available: available
|
72
|
+
})
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
# @return [Gem::Version]
|
78
|
+
attr_reader :current
|
79
|
+
|
80
|
+
# @return [Gem::Version]
|
81
|
+
def available
|
82
|
+
if !@available && !@fetched
|
83
|
+
@fetched = true
|
84
|
+
begin
|
85
|
+
@available ||= begin
|
86
|
+
tuple = CheckGemVersion.fetcher.search_for_dependency(Gem::Dependency.new('solargraph')).flatten.first
|
87
|
+
if tuple.nil?
|
88
|
+
@error = 'An error occurred fetching the gem data'
|
89
|
+
GEM_ZERO
|
90
|
+
else
|
91
|
+
tuple.version
|
92
|
+
end
|
93
|
+
end
|
94
|
+
rescue Errno::EADDRNOTAVAIL => e
|
95
|
+
@error = "Unable to connect to gem source: #{e.message}"
|
96
|
+
GEM_ZERO
|
97
|
+
end
|
98
|
+
end
|
99
|
+
@available
|
100
|
+
end
|
101
|
+
|
102
|
+
def fetched?
|
103
|
+
@fetched ||= false
|
104
|
+
end
|
105
|
+
|
106
|
+
# @return [String, nil]
|
107
|
+
attr_reader :error
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|