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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 187c43588289d2ce91d4aad67e933847460d5294
4
- data.tar.gz: fab4412e895fdd597a0cde34d6ac451526d65754
3
+ metadata.gz: 8b663346a935bf7a364c828edc3eddfcdeab1702
4
+ data.tar.gz: 28e58c55f6d542b5a3b4bff0da3f7ce619d8df0c
5
5
  SHA512:
6
- metadata.gz: 773a77bbc2e6aa114db6c79b55d80a99d392cd7194d1a95dc0651e2657be3086f7a2830bb69a9d44ef5a9f73c8bf80330d4089d6000fbe31f31cf152e6fba580
7
- data.tar.gz: 550244a1ea6dc472eaf91cd69c46a19fdbf42e1093eb099100dbdb9579ce7eef82bae7e887381b1af994497c7acffd8cfe70de86bfb544293ce827531560ddc1
6
+ metadata.gz: 441b66f057a2ec97b41bc7a76b71c1869a483e61c2494cc2a93e4f9faac4d0e350b4b78096242a2f87ef001454c397447d422c0fba2fd5bbe2caa1ecb3cd2aba
7
+ data.tar.gz: 2d44127c944bd074ec315dd5e1043eebe5b9b706ef950468318228922655569a42fc2e641771f8e4b497209cff0b9a8852ce7ac49091be424ec9dfd476936846
@@ -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
  }
@@ -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
- tmp = "#{@code}\nX".gsub(/[\.@]([\s])/, '#\1').gsub(/([\A\s]?)def([\s]*?[\n\Z])/, '\1#ef\2')
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.length
36
- tmp = tmp[0..-2] + '#'
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
@@ -1,3 +1,3 @@
1
1
  module Solargraph
2
- VERSION = '0.7.3'
2
+ VERSION = '0.7.4'
3
3
  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.7.3
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-08 00:00:00.000000000 Z
11
+ date: 2017-05-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser