solargraph 0.44.2 → 0.46.0
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/rspec.yml +41 -0
- data/.gitignore +9 -9
- data/.rspec +2 -2
- data/.travis.yml +19 -19
- data/CHANGELOG.md +1115 -1088
- data/Gemfile +0 -0
- data/LICENSE +0 -0
- data/README.md +128 -120
- data/Rakefile +0 -0
- data/SPONSORS.md +18 -15
- data/bin/solargraph +0 -0
- data/lib/solargraph/api_map/bundler_methods.rb +22 -22
- data/lib/solargraph/api_map/cache.rb +70 -70
- data/lib/solargraph/api_map/source_to_yard.rb +81 -81
- data/lib/solargraph/api_map/store.rb +256 -256
- data/lib/solargraph/api_map.rb +686 -681
- data/lib/solargraph/bench.rb +27 -27
- data/lib/solargraph/compat.rb +37 -37
- data/lib/solargraph/complex_type/type_methods.rb +130 -130
- data/lib/solargraph/complex_type/unique_type.rb +75 -75
- data/lib/solargraph/complex_type.rb +221 -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/rspec.rb +30 -21
- data/lib/solargraph/convention.rb +47 -47
- data/lib/solargraph/converters/dd.rb +12 -12
- data/lib/solargraph/converters/dl.rb +12 -12
- data/lib/solargraph/converters/dt.rb +12 -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 -37
- data/lib/solargraph/diagnostics/rubocop.rb +98 -98
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +63 -63
- data/lib/solargraph/diagnostics/severities.rb +15 -15
- data/lib/solargraph/diagnostics/type_check.rb +54 -54
- data/lib/solargraph/diagnostics/update_errors.rb +41 -41
- data/lib/solargraph/diagnostics.rb +55 -55
- data/lib/solargraph/documentor.rb +76 -76
- data/lib/solargraph/environ.rb +45 -45
- 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/cataloger.rb +56 -56
- data/lib/solargraph/language_server/host/diagnoser.rb +89 -89
- data/lib/solargraph/language_server/host/dispatch.rb +111 -111
- data/lib/solargraph/language_server/host/message_worker.rb +59 -59
- data/lib/solargraph/language_server/host/sources.rb +156 -156
- data/lib/solargraph/language_server/host.rb +865 -865
- data/lib/solargraph/language_server/message/base.rb +89 -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 +58 -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 +100 -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 +23 -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 +162 -162
- data/lib/solargraph/language_server/message/initialized.rb +27 -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 +59 -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 +23 -23
- data/lib/solargraph/language_server/message/text_document/folding_range.rb +26 -26
- data/lib/solargraph/language_server/message/text_document/formatting.rb +126 -126
- data/lib/solargraph/language_server/message/text_document/hover.rb +54 -44
- 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 +29 -29
- data/lib/solargraph/language_server/message/text_document.rb +28 -28
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +30 -30
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +33 -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 +93 -93
- data/lib/solargraph/language_server/message_types.rb +14 -14
- 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 +53 -53
- data/lib/solargraph/language_server/transport/data_reader.rb +72 -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 +19 -19
- data/lib/solargraph/library.rb +546 -546
- data/lib/solargraph/location.rb +37 -37
- data/lib/solargraph/logging.rb +27 -27
- data/lib/solargraph/page.rb +83 -83
- data/lib/solargraph/parser/comment_ripper.rb +52 -52
- data/lib/solargraph/parser/legacy/class_methods.rb +135 -140
- data/lib/solargraph/parser/legacy/flawed_builder.rb +16 -16
- data/lib/solargraph/parser/legacy/node_chainer.rb +148 -148
- data/lib/solargraph/parser/legacy/node_methods.rb +325 -325
- data/lib/solargraph/parser/legacy/node_processors/alias_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/args_node.rb +35 -35
- data/lib/solargraph/parser/legacy/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/legacy/node_processors/block_node.rb +42 -42
- data/lib/solargraph/parser/legacy/node_processors/casgn_node.rb +25 -25
- data/lib/solargraph/parser/legacy/node_processors/cvasgn_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/def_node.rb +63 -63
- data/lib/solargraph/parser/legacy/node_processors/defs_node.rb +36 -36
- data/lib/solargraph/parser/legacy/node_processors/gvasgn_node.rb +23 -23
- data/lib/solargraph/parser/legacy/node_processors/ivasgn_node.rb +38 -38
- data/lib/solargraph/parser/legacy/node_processors/lvasgn_node.rb +28 -28
- data/lib/solargraph/parser/legacy/node_processors/namespace_node.rb +39 -39
- data/lib/solargraph/parser/legacy/node_processors/orasgn_node.rb +16 -16
- data/lib/solargraph/parser/legacy/node_processors/resbody_node.rb +36 -36
- data/lib/solargraph/parser/legacy/node_processors/sclass_node.rb +21 -21
- data/lib/solargraph/parser/legacy/node_processors/send_node.rb +257 -257
- data/lib/solargraph/parser/legacy/node_processors/sym_node.rb +18 -18
- data/lib/solargraph/parser/legacy/node_processors.rb +54 -54
- data/lib/solargraph/parser/legacy.rb +12 -12
- data/lib/solargraph/parser/node_methods.rb +43 -43
- data/lib/solargraph/parser/node_processor/base.rb +77 -77
- data/lib/solargraph/parser/node_processor.rb +43 -43
- data/lib/solargraph/parser/region.rb +66 -66
- data/lib/solargraph/parser/rubyvm/class_methods.rb +144 -155
- data/lib/solargraph/parser/rubyvm/node_chainer.rb +160 -160
- data/lib/solargraph/parser/rubyvm/node_methods.rb +315 -315
- data/lib/solargraph/parser/rubyvm/node_processors/alias_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/args_node.rb +85 -85
- data/lib/solargraph/parser/rubyvm/node_processors/begin_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/block_node.rb +42 -42
- data/lib/solargraph/parser/rubyvm/node_processors/casgn_node.rb +22 -22
- data/lib/solargraph/parser/rubyvm/node_processors/cvasgn_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/def_node.rb +63 -64
- data/lib/solargraph/parser/rubyvm/node_processors/defs_node.rb +57 -57
- data/lib/solargraph/parser/rubyvm/node_processors/gvasgn_node.rb +23 -23
- data/lib/solargraph/parser/rubyvm/node_processors/ivasgn_node.rb +38 -38
- data/lib/solargraph/parser/rubyvm/node_processors/kw_arg_node.rb +39 -39
- data/lib/solargraph/parser/rubyvm/node_processors/lit_node.rb +20 -20
- data/lib/solargraph/parser/rubyvm/node_processors/lvasgn_node.rb +27 -27
- data/lib/solargraph/parser/rubyvm/node_processors/namespace_node.rb +39 -39
- data/lib/solargraph/parser/rubyvm/node_processors/opt_arg_node.rb +26 -26
- data/lib/solargraph/parser/rubyvm/node_processors/orasgn_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/resbody_node.rb +45 -45
- data/lib/solargraph/parser/rubyvm/node_processors/sclass_node.rb +21 -21
- data/lib/solargraph/parser/rubyvm/node_processors/scope_node.rb +15 -15
- data/lib/solargraph/parser/rubyvm/node_processors/send_node.rb +277 -277
- data/lib/solargraph/parser/rubyvm/node_processors/sym_node.rb +18 -18
- data/lib/solargraph/parser/rubyvm/node_processors.rb +63 -62
- data/lib/solargraph/parser/rubyvm.rb +40 -40
- data/lib/solargraph/parser/snippet.rb +13 -13
- data/lib/solargraph/parser.rb +26 -26
- data/lib/solargraph/pin/base.rb +296 -296
- data/lib/solargraph/pin/base_variable.rb +84 -84
- data/lib/solargraph/pin/block.rb +72 -72
- data/lib/solargraph/pin/class_variable.rb +8 -8
- data/lib/solargraph/pin/closure.rb +37 -37
- data/lib/solargraph/pin/common.rb +70 -70
- data/lib/solargraph/pin/constant.rb +43 -43
- data/lib/solargraph/pin/conversions.rb +96 -96
- data/lib/solargraph/pin/documenting.rb +105 -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 +30 -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 +55 -55
- data/lib/solargraph/pin/method.rb +245 -245
- data/lib/solargraph/pin/method_alias.rb +31 -31
- data/lib/solargraph/pin/namespace.rb +91 -91
- data/lib/solargraph/pin/parameter.rb +201 -206
- 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 +14 -14
- data/lib/solargraph/pin/search.rb +56 -0
- data/lib/solargraph/pin/singleton.rb +11 -11
- data/lib/solargraph/pin/symbol.rb +47 -47
- data/lib/solargraph/pin.rb +37 -36
- data/lib/solargraph/position.rb +100 -100
- data/lib/solargraph/range.rb +95 -95
- data/lib/solargraph/server_methods.rb +16 -16
- data/lib/solargraph/shell.rb +226 -226
- data/lib/solargraph/source/chain/block_variable.rb +13 -13
- data/lib/solargraph/source/chain/call.rb +204 -204
- data/lib/solargraph/source/chain/class_variable.rb +13 -13
- data/lib/solargraph/source/chain/constant.rb +75 -75
- data/lib/solargraph/source/chain/global_variable.rb +13 -13
- data/lib/solargraph/source/chain/hash.rb +28 -28
- data/lib/solargraph/source/chain/head.rb +19 -19
- data/lib/solargraph/source/chain/instance_variable.rb +13 -13
- data/lib/solargraph/source/chain/link.rb +71 -71
- data/lib/solargraph/source/chain/literal.rb +23 -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 +164 -164
- data/lib/solargraph/source/change.rb +79 -79
- data/lib/solargraph/source/cursor.rb +164 -164
- data/lib/solargraph/source/source_chainer.rb +191 -191
- data/lib/solargraph/source/updater.rb +54 -54
- data/lib/solargraph/source.rb +522 -522
- data/lib/solargraph/source_map/clip.rb +224 -224
- data/lib/solargraph/source_map/completion.rb +23 -23
- data/lib/solargraph/source_map/mapper.rb +212 -212
- data/lib/solargraph/source_map.rb +180 -189
- data/lib/solargraph/type_checker/checks.rb +99 -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 +57 -57
- data/lib/solargraph/type_checker.rb +543 -510
- data/lib/solargraph/version.rb +5 -5
- data/lib/solargraph/views/environment.erb +58 -58
- data/lib/solargraph/workspace/config.rb +231 -231
- data/lib/solargraph/workspace.rb +215 -214
- data/lib/solargraph/yard_map/cache.rb +19 -19
- data/lib/solargraph/yard_map/core_docs.rb +170 -170
- data/lib/solargraph/yard_map/core_fills.rb +208 -203
- data/lib/solargraph/yard_map/core_gen.rb +76 -76
- data/lib/solargraph/yard_map/helpers.rb +16 -16
- data/lib/solargraph/yard_map/mapper/to_constant.rb +25 -25
- data/lib/solargraph/yard_map/mapper/to_method.rb +78 -78
- data/lib/solargraph/yard_map/mapper/to_namespace.rb +27 -27
- data/lib/solargraph/yard_map/mapper.rb +77 -77
- data/lib/solargraph/yard_map/rdoc_to_yard.rb +140 -140
- data/lib/solargraph/yard_map/stdlib_fills.rb +43 -43
- data/lib/solargraph/yard_map/to_method.rb +79 -79
- data/lib/solargraph/yard_map.rb +460 -443
- data/lib/solargraph.rb +69 -69
- data/lib/yard-solargraph.rb +33 -33
- data/solargraph.gemspec +0 -0
- metadata +14 -12
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
class MethodNotImplemented < Base
|
|
7
|
-
def process
|
|
8
|
-
# This method ignores optional requests, e.g., any method that
|
|
9
|
-
# starts with `$/`.
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
class MethodNotImplemented < Base
|
|
7
|
+
def process
|
|
8
|
+
# This method ignores optional requests, e.g., any method that
|
|
9
|
+
# starts with `$/`.
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
class Shutdown < Base
|
|
7
|
-
def process
|
|
8
|
-
# Nothing to do?
|
|
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 Shutdown < Base
|
|
7
|
+
def process
|
|
8
|
+
# Nothing to do?
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module TextDocument
|
|
7
|
-
class Base < Solargraph::LanguageServer::Message::Base
|
|
8
|
-
include Solargraph::LanguageServer::UriHelpers
|
|
9
|
-
|
|
10
|
-
attr_reader :filename
|
|
11
|
-
|
|
12
|
-
def post_initialize
|
|
13
|
-
@filename = uri_to_file(params['textDocument']['uri'])
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module TextDocument
|
|
7
|
+
class Base < Solargraph::LanguageServer::Message::Base
|
|
8
|
+
include Solargraph::LanguageServer::UriHelpers
|
|
9
|
+
|
|
10
|
+
attr_reader :filename
|
|
11
|
+
|
|
12
|
+
def post_initialize
|
|
13
|
+
@filename = uri_to_file(params['textDocument']['uri'])
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'open3'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
module LanguageServer
|
|
7
|
-
module Message
|
|
8
|
-
module TextDocument
|
|
9
|
-
class CodeAction < Base
|
|
10
|
-
def process
|
|
11
|
-
# @todo Find code actions
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'open3'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
module LanguageServer
|
|
7
|
+
module Message
|
|
8
|
+
module TextDocument
|
|
9
|
+
class CodeAction < Base
|
|
10
|
+
def process
|
|
11
|
+
# @todo Find code actions
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module TextDocument
|
|
7
|
-
class Completion < Base
|
|
8
|
-
def process
|
|
9
|
-
return set_error(ErrorCodes::REQUEST_CANCELLED, "cancelled by so many request") if host.has_pending_completions?
|
|
10
|
-
|
|
11
|
-
line = params['position']['line']
|
|
12
|
-
col = params['position']['character']
|
|
13
|
-
begin
|
|
14
|
-
completion = host.completions_at(params['textDocument']['uri'], line, col)
|
|
15
|
-
if host.cancel?(id)
|
|
16
|
-
return set_result(empty_result) if host.cancel?(id)
|
|
17
|
-
end
|
|
18
|
-
items = []
|
|
19
|
-
last_context = nil
|
|
20
|
-
idx = -1
|
|
21
|
-
completion.pins.each do |pin|
|
|
22
|
-
idx += 1 if last_context != pin.context
|
|
23
|
-
items.push pin.completion_item.merge({
|
|
24
|
-
textEdit: {
|
|
25
|
-
range: completion.range.to_hash,
|
|
26
|
-
newText: pin.name.sub(/=$/, ' = ').sub(/:$/, ': ')
|
|
27
|
-
},
|
|
28
|
-
sortText: "#{idx.to_s.rjust(4, '0')}#{pin.name}"
|
|
29
|
-
})
|
|
30
|
-
items.last[:data][:uri] = params['textDocument']['uri']
|
|
31
|
-
last_context = pin.context
|
|
32
|
-
end
|
|
33
|
-
set_result(
|
|
34
|
-
isIncomplete: false,
|
|
35
|
-
items: items
|
|
36
|
-
)
|
|
37
|
-
rescue InvalidOffsetError => e
|
|
38
|
-
Logging.logger.info "Completion ignored invalid offset: #{params['textDocument']['uri']}, line #{line}, character #{col}"
|
|
39
|
-
set_result empty_result
|
|
40
|
-
end
|
|
41
|
-
rescue FileNotFoundError => e
|
|
42
|
-
Logging.logger.warn "[#{e.class}] #{e.message}"
|
|
43
|
-
Logging.logger.warn e.backtrace.join("\n")
|
|
44
|
-
set_result empty_result
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
# @param incomplete [Boolean]
|
|
48
|
-
# @return [Hash]
|
|
49
|
-
def empty_result incomplete = false
|
|
50
|
-
{
|
|
51
|
-
isIncomplete: incomplete,
|
|
52
|
-
items: []
|
|
53
|
-
}
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module TextDocument
|
|
7
|
+
class Completion < Base
|
|
8
|
+
def process
|
|
9
|
+
return set_error(ErrorCodes::REQUEST_CANCELLED, "cancelled by so many request") if host.has_pending_completions?
|
|
10
|
+
|
|
11
|
+
line = params['position']['line']
|
|
12
|
+
col = params['position']['character']
|
|
13
|
+
begin
|
|
14
|
+
completion = host.completions_at(params['textDocument']['uri'], line, col)
|
|
15
|
+
if host.cancel?(id)
|
|
16
|
+
return set_result(empty_result) if host.cancel?(id)
|
|
17
|
+
end
|
|
18
|
+
items = []
|
|
19
|
+
last_context = nil
|
|
20
|
+
idx = -1
|
|
21
|
+
completion.pins.each do |pin|
|
|
22
|
+
idx += 1 if last_context != pin.context
|
|
23
|
+
items.push pin.completion_item.merge({
|
|
24
|
+
textEdit: {
|
|
25
|
+
range: completion.range.to_hash,
|
|
26
|
+
newText: pin.name.sub(/=$/, ' = ').sub(/:$/, ': ')
|
|
27
|
+
},
|
|
28
|
+
sortText: "#{idx.to_s.rjust(4, '0')}#{pin.name}"
|
|
29
|
+
})
|
|
30
|
+
items.last[:data][:uri] = params['textDocument']['uri']
|
|
31
|
+
last_context = pin.context
|
|
32
|
+
end
|
|
33
|
+
set_result(
|
|
34
|
+
isIncomplete: false,
|
|
35
|
+
items: items
|
|
36
|
+
)
|
|
37
|
+
rescue InvalidOffsetError => e
|
|
38
|
+
Logging.logger.info "Completion ignored invalid offset: #{params['textDocument']['uri']}, line #{line}, character #{col}"
|
|
39
|
+
set_result empty_result
|
|
40
|
+
end
|
|
41
|
+
rescue FileNotFoundError => e
|
|
42
|
+
Logging.logger.warn "[#{e.class}] #{e.message}"
|
|
43
|
+
Logging.logger.warn e.backtrace.join("\n")
|
|
44
|
+
set_result empty_result
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# @param incomplete [Boolean]
|
|
48
|
+
# @return [Hash]
|
|
49
|
+
def empty_result incomplete = false
|
|
50
|
+
{
|
|
51
|
+
isIncomplete: incomplete,
|
|
52
|
+
items: []
|
|
53
|
+
}
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -1,38 +1,38 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph::LanguageServer::Message::TextDocument
|
|
4
|
-
class Definition < Base
|
|
5
|
-
def process
|
|
6
|
-
@line = params['position']['line']
|
|
7
|
-
@column = params['position']['character']
|
|
8
|
-
set_result(code_location || require_location || [])
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
private
|
|
12
|
-
|
|
13
|
-
def code_location
|
|
14
|
-
suggestions = host.definitions_at(params['textDocument']['uri'], @line, @column)
|
|
15
|
-
return nil if suggestions.empty?
|
|
16
|
-
suggestions.reject { |pin| pin.location.nil? || pin.location.filename.nil? }.map do |pin|
|
|
17
|
-
{
|
|
18
|
-
uri: file_to_uri(pin.location.filename),
|
|
19
|
-
range: pin.location.range.to_hash
|
|
20
|
-
}
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def require_location
|
|
25
|
-
# @todo Terrible hack
|
|
26
|
-
lib = host.library_for(params['textDocument']['uri'])
|
|
27
|
-
rloc = Solargraph::Location.new(uri_to_file(params['textDocument']['uri']), Solargraph::Range.from_to(@line, @column, @line, @column))
|
|
28
|
-
dloc = lib.locate_ref(rloc)
|
|
29
|
-
return nil if dloc.nil?
|
|
30
|
-
[
|
|
31
|
-
{
|
|
32
|
-
uri: file_to_uri(dloc.filename),
|
|
33
|
-
range: dloc.range.to_hash
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph::LanguageServer::Message::TextDocument
|
|
4
|
+
class Definition < Base
|
|
5
|
+
def process
|
|
6
|
+
@line = params['position']['line']
|
|
7
|
+
@column = params['position']['character']
|
|
8
|
+
set_result(code_location || require_location || [])
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
def code_location
|
|
14
|
+
suggestions = host.definitions_at(params['textDocument']['uri'], @line, @column)
|
|
15
|
+
return nil if suggestions.empty?
|
|
16
|
+
suggestions.reject { |pin| pin.location.nil? || pin.location.filename.nil? }.map do |pin|
|
|
17
|
+
{
|
|
18
|
+
uri: file_to_uri(pin.location.filename),
|
|
19
|
+
range: pin.location.range.to_hash
|
|
20
|
+
}
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def require_location
|
|
25
|
+
# @todo Terrible hack
|
|
26
|
+
lib = host.library_for(params['textDocument']['uri'])
|
|
27
|
+
rloc = Solargraph::Location.new(uri_to_file(params['textDocument']['uri']), Solargraph::Range.from_to(@line, @column, @line, @column))
|
|
28
|
+
dloc = lib.locate_ref(rloc)
|
|
29
|
+
return nil if dloc.nil?
|
|
30
|
+
[
|
|
31
|
+
{
|
|
32
|
+
uri: file_to_uri(dloc.filename),
|
|
33
|
+
range: dloc.range.to_hash
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module TextDocument
|
|
7
|
-
class DidChange < Base
|
|
8
|
-
def process
|
|
9
|
-
host.change params
|
|
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 TextDocument
|
|
7
|
+
class DidChange < Base
|
|
8
|
+
def process
|
|
9
|
+
host.change params
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module TextDocument
|
|
7
|
-
class DidClose < Base
|
|
8
|
-
def process
|
|
9
|
-
host.close params['textDocument']['uri']
|
|
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 TextDocument
|
|
7
|
+
class DidClose < Base
|
|
8
|
+
def process
|
|
9
|
+
host.close params['textDocument']['uri']
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module TextDocument
|
|
7
|
-
class DidOpen < Base
|
|
8
|
-
def process
|
|
9
|
-
host.open params['textDocument']['uri'], params['textDocument']['text'], params['textDocument']['version']
|
|
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 TextDocument
|
|
7
|
+
class DidOpen < Base
|
|
8
|
+
def process
|
|
9
|
+
host.open params['textDocument']['uri'], params['textDocument']['text'], params['textDocument']['version']
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module TextDocument
|
|
7
|
-
class DidSave < Base
|
|
8
|
-
def process
|
|
9
|
-
# @todo The server might not need to do anything in response to
|
|
10
|
-
# this notification. See https://github.com/castwide/solargraph/issues/73
|
|
11
|
-
# host.save params
|
|
12
|
-
end
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module TextDocument
|
|
7
|
+
class DidSave < Base
|
|
8
|
+
def process
|
|
9
|
+
# @todo The server might not need to do anything in response to
|
|
10
|
+
# this notification. See https://github.com/castwide/solargraph/issues/73
|
|
11
|
+
# host.save params
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Solargraph::LanguageServer::Message::TextDocument
|
|
4
|
-
class DocumentHighlight < Base
|
|
5
|
-
def process
|
|
6
|
-
locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'], strip: true, only: true)
|
|
7
|
-
result = locs.map do |loc|
|
|
8
|
-
{
|
|
9
|
-
range: loc.range.to_hash,
|
|
10
|
-
kind: 1
|
|
11
|
-
}
|
|
12
|
-
end
|
|
13
|
-
set_result result
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Solargraph::LanguageServer::Message::TextDocument
|
|
4
|
+
class DocumentHighlight < Base
|
|
5
|
+
def process
|
|
6
|
+
locs = host.references_from(params['textDocument']['uri'], params['position']['line'], params['position']['character'], strip: true, only: true)
|
|
7
|
+
result = locs.map do |loc|
|
|
8
|
+
{
|
|
9
|
+
range: loc.range.to_hash,
|
|
10
|
+
kind: 1
|
|
11
|
+
}
|
|
12
|
+
end
|
|
13
|
+
set_result result
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
class Solargraph::LanguageServer::Message::TextDocument::DocumentSymbol < Solargraph::LanguageServer::Message::Base
|
|
4
|
-
include Solargraph::LanguageServer::UriHelpers
|
|
5
|
-
|
|
6
|
-
def process
|
|
7
|
-
pins = host.document_symbols params['textDocument']['uri']
|
|
8
|
-
info = pins.map do |pin|
|
|
9
|
-
result = {
|
|
10
|
-
name: pin.name,
|
|
11
|
-
containerName: pin.namespace,
|
|
12
|
-
kind: pin.symbol_kind,
|
|
13
|
-
location: {
|
|
14
|
-
uri: file_to_uri(pin.location.filename),
|
|
15
|
-
range: pin.location.range.to_hash
|
|
16
|
-
},
|
|
17
|
-
deprecated: pin.deprecated?
|
|
18
|
-
}
|
|
19
|
-
result
|
|
20
|
-
end
|
|
21
|
-
set_result info
|
|
22
|
-
end
|
|
23
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Solargraph::LanguageServer::Message::TextDocument::DocumentSymbol < Solargraph::LanguageServer::Message::Base
|
|
4
|
+
include Solargraph::LanguageServer::UriHelpers
|
|
5
|
+
|
|
6
|
+
def process
|
|
7
|
+
pins = host.document_symbols params['textDocument']['uri']
|
|
8
|
+
info = pins.map do |pin|
|
|
9
|
+
result = {
|
|
10
|
+
name: pin.name,
|
|
11
|
+
containerName: pin.namespace,
|
|
12
|
+
kind: pin.symbol_kind,
|
|
13
|
+
location: {
|
|
14
|
+
uri: file_to_uri(pin.location.filename),
|
|
15
|
+
range: pin.location.range.to_hash
|
|
16
|
+
},
|
|
17
|
+
deprecated: pin.deprecated?
|
|
18
|
+
}
|
|
19
|
+
result
|
|
20
|
+
end
|
|
21
|
+
set_result info
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'open3'
|
|
4
|
-
|
|
5
|
-
module Solargraph
|
|
6
|
-
module LanguageServer
|
|
7
|
-
module Message
|
|
8
|
-
module TextDocument
|
|
9
|
-
class FoldingRange < Base
|
|
10
|
-
def process
|
|
11
|
-
result = host.folding_ranges(params['textDocument']['uri']).map do |range|
|
|
12
|
-
{
|
|
13
|
-
startLine: range.start.line,
|
|
14
|
-
startCharacter: 0,
|
|
15
|
-
endLine: range.ending.line - 1,
|
|
16
|
-
endCharacter: 0,
|
|
17
|
-
kind: 'region'
|
|
18
|
-
}
|
|
19
|
-
end
|
|
20
|
-
set_result result
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'open3'
|
|
4
|
+
|
|
5
|
+
module Solargraph
|
|
6
|
+
module LanguageServer
|
|
7
|
+
module Message
|
|
8
|
+
module TextDocument
|
|
9
|
+
class FoldingRange < Base
|
|
10
|
+
def process
|
|
11
|
+
result = host.folding_ranges(params['textDocument']['uri']).map do |range|
|
|
12
|
+
{
|
|
13
|
+
startLine: range.start.line,
|
|
14
|
+
startCharacter: 0,
|
|
15
|
+
endLine: range.ending.line - 1,
|
|
16
|
+
endCharacter: 0,
|
|
17
|
+
kind: 'region'
|
|
18
|
+
}
|
|
19
|
+
end
|
|
20
|
+
set_result result
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|