solargraph 0.32.1 → 0.32.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/.gitignore +9 -0
- data/.rspec +2 -0
- data/.rubocop.yml +6 -0
- data/.travis.yml +25 -0
- data/EXAMPLES.md +76 -0
- data/Gemfile +3 -0
- data/LANGUAGE_SERVER.md +51 -0
- data/LICENSE +21 -0
- data/OVERVIEW.md +37 -0
- data/README.md +106 -0
- data/Rakefile +14 -0
- data/SERVER.md +95 -0
- data/bin/solargraph +0 -0
- data/bin/solargraph-runtime +5 -5
- data/lib/solargraph.rb +54 -54
- data/lib/solargraph/api_map.rb +659 -659
- data/lib/solargraph/api_map/cache.rb +49 -49
- data/lib/solargraph/api_map/source_to_yard.rb +67 -67
- data/lib/solargraph/api_map/store.rb +201 -201
- data/lib/solargraph/bundle.rb +24 -24
- data/lib/solargraph/complex_type.rb +150 -150
- data/lib/solargraph/complex_type/type_methods.rb +124 -124
- data/lib/solargraph/complex_type/unique_type.rb +44 -44
- data/lib/solargraph/core_fills.rb +37 -37
- data/lib/solargraph/diagnostics.rb +52 -52
- data/lib/solargraph/diagnostics/base.rb +20 -20
- data/lib/solargraph/diagnostics/require_not_found.rb +28 -28
- data/lib/solargraph/diagnostics/rubocop.rb +98 -98
- data/lib/solargraph/diagnostics/rubocop_helpers.rb +46 -46
- data/lib/solargraph/diagnostics/type_not_defined.rb +108 -108
- data/lib/solargraph/diagnostics/update_errors.rb +38 -38
- data/lib/solargraph/language_server/completion_item_kinds.rb +33 -33
- data/lib/solargraph/language_server/error_codes.rb +18 -18
- data/lib/solargraph/language_server/host.rb +684 -681
- data/lib/solargraph/language_server/host/cataloger.rb +54 -79
- data/lib/solargraph/language_server/host/diagnoser.rb +80 -80
- data/lib/solargraph/language_server/host/dispatch.rb +112 -113
- data/lib/solargraph/language_server/host/sources.rb +138 -138
- data/lib/solargraph/language_server/message.rb +90 -90
- data/lib/solargraph/language_server/message/base.rb +83 -83
- data/lib/solargraph/language_server/message/completion_item/resolve.rb +40 -40
- data/lib/solargraph/language_server/message/exit_notification.rb +11 -11
- data/lib/solargraph/language_server/message/extended.rb +19 -19
- data/lib/solargraph/language_server/message/extended/check_gem_version.rb +86 -86
- data/lib/solargraph/language_server/message/extended/document.rb +18 -18
- data/lib/solargraph/language_server/message/extended/document_gems.rb +30 -30
- data/lib/solargraph/language_server/message/extended/environment.rb +20 -20
- data/lib/solargraph/language_server/message/extended/search.rb +18 -18
- data/lib/solargraph/language_server/message/initialize.rb +141 -141
- data/lib/solargraph/language_server/message/initialized.rb +23 -23
- data/lib/solargraph/language_server/message/shutdown.rb +11 -11
- data/lib/solargraph/language_server/message/text_document.rb +25 -25
- data/lib/solargraph/language_server/message/text_document/completion.rb +51 -51
- data/lib/solargraph/language_server/message/text_document/definition.rb +18 -18
- data/lib/solargraph/language_server/message/text_document/did_change.rb +13 -13
- data/lib/solargraph/language_server/message/text_document/document_symbol.rb +21 -21
- data/lib/solargraph/language_server/message/text_document/folding_range.rb +24 -24
- data/lib/solargraph/language_server/message/text_document/formatting.rb +50 -50
- data/lib/solargraph/language_server/message/text_document/hover.rb +31 -31
- data/lib/solargraph/language_server/message/text_document/on_type_formatting.rb +32 -32
- data/lib/solargraph/language_server/message/text_document/prepare_rename.rb +9 -9
- data/lib/solargraph/language_server/message/text_document/references.rb +14 -14
- data/lib/solargraph/language_server/message/text_document/rename.rb +17 -17
- data/lib/solargraph/language_server/message/text_document/signature_help.rb +19 -19
- data/lib/solargraph/language_server/message/workspace.rb +12 -12
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +29 -29
- data/lib/solargraph/language_server/message/workspace/did_change_watched_files.rb +29 -27
- data/lib/solargraph/language_server/message/workspace/did_change_workspace_folders.rb +24 -24
- data/lib/solargraph/language_server/message/workspace/workspace_symbol.rb +21 -21
- data/lib/solargraph/language_server/request.rb +22 -22
- data/lib/solargraph/language_server/symbol_kinds.rb +34 -34
- data/lib/solargraph/language_server/transport.rb +11 -11
- data/lib/solargraph/language_server/transport/adapter.rb +60 -60
- data/lib/solargraph/language_server/transport/data_reader.rb +66 -66
- data/lib/solargraph/language_server/uri_helpers.rb +25 -25
- data/lib/solargraph/library.rb +421 -419
- data/lib/solargraph/live_map.rb +126 -126
- data/lib/solargraph/live_map/cache.rb +38 -38
- data/lib/solargraph/location.rb +31 -31
- data/lib/solargraph/logging.rb +25 -25
- data/lib/solargraph/page.rb +68 -68
- data/lib/solargraph/pin.rb +50 -50
- data/lib/solargraph/pin/attribute.rb +41 -41
- data/lib/solargraph/pin/base.rb +280 -280
- data/lib/solargraph/pin/base_method.rb +76 -76
- data/lib/solargraph/pin/base_variable.rb +72 -72
- data/lib/solargraph/pin/block.rb +32 -32
- data/lib/solargraph/pin/block_parameter.rb +103 -103
- data/lib/solargraph/pin/class_variable.rb +9 -9
- data/lib/solargraph/pin/constant.rb +30 -30
- data/lib/solargraph/pin/conversions.rb +79 -79
- data/lib/solargraph/pin/documenting.rb +41 -41
- data/lib/solargraph/pin/duck_method.rb +14 -14
- data/lib/solargraph/pin/global_variable.rb +9 -9
- data/lib/solargraph/pin/instance_variable.rb +9 -9
- data/lib/solargraph/pin/keyword.rb +17 -17
- data/lib/solargraph/pin/local_variable.rb +23 -23
- data/lib/solargraph/pin/localized.rb +22 -22
- data/lib/solargraph/pin/method.rb +126 -126
- data/lib/solargraph/pin/method_alias.rb +30 -30
- data/lib/solargraph/pin/method_parameter.rb +40 -40
- data/lib/solargraph/pin/namespace.rb +54 -54
- data/lib/solargraph/pin/plugin/method.rb +25 -25
- data/lib/solargraph/pin/proxy_type.rb +35 -35
- data/lib/solargraph/pin/reference.rb +22 -22
- data/lib/solargraph/pin/reference/extend.rb +11 -11
- data/lib/solargraph/pin/reference/include.rb +11 -11
- data/lib/solargraph/pin/reference/require.rb +15 -15
- data/lib/solargraph/pin/reference/superclass.rb +11 -11
- data/lib/solargraph/pin/symbol.rb +44 -44
- data/lib/solargraph/pin/yard_pin.rb +10 -10
- data/lib/solargraph/pin/yard_pin/constant.rb +14 -14
- data/lib/solargraph/pin/yard_pin/method.rb +35 -35
- data/lib/solargraph/pin/yard_pin/namespace.rb +19 -19
- data/lib/solargraph/pin/yard_pin/yard_mixin.rb +14 -14
- data/lib/solargraph/plugin.rb +8 -8
- data/lib/solargraph/plugin/base.rb +41 -41
- data/lib/solargraph/plugin/canceler.rb +11 -11
- data/lib/solargraph/plugin/process.rb +172 -172
- data/lib/solargraph/plugin/runtime.rb +134 -134
- data/lib/solargraph/position.rb +110 -110
- data/lib/solargraph/range.rb +83 -83
- data/lib/solargraph/server_methods.rb +14 -14
- data/lib/solargraph/shell.rb +102 -102
- data/lib/solargraph/source.rb +521 -521
- data/lib/solargraph/source/chain.rb +120 -120
- data/lib/solargraph/source/chain/call.rb +107 -107
- data/lib/solargraph/source/chain/class_variable.rb +11 -11
- data/lib/solargraph/source/chain/constant.rb +30 -30
- data/lib/solargraph/source/chain/global_variable.rb +11 -11
- data/lib/solargraph/source/chain/head.rb +33 -33
- data/lib/solargraph/source/chain/instance_variable.rb +11 -11
- data/lib/solargraph/source/chain/link.rb +33 -33
- data/lib/solargraph/source/chain/literal.rb +21 -21
- data/lib/solargraph/source/chain/variable.rb +11 -11
- data/lib/solargraph/source/change.rb +77 -77
- data/lib/solargraph/source/cursor.rb +157 -157
- data/lib/solargraph/source/node_chainer.rb +96 -96
- data/lib/solargraph/source/node_methods.rb +225 -225
- data/lib/solargraph/source/source_chainer.rb +183 -183
- data/lib/solargraph/source_map.rb +169 -169
- data/lib/solargraph/source_map/clip.rb +145 -145
- data/lib/solargraph/source_map/completion.rb +21 -21
- data/lib/solargraph/source_map/mapper.rb +149 -149
- data/lib/solargraph/source_map/node_processor.rb +78 -78
- data/lib/solargraph/source_map/node_processor/alias_node.rb +19 -19
- data/lib/solargraph/source_map/node_processor/args_node.rb +28 -28
- data/lib/solargraph/source_map/node_processor/base.rb +68 -68
- data/lib/solargraph/source_map/node_processor/begin_node.rb +11 -11
- data/lib/solargraph/source_map/node_processor/block_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/casgn_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/cvasgn_node.rb +14 -14
- data/lib/solargraph/source_map/node_processor/def_node.rb +54 -54
- data/lib/solargraph/source_map/node_processor/defs_node.rb +21 -21
- data/lib/solargraph/source_map/node_processor/gvasgn_node.rb +12 -12
- data/lib/solargraph/source_map/node_processor/ivasgn_node.rb +18 -18
- data/lib/solargraph/source_map/node_processor/lvasgn_node.rb +16 -16
- data/lib/solargraph/source_map/node_processor/namespace_node.rb +26 -26
- data/lib/solargraph/source_map/node_processor/orasgn_node.rb +12 -12
- data/lib/solargraph/source_map/node_processor/sclass_node.rb +11 -11
- data/lib/solargraph/source_map/node_processor/send_node.rb +162 -162
- data/lib/solargraph/source_map/node_processor/sym_node.rb +11 -11
- data/lib/solargraph/source_map/region.rb +58 -58
- data/lib/solargraph/version.rb +3 -3
- data/lib/solargraph/views/environment.erb +53 -53
- data/lib/solargraph/workspace.rb +183 -183
- data/lib/solargraph/workspace/config.rb +170 -170
- data/lib/solargraph/yard_map.rb +298 -298
- data/lib/solargraph/yard_map/cache.rb +17 -17
- data/lib/solargraph/yard_map/core_docs.rb +163 -163
- data/lib/solargraph/yard_map/core_gen.rb +76 -76
- data/lib/yard-coregen.rb +16 -16
- data/lib/yard-solargraph.rb +18 -18
- data/solargraph.gemspec +37 -0
- data/travis-bundler.rb +10 -0
- metadata +19 -6
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module LanguageServer
|
|
3
|
-
module Message
|
|
4
|
-
module Extended
|
|
5
|
-
class Document < Base
|
|
6
|
-
def process
|
|
7
|
-
objects = host.document(params['query'])
|
|
8
|
-
page = Solargraph::Page.new(host.options['viewsPath'])
|
|
9
|
-
content = page.render('document', layout: true, locals: {objects: objects})
|
|
10
|
-
set_result(
|
|
11
|
-
content: content
|
|
12
|
-
)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module LanguageServer
|
|
3
|
+
module Message
|
|
4
|
+
module Extended
|
|
5
|
+
class Document < Base
|
|
6
|
+
def process
|
|
7
|
+
objects = host.document(params['query'])
|
|
8
|
+
page = Solargraph::Page.new(host.options['viewsPath'])
|
|
9
|
+
content = page.render('document', layout: true, locals: {objects: objects})
|
|
10
|
+
set_result(
|
|
11
|
+
content: content
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
require 'open3'
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
module Extended
|
|
7
|
-
# Update YARD documentation for installed gems. If the `rebuild`
|
|
8
|
-
# parameter is true, rebuild existing yardocs.
|
|
9
|
-
#
|
|
10
|
-
class DocumentGems < Base
|
|
11
|
-
def process
|
|
12
|
-
cmd = "yard gems"
|
|
13
|
-
cmd += " --rebuild" if params['rebuild']
|
|
14
|
-
o, s = Open3.capture2(cmd)
|
|
15
|
-
if s != 0
|
|
16
|
-
host.show_message "An error occurred while building gem documentation.", LanguageServer::MessageTypes::ERROR
|
|
17
|
-
set_result({
|
|
18
|
-
status: 'err'
|
|
19
|
-
})
|
|
20
|
-
else
|
|
21
|
-
set_result({
|
|
22
|
-
status: 'ok'
|
|
23
|
-
})
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
1
|
+
require 'open3'
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
module Extended
|
|
7
|
+
# Update YARD documentation for installed gems. If the `rebuild`
|
|
8
|
+
# parameter is true, rebuild existing yardocs.
|
|
9
|
+
#
|
|
10
|
+
class DocumentGems < Base
|
|
11
|
+
def process
|
|
12
|
+
cmd = "yard gems"
|
|
13
|
+
cmd += " --rebuild" if params['rebuild']
|
|
14
|
+
o, s = Open3.capture2(cmd)
|
|
15
|
+
if s != 0
|
|
16
|
+
host.show_message "An error occurred while building gem documentation.", LanguageServer::MessageTypes::ERROR
|
|
17
|
+
set_result({
|
|
18
|
+
status: 'err'
|
|
19
|
+
})
|
|
20
|
+
else
|
|
21
|
+
set_result({
|
|
22
|
+
status: 'ok'
|
|
23
|
+
})
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module LanguageServer
|
|
3
|
-
module Message
|
|
4
|
-
module Extended
|
|
5
|
-
# Update YARD documentation for installed gems. If the `rebuild`
|
|
6
|
-
# parameter is true, rebuild existing yardocs.
|
|
7
|
-
#
|
|
8
|
-
class Environment < Base
|
|
9
|
-
def process
|
|
10
|
-
page = Solargraph::Page.new(host.options['viewsPath'])
|
|
11
|
-
content = page.render('environment', layout: true, locals: { config: host.options, folders: host.folders })
|
|
12
|
-
set_result(
|
|
13
|
-
content: content
|
|
14
|
-
)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module LanguageServer
|
|
3
|
+
module Message
|
|
4
|
+
module Extended
|
|
5
|
+
# Update YARD documentation for installed gems. If the `rebuild`
|
|
6
|
+
# parameter is true, rebuild existing yardocs.
|
|
7
|
+
#
|
|
8
|
+
class Environment < Base
|
|
9
|
+
def process
|
|
10
|
+
page = Solargraph::Page.new(host.options['viewsPath'])
|
|
11
|
+
content = page.render('environment', layout: true, locals: { config: host.options, folders: host.folders })
|
|
12
|
+
set_result(
|
|
13
|
+
content: content
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
module Solargraph
|
|
2
|
-
module LanguageServer
|
|
3
|
-
module Message
|
|
4
|
-
module Extended
|
|
5
|
-
class Search < Base
|
|
6
|
-
def process
|
|
7
|
-
results = host.search(params['query'])
|
|
8
|
-
page = Solargraph::Page.new(host.options['viewsPath'])
|
|
9
|
-
content = page.render('search', layout: true, locals: {query: params['query'], results: results})
|
|
10
|
-
set_result(
|
|
11
|
-
content: content
|
|
12
|
-
)
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
1
|
+
module Solargraph
|
|
2
|
+
module LanguageServer
|
|
3
|
+
module Message
|
|
4
|
+
module Extended
|
|
5
|
+
class Search < Base
|
|
6
|
+
def process
|
|
7
|
+
results = host.search(params['query'])
|
|
8
|
+
page = Solargraph::Page.new(host.options['viewsPath'])
|
|
9
|
+
content = page.render('search', layout: true, locals: {query: params['query'], results: results})
|
|
10
|
+
set_result(
|
|
11
|
+
content: content
|
|
12
|
+
)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -1,141 +1,141 @@
|
|
|
1
|
-
require 'benchmark'
|
|
2
|
-
|
|
3
|
-
module Solargraph
|
|
4
|
-
module LanguageServer
|
|
5
|
-
module Message
|
|
6
|
-
class Initialize < Base
|
|
7
|
-
def process
|
|
8
|
-
bm = Benchmark.measure {
|
|
9
|
-
host.configure params['initializationOptions']
|
|
10
|
-
if support_workspace_folders?
|
|
11
|
-
host.prepare_folders params['workspaceFolders']
|
|
12
|
-
elsif params['rootUri']
|
|
13
|
-
host.prepare UriHelpers.uri_to_file(params['rootUri'])
|
|
14
|
-
else
|
|
15
|
-
host.prepare params['rootPath']
|
|
16
|
-
end
|
|
17
|
-
result = {
|
|
18
|
-
capabilities: {
|
|
19
|
-
textDocumentSync: 2, # @todo What should this be?
|
|
20
|
-
workspace: {
|
|
21
|
-
workspaceFolders: {
|
|
22
|
-
supported: true,
|
|
23
|
-
changeNotifications: true
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
result[:capabilities].merge! static_completion unless dynamic_registration_for?('textDocument', 'completion')
|
|
29
|
-
result[:capabilities].merge! static_signature_help unless dynamic_registration_for?('textDocument', 'signatureHelp')
|
|
30
|
-
# result[:capabilities].merge! static_on_type_formatting unless dynamic_registration_for?('textDocument', 'onTypeFormatting')
|
|
31
|
-
result[:capabilities].merge! static_hover unless dynamic_registration_for?('textDocument', 'hover')
|
|
32
|
-
result[:capabilities].merge! static_document_formatting unless dynamic_registration_for?('textDocument', 'formatting')
|
|
33
|
-
result[:capabilities].merge! static_document_symbols unless dynamic_registration_for?('textDocument', 'documentSymbol')
|
|
34
|
-
result[:capabilities].merge! static_definitions unless dynamic_registration_for?('textDocument', 'definition')
|
|
35
|
-
result[:capabilities].merge! static_rename unless dynamic_registration_for?('textDocument', 'rename')
|
|
36
|
-
result[:capabilities].merge! static_references unless dynamic_registration_for?('textDocument', 'references')
|
|
37
|
-
result[:capabilities].merge! static_workspace_symbols unless dynamic_registration_for?('workspace', 'symbol')
|
|
38
|
-
result[:capabilities].merge! static_folding_range unless dynamic_registration_for?('textDocument', 'foldingRange')
|
|
39
|
-
set_result result
|
|
40
|
-
}
|
|
41
|
-
Solargraph.logger.unknown "Solargraph initialized (#{bm.real} seconds)"
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
private
|
|
45
|
-
|
|
46
|
-
def support_workspace_folders?
|
|
47
|
-
params['capabilities'] &&
|
|
48
|
-
params['capabilities']['workspace'] &&
|
|
49
|
-
params['capabilities']['workspace']['workspaceFolders'] &&
|
|
50
|
-
params['workspaceFolders']
|
|
51
|
-
end
|
|
52
|
-
|
|
53
|
-
def static_completion
|
|
54
|
-
{
|
|
55
|
-
completionProvider: {
|
|
56
|
-
resolveProvider: true,
|
|
57
|
-
triggerCharacters: ['.', ':', '@']
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def static_signature_help
|
|
63
|
-
{
|
|
64
|
-
signatureHelpProvider: {
|
|
65
|
-
triggerCharacters: ['(', ',']
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def static_on_type_formatting
|
|
71
|
-
{
|
|
72
|
-
documentOnTypeFormattingProvider: {
|
|
73
|
-
firstTriggerCharacter: '{',
|
|
74
|
-
moreTriggerCharacter: ['(']
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def static_hover
|
|
80
|
-
{
|
|
81
|
-
hoverProvider: true
|
|
82
|
-
}
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
def static_document_formatting
|
|
86
|
-
{
|
|
87
|
-
documentFormattingProvider: true
|
|
88
|
-
}
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def static_document_symbols
|
|
92
|
-
{
|
|
93
|
-
documentSymbolProvider: true
|
|
94
|
-
}
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def static_workspace_symbols
|
|
98
|
-
{
|
|
99
|
-
workspaceSymbolProvider: true
|
|
100
|
-
}
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def static_definitions
|
|
104
|
-
{
|
|
105
|
-
definitionProvider: true
|
|
106
|
-
}
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
def static_rename
|
|
110
|
-
{
|
|
111
|
-
renameProvider: {prepareProvider: true}
|
|
112
|
-
}
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
def static_references
|
|
116
|
-
{
|
|
117
|
-
referencesProvider: true
|
|
118
|
-
}
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
def static_folding_range
|
|
122
|
-
{
|
|
123
|
-
foldingRangeProvider: true
|
|
124
|
-
}
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
# @param section [String]
|
|
128
|
-
# @param capability [String]
|
|
129
|
-
# @return [Boolean]
|
|
130
|
-
def dynamic_registration_for? section, capability
|
|
131
|
-
result = (params['capabilities'] &&
|
|
132
|
-
params['capabilities'][section] &&
|
|
133
|
-
params['capabilities'][section][capability] &&
|
|
134
|
-
params['capabilities'][section][capability]['dynamicRegistration'])
|
|
135
|
-
host.allow_registration("#{section}/#{capability}") if result
|
|
136
|
-
result
|
|
137
|
-
end
|
|
138
|
-
end
|
|
139
|
-
end
|
|
140
|
-
end
|
|
141
|
-
end
|
|
1
|
+
require 'benchmark'
|
|
2
|
+
|
|
3
|
+
module Solargraph
|
|
4
|
+
module LanguageServer
|
|
5
|
+
module Message
|
|
6
|
+
class Initialize < Base
|
|
7
|
+
def process
|
|
8
|
+
bm = Benchmark.measure {
|
|
9
|
+
host.configure params['initializationOptions']
|
|
10
|
+
if support_workspace_folders?
|
|
11
|
+
host.prepare_folders params['workspaceFolders']
|
|
12
|
+
elsif params['rootUri']
|
|
13
|
+
host.prepare UriHelpers.uri_to_file(params['rootUri'])
|
|
14
|
+
else
|
|
15
|
+
host.prepare params['rootPath']
|
|
16
|
+
end
|
|
17
|
+
result = {
|
|
18
|
+
capabilities: {
|
|
19
|
+
textDocumentSync: 2, # @todo What should this be?
|
|
20
|
+
workspace: {
|
|
21
|
+
workspaceFolders: {
|
|
22
|
+
supported: true,
|
|
23
|
+
changeNotifications: true
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
result[:capabilities].merge! static_completion unless dynamic_registration_for?('textDocument', 'completion')
|
|
29
|
+
result[:capabilities].merge! static_signature_help unless dynamic_registration_for?('textDocument', 'signatureHelp')
|
|
30
|
+
# result[:capabilities].merge! static_on_type_formatting unless dynamic_registration_for?('textDocument', 'onTypeFormatting')
|
|
31
|
+
result[:capabilities].merge! static_hover unless dynamic_registration_for?('textDocument', 'hover')
|
|
32
|
+
result[:capabilities].merge! static_document_formatting unless dynamic_registration_for?('textDocument', 'formatting')
|
|
33
|
+
result[:capabilities].merge! static_document_symbols unless dynamic_registration_for?('textDocument', 'documentSymbol')
|
|
34
|
+
result[:capabilities].merge! static_definitions unless dynamic_registration_for?('textDocument', 'definition')
|
|
35
|
+
result[:capabilities].merge! static_rename unless dynamic_registration_for?('textDocument', 'rename')
|
|
36
|
+
result[:capabilities].merge! static_references unless dynamic_registration_for?('textDocument', 'references')
|
|
37
|
+
result[:capabilities].merge! static_workspace_symbols unless dynamic_registration_for?('workspace', 'symbol')
|
|
38
|
+
result[:capabilities].merge! static_folding_range unless dynamic_registration_for?('textDocument', 'foldingRange')
|
|
39
|
+
set_result result
|
|
40
|
+
}
|
|
41
|
+
Solargraph.logger.unknown "Solargraph initialized (#{bm.real} seconds)"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
private
|
|
45
|
+
|
|
46
|
+
def support_workspace_folders?
|
|
47
|
+
params['capabilities'] &&
|
|
48
|
+
params['capabilities']['workspace'] &&
|
|
49
|
+
params['capabilities']['workspace']['workspaceFolders'] &&
|
|
50
|
+
params['workspaceFolders']
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def static_completion
|
|
54
|
+
{
|
|
55
|
+
completionProvider: {
|
|
56
|
+
resolveProvider: true,
|
|
57
|
+
triggerCharacters: ['.', ':', '@']
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def static_signature_help
|
|
63
|
+
{
|
|
64
|
+
signatureHelpProvider: {
|
|
65
|
+
triggerCharacters: ['(', ',']
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def static_on_type_formatting
|
|
71
|
+
{
|
|
72
|
+
documentOnTypeFormattingProvider: {
|
|
73
|
+
firstTriggerCharacter: '{',
|
|
74
|
+
moreTriggerCharacter: ['(']
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def static_hover
|
|
80
|
+
{
|
|
81
|
+
hoverProvider: true
|
|
82
|
+
}
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def static_document_formatting
|
|
86
|
+
{
|
|
87
|
+
documentFormattingProvider: true
|
|
88
|
+
}
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def static_document_symbols
|
|
92
|
+
{
|
|
93
|
+
documentSymbolProvider: true
|
|
94
|
+
}
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def static_workspace_symbols
|
|
98
|
+
{
|
|
99
|
+
workspaceSymbolProvider: true
|
|
100
|
+
}
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def static_definitions
|
|
104
|
+
{
|
|
105
|
+
definitionProvider: true
|
|
106
|
+
}
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
def static_rename
|
|
110
|
+
{
|
|
111
|
+
renameProvider: {prepareProvider: true}
|
|
112
|
+
}
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def static_references
|
|
116
|
+
{
|
|
117
|
+
referencesProvider: true
|
|
118
|
+
}
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def static_folding_range
|
|
122
|
+
{
|
|
123
|
+
foldingRangeProvider: true
|
|
124
|
+
}
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
# @param section [String]
|
|
128
|
+
# @param capability [String]
|
|
129
|
+
# @return [Boolean]
|
|
130
|
+
def dynamic_registration_for? section, capability
|
|
131
|
+
result = (params['capabilities'] &&
|
|
132
|
+
params['capabilities'][section] &&
|
|
133
|
+
params['capabilities'][section][capability] &&
|
|
134
|
+
params['capabilities'][section][capability]['dynamicRegistration'])
|
|
135
|
+
host.allow_registration("#{section}/#{capability}") if result
|
|
136
|
+
result
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
end
|