solargraph 0.49.0 → 0.50.0

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
  SHA256:
3
- metadata.gz: b0b66abd5cf5a0376d5521532dda16db328592eb38bac6acd84f997b19cb328c
4
- data.tar.gz: 51e038df27bae1457393c7ff023c9951b0f8919267678e29aab2e21efeb2b1a8
3
+ metadata.gz: 3a6e7990068e276537a53e6af24d45685d73aba32af134def16d8a66ea671f64
4
+ data.tar.gz: 57292437f34d43394a161fe4909eb27931d5d33e1b367276faecc7b0132525e9
5
5
  SHA512:
6
- metadata.gz: 9b8310748d4754c27fd62763ce1bd8759fc43fc825b1b40353d4537130f2b6143cdb59101da679a8b4a7fb0778430eeac2eccbb845f7a9a5ac11f402b3a71461
7
- data.tar.gz: 1b2f79f5396a3c056d0b2acbcb49d6c1385b02a49b33edbe1a3e452a7b451b9b87547b8b8d5974a17e25ea2f5c21db8dd315d2b3d856fb3c7ce2d300a4595c70
6
+ metadata.gz: 1d751b364593fa60cc51c3b9a67086c7a8006dcfe37107daaba4ca1db3f001da28eb289978d81fbe7e84c3a5c9add902417731479517be61269acd958456a057
7
+ data.tar.gz: 1c38faac70a696f81c5063d5ef64341a41a8d244c47c070ab557dbef8e4ca2180f5c22d5d0338c4b6f24598ea27850895bed2eab7c4d747b7bb2efeb71309eb2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,23 @@
1
+ ## 0.50.0 - December 5, 2023
2
+ - Remove .travis.yml as its not longer used (#627)
3
+ - Fix empty string case when processing requires (#644)
4
+ - Fix scope() method call on wrong object (#670)
5
+ - Parse comments that start with multiple hashes (#667)
6
+ - Use XDG_CACHE_HOME if it exists (#664)
7
+ - Add rbs mention to readme (#693)
8
+ - Remove Atom from the readme (#692)
9
+ - Add more metadata to the gemspec (#691)
10
+ - Do not deprecate clear command
11
+ - Library#locate_ref returns nil for unresolved requires (#675)
12
+ - Hide deprecated commands
13
+ - List command
14
+ - Fixes (or ignores) ffi crash (#676)
15
+ - increase sleep time on cataloger (#677)
16
+ - YardMap ignores absolute paths (#678)
17
+ - Clarify macros vs. directives
18
+ - Infer complex types from method calls
19
+ - Default cache uses XDG_CACHE_HOME default (#664)
20
+
1
21
  ## 0.49.0 - April 9, 2023
2
22
  - Better union type handling
3
23
  - First version of RBS support
data/README.md CHANGED
@@ -28,10 +28,6 @@ Plug-ins and extensions are available for the following editors:
28
28
  * Extension: https://marketplace.visualstudio.com/items?itemName=castwide.solargraph
29
29
  * GitHub: https://github.com/castwide/vscode-solargraph
30
30
 
31
- * **Atom**
32
- * Package: https://atom.io/packages/ruby-solargraph
33
- * GitHub: https://github.com/castwide/atom-solargraph
34
-
35
31
  * **Sublime Text**
36
32
  * Extension: https://packagecontrol.io/packages/LSP
37
33
  * GitHub: https://github.com/sublimelsp/LSP
@@ -71,6 +67,8 @@ As of version 0.33.0, Solargraph includes a [type checker](https://github.com/ca
71
67
 
72
68
  ### Updating Core Documentation
73
69
 
70
+ As of version 0.49.0, Solargraph uses [rbs](https://github.com/ruby/rbs) for core and stdlib documentation. The following only applies to prior versions.
71
+
74
72
  The Solargraph gem ships with documentation for Ruby 2.2.2. You can download documentation for other Ruby versions from the command line.
75
73
 
76
74
  $ solargraph list-cores # List the installed documentation versions
data/SPONSORS.md CHANGED
@@ -7,9 +7,11 @@ The following people and organizations provide funding or other resources. [Beco
7
7
  ## Linked Sponsors
8
8
 
9
9
  - **[Calyptix Security](https://www.calyptix.com/)**
10
+ - **[Lightward](https://lightward.com)**
10
11
 
11
12
  ## Named Sponsors
12
13
 
13
14
  - Akira Yamada
15
+ - Jesus Castello
14
16
  - Joel Drapper
15
- - Yutaka Tachibana
17
+ - Spencer
@@ -9,7 +9,9 @@ module Solargraph
9
9
  def base_dir
10
10
  # The directory is not stored in a variable so it can be overridden
11
11
  # in specs.
12
- ENV['SOLARGRAPH_CACHE'] || File.join(Dir.home, '.solargraph', 'cache')
12
+ ENV['SOLARGRAPH_CACHE'] ||
13
+ ENV['XDG_CACHE_HOME'] ? File.join(ENV['XDG_CACHE_HOME'], 'solargraph') :
14
+ File.join(Dir.home, '.cache', 'solargraph')
13
15
  end
14
16
 
15
17
  # The working directory for the current Ruby and Solargraph versions.
@@ -113,7 +113,7 @@ module Solargraph
113
113
  return self unless selfy?
114
114
  red = reduce_class(dst)
115
115
  result = @items.map { |i| i.self_to red }
116
- ComplexType.parse(*result.map(&:tag))
116
+ ComplexType.parse(*result.map(&:to_s))
117
117
  end
118
118
 
119
119
  def nullable?
@@ -169,7 +169,7 @@ module Solargraph
169
169
  paren_stack = 0
170
170
  base = String.new
171
171
  subtype_string = String.new
172
- type_string.each_char do |char|
172
+ type_string&.each_char do |char|
173
173
  if char == '='
174
174
  #raise ComplexTypeError, "Invalid = in type #{type_string}" unless curly_stack > 0
175
175
  elsif char == '<'
@@ -34,7 +34,7 @@ module Solargraph
34
34
  Thread.new do
35
35
  until stopped?
36
36
  tick
37
- sleep 0.01
37
+ sleep 0.1
38
38
  end
39
39
  end
40
40
  end
@@ -258,6 +258,10 @@ module Solargraph
258
258
  api_map.locate_pins(location).map { |pin| pin.realize(api_map) }
259
259
  end
260
260
 
261
+ # Match a require reference to a file.
262
+ #
263
+ # @param location [Location]
264
+ # @return [Location, nil]
261
265
  def locate_ref location
262
266
  map = source_map_hash[location.filename]
263
267
  return if map.nil?
@@ -268,7 +272,7 @@ module Solargraph
268
272
  next unless source_map_hash.key?(full)
269
273
  return Location.new(full, Solargraph::Range.from_to(0, 0, 0, 0))
270
274
  end
271
- # api_map.yard_map.require_reference(pin.name)
275
+ nil
272
276
  rescue FileNotFoundError
273
277
  nil
274
278
  end
@@ -56,7 +56,7 @@ module Solargraph
56
56
  end
57
57
  end
58
58
  return ComplexType::UNDEFINED if types.empty?
59
- ComplexType.try_parse(*types.map(&:tag))
59
+ ComplexType.try_parse(*types.map(&:to_s))
60
60
  end
61
61
 
62
62
  def == other
@@ -71,7 +71,7 @@ module Solargraph
71
71
  STDOUT.puts "Configuration file initialized."
72
72
  end
73
73
 
74
- desc 'download-core [VERSION]', 'Download core documentation [deprecated]'
74
+ desc 'download-core [VERSION]', 'Download core documentation [deprecated]', hide: true
75
75
  long_desc %(
76
76
  The `download-core` command is deprecated. Current versions of Solargraph
77
77
  use RBS for core and stdlib documentation.
@@ -82,7 +82,7 @@ module Solargraph
82
82
  puts 'Current versions of Solargraph use RBS for core and stdlib documentation.'
83
83
  end
84
84
 
85
- desc 'list-cores', 'List the local documentation versions [deprecated]'
85
+ desc 'list-cores', 'List the local documentation versions [deprecated]', hide: true
86
86
  long_desc %(
87
87
  The `list-cores` command is deprecated. Current versions of Solargraph use
88
88
  RBS for core and stdlib documentation.
@@ -93,7 +93,7 @@ module Solargraph
93
93
  puts 'Current versions of Solargraph use RBS for core and stdlib documentation.'
94
94
  end
95
95
 
96
- desc 'available-cores', 'List available documentation versions [deprecated]'
96
+ desc 'available-cores', 'List available documentation versions [deprecated]', hide: true
97
97
  long_desc %(
98
98
  The `available-cores` command is deprecated. Current versions of Solargraph
99
99
  use RBS for core and stdlib documentation.
@@ -108,7 +108,6 @@ module Solargraph
108
108
  long_desc %(
109
109
  This command will delete all core and gem documentation from the cache.
110
110
  )
111
- # @deprecated
112
111
  def clear
113
112
  puts "Deleting the cached documentation"
114
113
  Solargraph::Cache.clear
@@ -195,7 +194,18 @@ module Solargraph
195
194
  puts "Scanned #{directory} (#{api_map.pins.length} pins) in #{time.real} seconds."
196
195
  end
197
196
 
198
- desc 'bundle', 'Generate documentation for bundled gems [deprecated]'
197
+ desc 'list', 'List the files in the workspace and the total count'
198
+ option :count, type: :boolean, aliases: :c, desc: 'Display the file count only', default: false
199
+ option :directory, type: :string, aliases: :d, desc: 'The directory to read', default: '.'
200
+ def list
201
+ workspace = Solargraph::Workspace.new(options[:directory])
202
+ unless options[:count]
203
+ workspace.filenames.each { |f| puts f }
204
+ end
205
+ puts "#{workspace.filenames.length} files total."
206
+ end
207
+
208
+ desc 'bundle', 'Generate documentation for bundled gems [deprecated]', hide: true
199
209
  long_desc %(
200
210
  The `bundle` command is deprecated. Solargraph currently uses RBS instead.
201
211
  )
@@ -205,7 +215,7 @@ module Solargraph
205
215
  puts 'The `bundle` command is deprecated. Solargraph currently uses RBS instead.'
206
216
  end
207
217
 
208
- desc 'rdoc GEM [VERSION]', 'Use RDoc to cache documentation [deprecated]'
218
+ desc 'rdoc GEM [VERSION]', 'Use RDoc to cache documentation [deprecated]', hide: true
209
219
  long_desc %(
210
220
  The `rdoc` command is deprecated. Solargraph currently uses RBS instead.
211
221
  )
@@ -199,7 +199,7 @@ module Solargraph
199
199
  # @param name_pin [Pin::Base]
200
200
  # @return [Array<Pin::Base>]
201
201
  def super_pins api_map, name_pin
202
- pins = api_map.get_method_stack(name_pin.namespace, name_pin.name, scope: name_pin.scope)
202
+ pins = api_map.get_method_stack(name_pin.namespace, name_pin.name, scope: name_pin.context.scope)
203
203
  pins.reject{|p| p.path == name_pin.path}
204
204
  end
205
205
 
@@ -162,7 +162,7 @@ module Solargraph
162
162
  sorted = possibles.map { |t| t.rooted? ? "::#{t}" : t.to_s }.sort { |a, _| a == 'nil' ? 1 : 0 }
163
163
  ComplexType.parse(*sorted)
164
164
  else
165
- possibles.first
165
+ ComplexType.parse(possibles.map(&:to_s).join(', '))
166
166
  end
167
167
  return type if context.nil? || context.return_type.undefined?
168
168
  type.self_to(context.return_type.namespace)
@@ -12,7 +12,7 @@ module Solargraph
12
12
 
13
13
  private_class_method :new
14
14
 
15
- MACRO_REGEXP = /(@\!method|@\!attribute|@\!visibility|@\!domain|@\!macro|@\!parse|@\!override)/.freeze
15
+ DIRECTIVE_REGEXP = /(@\!method|@\!attribute|@\!visibility|@\!domain|@\!macro|@\!parse|@\!override)/.freeze
16
16
 
17
17
  # Generate the data.
18
18
  #
@@ -65,7 +65,7 @@ module Solargraph
65
65
  end
66
66
 
67
67
  def process_comment source_position, comment_position, comment
68
- return unless comment.encode('UTF-8', invalid: :replace, replace: '?') =~ MACRO_REGEXP
68
+ return unless comment.encode('UTF-8', invalid: :replace, replace: '?') =~ DIRECTIVE_REGEXP
69
69
  cmnt = remove_inline_comment_hashes(comment)
70
70
  parse = Solargraph::Source.parse_docstring(cmnt)
71
71
  last_line = 0
@@ -198,6 +198,8 @@ module Solargraph
198
198
  namespace.domains.concat directive.tag.types unless directive.tag.types.nil?
199
199
  when 'override'
200
200
  pins.push Pin::Reference::Override.new(location, directive.tag.name, docstring.tags)
201
+ when 'macro'
202
+ # @todo Handle macros
201
203
  end
202
204
  end
203
205
 
@@ -211,7 +213,7 @@ module Solargraph
211
213
  started = false
212
214
  comment.lines.each { |l|
213
215
  # Trim the comment and minimum leading whitespace
214
- p = l.encode('UTF-8', invalid: :replace, replace: '?').gsub(/^#/, '')
216
+ p = l.encode('UTF-8', invalid: :replace, replace: '?').gsub(/^#+/, '')
215
217
  if num.nil? && !p.strip.empty?
216
218
  num = p.index(/[^ ]/)
217
219
  started = true
@@ -226,7 +228,7 @@ module Solargraph
226
228
 
227
229
  # @return [void]
228
230
  def process_comment_directives
229
- return unless @code.encode('UTF-8', invalid: :replace, replace: '?') =~ MACRO_REGEXP
231
+ return unless @code.encode('UTF-8', invalid: :replace, replace: '?') =~ DIRECTIVE_REGEXP
230
232
  code_lines = @code.lines
231
233
  @source.associated_comments.each do |line, comments|
232
234
  src_pos = line ? Position.new(line, code_lines[line].to_s.chomp.index(/[^\s]/) || 0) : Position.new(code_lines.length, 0)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Solargraph
4
- VERSION = '0.49.0'
4
+ VERSION = '0.50.0'
5
5
  end
@@ -219,8 +219,8 @@ module Solargraph
219
219
  def pins_for_require r, already_errored
220
220
  result = []
221
221
  begin
222
- name = r.split('/').first
223
- return [] if @source_gems.include?(name) || @gem_paths.key?(name)
222
+ name = r.split('/').first.to_s
223
+ return [] if name.empty? || @source_gems.include?(name) || @gem_paths.key?(name)
224
224
  spec = spec_for_require(name)
225
225
  @gem_paths[name] = spec.full_gem_path
226
226
 
@@ -282,7 +282,7 @@ module Solargraph
282
282
  # @param path [String]
283
283
  # @return [Gem::Specification]
284
284
  def spec_for_require path
285
- name = path.split('/').first
285
+ name = path.split('/').first.to_s
286
286
  spec = Gem::Specification.find_by_name(name, @gemset[name])
287
287
 
288
288
  # Avoid loading the spec again if it's going to be skipped anyway
data/solargraph.gemspec CHANGED
@@ -16,7 +16,10 @@ Gem::Specification.new do |s|
16
16
  s.homepage = 'https://solargraph.org'
17
17
  s.license = 'MIT'
18
18
  s.executables = ['solargraph']
19
- s.metadata["funding_uri"] = "https://www.patreon.com/castwide"
19
+ s.metadata["funding_uri"] = "https://www.patreon.com/castwide"
20
+ s.metadata["bug_tracker_uri"] = "https://github.com/castwide/solargraph/issues"
21
+ s.metadata["changelog_uri"] = "https://github.com/castwide/solargraph/blob/master/CHANGELOG.md"
22
+ s.metadata["source_code_uri"] = "https://github.com/castwide/solargraph"
20
23
 
21
24
  s.required_ruby_version = '>= 2.6'
22
25
 
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.49.0
4
+ version: 0.50.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fred Snyder
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-09 00:00:00.000000000 Z
11
+ date: 2023-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backport
@@ -307,7 +307,6 @@ files:
307
307
  - ".github/workflows/rspec.yml"
308
308
  - ".gitignore"
309
309
  - ".rspec"
310
- - ".travis.yml"
311
310
  - ".yardopts"
312
311
  - CHANGELOG.md
313
312
  - Gemfile
@@ -566,6 +565,9 @@ licenses:
566
565
  - MIT
567
566
  metadata:
568
567
  funding_uri: https://www.patreon.com/castwide
568
+ bug_tracker_uri: https://github.com/castwide/solargraph/issues
569
+ changelog_uri: https://github.com/castwide/solargraph/blob/master/CHANGELOG.md
570
+ source_code_uri: https://github.com/castwide/solargraph
569
571
  post_install_message:
570
572
  rdoc_options: []
571
573
  require_paths:
data/.travis.yml DELETED
@@ -1,19 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4
4
- - 2.5
5
- - 2.6
6
- - 2.7
7
- - 3.0
8
- - jruby-head
9
- matrix:
10
- include:
11
- - rvm: 2.7
12
- os: osx
13
- allow_failures:
14
- - rvm: jruby-head
15
- before_install:
16
- - gem update --system
17
- - gem install bundler
18
- before_script: yard gems
19
- script: rspec