solargraph 0.31.0 → 0.31.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/solargraph/language_server/host.rb +5 -2
- data/lib/solargraph/language_server/message/base.rb +1 -0
- data/lib/solargraph/language_server/message/workspace/did_change_configuration.rb +1 -0
- data/lib/solargraph/language_server/transport/adapter.rb +2 -2
- data/lib/solargraph/language_server/transport/data_reader.rb +1 -1
- data/lib/solargraph/library.rb +3 -1
- data/lib/solargraph/source.rb +5 -4
- data/lib/solargraph/source/source_chainer.rb +7 -9
- data/lib/solargraph/version.rb +1 -1
- data/lib/solargraph/workspace/config.rb +3 -2
- data/lib/solargraph/yard_map/core_gen.rb +42 -13
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a170a254c51b9119d68f9542bb621eee41831b814e94d5f987eb2c7d78f412ba
|
4
|
+
data.tar.gz: 9beff1ee445b21b89dbbcee0d2a68bed60911940a8587a58c6c361aa0ca7ffad
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79d0c51c0b65bf9f10f816b3821aa463d4f767a6ef926a948574e7c33b6f24eb8be5eda8a93bb41ad8d8e56bd73800b57fcc1e79cf85cf05efcf5279bff34319
|
7
|
+
data.tar.gz: a6ddfcd658534c8f6c01d1b5f9ab25d13c9bc0abb2f437e783e6a89a280048d8886b8b105afc37f428ac25ecf403f9ad9e1a26dff5a7903c1eac28d04f10f953
|
@@ -129,7 +129,7 @@ module Solargraph
|
|
129
129
|
# @param uri [String] The file uri.
|
130
130
|
# @return [void]
|
131
131
|
def delete uri
|
132
|
-
sources.close uri
|
132
|
+
# sources.close uri # @todo It's possible for a deleted file to be open in an editor
|
133
133
|
filename = uri_to_file(uri)
|
134
134
|
libraries.each do |lib|
|
135
135
|
# lib.delete filename
|
@@ -534,7 +534,10 @@ module Solargraph
|
|
534
534
|
# @return [Array<Solargraph::Pin::Base>]
|
535
535
|
def document_symbols uri
|
536
536
|
library = library_for(uri)
|
537
|
-
|
537
|
+
# At this level, document symbols should be unique; e.g., a
|
538
|
+
# module_function method should return the location for Module.method
|
539
|
+
# or Module#method, but not both.
|
540
|
+
library.document_symbols(uri_to_file(uri)).uniq(&:location)
|
538
541
|
end
|
539
542
|
|
540
543
|
# Send a notification to the client.
|
@@ -3,6 +3,7 @@ require 'uri'
|
|
3
3
|
module Solargraph::LanguageServer::Message::Workspace
|
4
4
|
class DidChangeConfiguration < Solargraph::LanguageServer::Message::Base
|
5
5
|
def process
|
6
|
+
return unless params['settings']
|
6
7
|
update = params['settings']['solargraph']
|
7
8
|
host.configure update
|
8
9
|
register_from_options
|
@@ -1,11 +1,11 @@
|
|
1
|
+
require 'backport'
|
2
|
+
|
1
3
|
module Solargraph
|
2
4
|
module LanguageServer
|
3
5
|
module Transport
|
4
6
|
# A common module for running language servers in Backport.
|
5
7
|
#
|
6
8
|
module Adapter
|
7
|
-
@@timer_is_running = false
|
8
|
-
|
9
9
|
def opening
|
10
10
|
@host = Solargraph::LanguageServer::Host.new
|
11
11
|
@host.start
|
@@ -52,7 +52,7 @@ module Solargraph
|
|
52
52
|
msg = JSON.parse(@buffer)
|
53
53
|
@message_handler.call msg unless @message_handler.nil?
|
54
54
|
rescue JSON::ParserError => e
|
55
|
-
Solargraph::Logging.logger.
|
55
|
+
Solargraph::Logging.logger.warn "Failed to parse request: #{e.message}"
|
56
56
|
Solargraph::Logging.logger.debug "Buffer: #{@buffer}"
|
57
57
|
ensure
|
58
58
|
@buffer.clear
|
data/lib/solargraph/library.rb
CHANGED
@@ -207,7 +207,9 @@ module Solargraph
|
|
207
207
|
found = source.references(pin.name)
|
208
208
|
found.select! do |loc|
|
209
209
|
referenced = definitions_at(loc.filename, loc.range.ending.line, loc.range.ending.character)
|
210
|
-
|
210
|
+
# HACK: The additional location comparison is necessary because
|
211
|
+
# Clip#define can return proxies for parameter pins
|
212
|
+
referenced.any?{|r| r == pin || r.location == pin.location}
|
211
213
|
end
|
212
214
|
# HACK: for language clients that exclude special characters from the start of variable names
|
213
215
|
if strip && match = cursor.word.match(/^[^a-z0-9_]+/i)
|
data/lib/solargraph/source.rb
CHANGED
@@ -200,7 +200,8 @@ module Solargraph
|
|
200
200
|
# @return [Boolean]
|
201
201
|
def comment_at? position
|
202
202
|
comment_ranges.each do |range|
|
203
|
-
return true if range.include?(position)
|
203
|
+
return true if range.include?(position) ||
|
204
|
+
(range.ending.line == position.line && range.ending.column < position.column)
|
204
205
|
break if range.ending.line > position.line
|
205
206
|
end
|
206
207
|
false
|
@@ -257,7 +258,7 @@ module Solargraph
|
|
257
258
|
end
|
258
259
|
|
259
260
|
FOLDING_NODE_TYPES = %i[
|
260
|
-
class sclass module def defs if str dstr array while unless kwbegin hash
|
261
|
+
class sclass module def defs if str dstr array while unless kwbegin hash block
|
261
262
|
].freeze
|
262
263
|
|
263
264
|
# Get an array of ranges that can be folded, e.g., the range of a class
|
@@ -334,9 +335,9 @@ module Solargraph
|
|
334
335
|
num = cur if cur < num
|
335
336
|
end
|
336
337
|
# Include blank lines between comments
|
337
|
-
ctxt += ("\n" * (l.loc.first_line - last_line - 1)) unless last_line.nil?
|
338
|
+
ctxt += ("\n" * (l.loc.first_line - last_line - 1)) unless last_line.nil? || l.loc.first_line - last_line <= 0
|
338
339
|
ctxt += "#{p[num..-1]}\n" if started
|
339
|
-
last_line = l.loc.last_line
|
340
|
+
last_line = l.loc.last_line if last_line.nil? || l.loc.last_line > last_line
|
340
341
|
}
|
341
342
|
ctxt
|
342
343
|
end
|
@@ -33,16 +33,14 @@ module Solargraph
|
|
33
33
|
return Chain.new([Chain::Literal.new('Symbol')]) if phrase.start_with?(':') && !phrase.start_with?('::')
|
34
34
|
begin
|
35
35
|
return Chain.new([]) if phrase.end_with?('..')
|
36
|
-
if source.synchronized?
|
37
|
-
|
38
|
-
node = source.node_at(position.line, position.column)
|
39
|
-
else
|
40
|
-
node = nil
|
41
|
-
node = source.node_at(fixed_position.line, fixed_position.column) unless source.error_ranges.any?{|r| r.nil? || r.include?(fixed_position)}
|
42
|
-
node = Source.parse(fixed_phrase) if node.nil?
|
43
|
-
end
|
36
|
+
if !source.repaired? && source.parsed? && source.synchronized?
|
37
|
+
node = source.node_at(position.line, position.column)
|
44
38
|
else
|
45
|
-
node =
|
39
|
+
node = nil
|
40
|
+
node = source.node_at(fixed_position.line, fixed_position.column) unless source.error_ranges.any?{|r| r.nil? || r.include?(fixed_position)}
|
41
|
+
# Exception for positions that chain literal nodes in unsynchronized sources
|
42
|
+
node = nil unless source.synchronized? || !infer_literal_node_type(node).nil?
|
43
|
+
node = Source.parse(fixed_phrase) if node.nil?
|
46
44
|
end
|
47
45
|
rescue Parser::SyntaxError
|
48
46
|
return Chain.new([Chain::UNDEFINED_CALL])
|
data/lib/solargraph/version.rb
CHANGED
@@ -45,7 +45,7 @@ module Solargraph
|
|
45
45
|
#
|
46
46
|
# @return [Array<String>]
|
47
47
|
def included
|
48
|
-
return [] if directory.empty?
|
48
|
+
return [] if directory.empty? || directory == '*'
|
49
49
|
@included ||= process_globs(@raw_data['include'])
|
50
50
|
end
|
51
51
|
|
@@ -53,7 +53,7 @@ module Solargraph
|
|
53
53
|
#
|
54
54
|
# @return [Array<String>]
|
55
55
|
def excluded
|
56
|
-
return [] if directory.empty?
|
56
|
+
return [] if directory.empty? || directory == '*'
|
57
57
|
@excluded ||= process_exclusions(@raw_data['exclude'])
|
58
58
|
end
|
59
59
|
|
@@ -61,6 +61,7 @@ module Solargraph
|
|
61
61
|
#
|
62
62
|
# @return [Array<String>]
|
63
63
|
def calculated
|
64
|
+
Solargraph.logger.info "Indexing workspace files in #{directory}" unless @calculated || directory.empty? || directory == '*'
|
64
65
|
@calculated ||= included - excluded
|
65
66
|
end
|
66
67
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'tmpdir'
|
3
3
|
require 'pathname'
|
4
|
+
require 'rubygems/package'
|
5
|
+
require 'shellwords'
|
4
6
|
|
5
7
|
module Solargraph
|
6
8
|
class YardMap
|
@@ -17,28 +19,55 @@ module Solargraph
|
|
17
19
|
path_name = Pathname.new(Dir.pwd).join(dest_dir).to_s
|
18
20
|
FileUtils.mkdir_p path_name
|
19
21
|
Dir.chdir(ruby_dir) do
|
20
|
-
`yardoc --plugin coregen -b #{File.join(path_name, 'yardoc')} -n *.c`
|
22
|
+
`yardoc --plugin coregen -b "#{File.join(path_name, 'yardoc')}" -n *.c`
|
21
23
|
raise 'An error occurred generating the core yardoc.' unless $?.success?
|
22
|
-
|
24
|
+
# YARD::CLI::Yardoc.run('--plugin', 'coregen', '-b', "#{File.join(path_name, 'yardoc')}", '-n', File.join(ruby_dir, '*.c'))
|
25
|
+
`yardoc -b "#{File.join(path_name, 'yardoc-stdlib')}" -n lib ext`
|
23
26
|
raise 'An error occurred generating the stdlib yardoc.' unless $?.success?
|
27
|
+
# YARD::CLI::Yardoc.run('-b', "#{File.join(path_name, 'yardoc-stdlib')}", '-n', File.join(ruby_dir, 'lib', '**', '*.rb'), File.join(ruby_dir, 'ext', '**', '*.c'), File.join(ruby_dir, 'ext', '**', '*.rb'))
|
24
28
|
end
|
25
29
|
end
|
26
30
|
|
27
|
-
# Generate a gzip of documentation from the specified Ruby source
|
31
|
+
# Generate a gzip of documentation from the specified Ruby source
|
32
|
+
# directory.
|
33
|
+
#
|
34
|
+
# This method is designed to generate the directory architecture that
|
35
|
+
# YardMap core docs expect.
|
28
36
|
#
|
29
37
|
# @param ruby_dir [String] The Ruby source directory
|
30
|
-
# @param
|
38
|
+
# @param ver_name [String, nil] The version name
|
39
|
+
# @param dest_dir [String] The destination directory
|
31
40
|
# @return [void]
|
32
|
-
def generate_gzip ruby_dir,
|
41
|
+
def generate_gzip ruby_dir, ver_name = nil, dest_dir = Dir.pwd
|
33
42
|
Dir.mktmpdir do |tmp|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
43
|
+
base_name = ver_name || begin
|
44
|
+
match = ruby_dir.match(/\d+\.\d+\.\d+$/)
|
45
|
+
raise "Unable to determine version name from #{ruby_dir}" if match.nil?
|
46
|
+
match[0]
|
47
|
+
end
|
48
|
+
path_name = Pathname.new(tmp).join(base_name).to_s
|
49
|
+
generate_docs ruby_dir, path_name
|
50
|
+
gzip path_name, Pathname.new(dest_dir).join("#{base_name}.tar.gz").to_s
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
# @param dir [String] The directory to compress
|
57
|
+
# @param dst [String] The destination file
|
58
|
+
def gzip dir, dst
|
59
|
+
File.open(dst, 'wb') do |file|
|
60
|
+
Zlib::GzipWriter.wrap(file) do |gzip|
|
61
|
+
Gem::Package::TarWriter.new(gzip) do |tar|
|
62
|
+
Dir["#{dir}/**/*"].each do |filename|
|
63
|
+
next if File.directory?(filename)
|
64
|
+
relname = File.join(File.basename(dir), filename[dir.length+1..-1])
|
65
|
+
tar.add_file_simple(relname, 0o644, File.size(filename)) do |io|
|
66
|
+
io.write File.read_binary(filename)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
42
71
|
end
|
43
72
|
end
|
44
73
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solargraph
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.31.
|
4
|
+
version: 0.31.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backport
|
@@ -44,6 +44,20 @@ dependencies:
|
|
44
44
|
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: 4.3.4
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jaro_winkler
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.5'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.5'
|
47
61
|
- !ruby/object:Gem::Dependency
|
48
62
|
name: kramdown
|
49
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,20 +168,6 @@ dependencies:
|
|
154
168
|
- - "~>"
|
155
169
|
- !ruby/object:Gem::Version
|
156
170
|
version: '0.9'
|
157
|
-
- !ruby/object:Gem::Dependency
|
158
|
-
name: jaro_winkler
|
159
|
-
requirement: !ruby/object:Gem::Requirement
|
160
|
-
requirements:
|
161
|
-
- - "~>"
|
162
|
-
- !ruby/object:Gem::Version
|
163
|
-
version: '1.5'
|
164
|
-
type: :runtime
|
165
|
-
prerelease: false
|
166
|
-
version_requirements: !ruby/object:Gem::Requirement
|
167
|
-
requirements:
|
168
|
-
- - "~>"
|
169
|
-
- !ruby/object:Gem::Version
|
170
|
-
version: '1.5'
|
171
171
|
- !ruby/object:Gem::Dependency
|
172
172
|
name: pry
|
173
173
|
requirement: !ruby/object:Gem::Requirement
|