solargraph 0.7.3 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/solargraph/api_map.rb +2 -2
- data/lib/solargraph/code_map.rb +29 -4
- data/lib/solargraph/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8b663346a935bf7a364c828edc3eddfcdeab1702
|
4
|
+
data.tar.gz: 28e58c55f6d542b5a3b4bff0da3f7ce619d8df0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 441b66f057a2ec97b41bc7a76b71c1869a483e61c2494cc2a93e4f9faac4d0e350b4b78096242a2f87ef001454c397447d422c0fba2fd5bbe2caa1ecb3cd2aba
|
7
|
+
data.tar.gz: 2d44127c944bd074ec315dd5e1043eebe5b9b706ef950468318228922655569a42fc2e641771f8e4b497209cff0b9a8852ce7ac49091be424ec9dfd476936846
|
data/lib/solargraph/api_map.rb
CHANGED
@@ -10,7 +10,7 @@ module Solargraph
|
|
10
10
|
'begin', 'break', 'case', 'class', 'def', 'defined?', 'do', 'else',
|
11
11
|
'elsif', 'end', 'ensure', 'false', 'for', 'if', 'in', 'module', 'next',
|
12
12
|
'nil', 'not', 'or', 'redo', 'rescue', 'retry', 'return', 'self', 'super',
|
13
|
-
'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield'
|
13
|
+
'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield',
|
14
14
|
]
|
15
15
|
|
16
16
|
MAPPABLE_METHODS = [
|
@@ -99,7 +99,7 @@ module Solargraph
|
|
99
99
|
|
100
100
|
def self.get_keywords
|
101
101
|
result = []
|
102
|
-
keywords = KEYWORDS
|
102
|
+
keywords = KEYWORDS + MAPPABLE_METHODS
|
103
103
|
keywords.each { |k|
|
104
104
|
result.push Suggestion.new(k, kind: Suggestion::KEYWORD, detail: 'Keyword')
|
105
105
|
}
|
data/lib/solargraph/code_map.rb
CHANGED
@@ -4,6 +4,8 @@ module Solargraph
|
|
4
4
|
class CodeMap
|
5
5
|
attr_accessor :node
|
6
6
|
attr_accessor :api_map
|
7
|
+
attr_reader :code
|
8
|
+
attr_reader :parsed
|
7
9
|
|
8
10
|
include NodeMethods
|
9
11
|
|
@@ -20,20 +22,37 @@ module Solargraph
|
|
20
22
|
if @api_map.nil?
|
21
23
|
@api_map = ApiMap.new(workspace)
|
22
24
|
end
|
23
|
-
|
24
25
|
@code = code.gsub(/\r/, '')
|
25
26
|
tries = 0
|
26
27
|
# Hide incomplete code to avoid syntax errors
|
27
|
-
|
28
|
+
# @todo This might not be necessary given the corrected character
|
29
|
+
# replacement in retries.
|
30
|
+
#tmp = "#{@code}\nX".gsub(/[\.@]([\s])/, '#\1').gsub(/([\A\s]?)def([\s]*?[\n\Z])/, '\1#ef\2')
|
31
|
+
tmp = @code
|
28
32
|
begin
|
29
33
|
node, comments = Parser::CurrentRuby.parse_with_comments(tmp)
|
30
34
|
@node = @api_map.append_node(node, comments, filename)
|
35
|
+
@parsed = tmp
|
36
|
+
@code.freeze
|
37
|
+
@parsed.freeze
|
31
38
|
rescue Parser::SyntaxError => e
|
32
39
|
if tries < 10
|
40
|
+
STDERR.puts "Error parsing #{filename}: #{e.message}"
|
41
|
+
STDERR.puts "Retrying..."
|
33
42
|
tries += 1
|
34
43
|
spot = e.diagnostic.location.begin_pos
|
35
|
-
if spot == tmp
|
36
|
-
|
44
|
+
if tmp[spot] == '@' or tmp[spot] == ':'
|
45
|
+
# Stub unfinished instance variables and symbols
|
46
|
+
spot -= 1
|
47
|
+
elsif tmp[spot - 1] == '.'
|
48
|
+
# Stub unfinished method calls
|
49
|
+
spot -= 2
|
50
|
+
else
|
51
|
+
# Stub the whole line
|
52
|
+
spot = beginning_of_line_from(spot)
|
53
|
+
end
|
54
|
+
if spot == 0
|
55
|
+
tmp = '#' + tmp[1..-1]
|
37
56
|
else
|
38
57
|
tmp = tmp[0..spot] + '#' + tmp[spot+2..-1].to_s
|
39
58
|
end
|
@@ -413,5 +432,11 @@ module Solargraph
|
|
413
432
|
nil
|
414
433
|
end
|
415
434
|
|
435
|
+
def beginning_of_line_from i
|
436
|
+
while i > 0 and @code[i] != "\n"
|
437
|
+
i -= 1
|
438
|
+
end
|
439
|
+
i
|
440
|
+
end
|
416
441
|
end
|
417
442
|
end
|
data/lib/solargraph/version.rb
CHANGED
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.7.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fred Snyder
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-05-
|
11
|
+
date: 2017-05-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parser
|