Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
92340de
Add rubydex dependency
vinistock Feb 25, 2026
cf5490c
Upgrade rubydex to v0.1.0.beta9
vinistock Mar 18, 2026
d768615
Start indexing and resolving Rubydex graph
vinistock Mar 3, 2026
0f3a2dc
Switch singleton class names to new style
vinistock Mar 5, 2026
735273a
Migrate type inferrer to use Rubydex
vinistock Mar 18, 2026
32d13d6
Upgrade Rubydex to v0.1.0.beta10
vinistock Mar 25, 2026
417f462
Partially migrate go to definition to Rubydex
vinistock Mar 20, 2026
c14d2d1
Migrate workspace symbol to use Rubydex
vinistock Mar 19, 2026
89384db
Update graph on edits
vinistock Mar 26, 2026
8cdb233
Upgrade to Rubydex v0.1.0.beta11
vinistock Mar 27, 2026
43f8858
Partially migrate hover to use Rubydex
vinistock Mar 23, 2026
403eca8
Migrate rename to use Rubydex
vinistock Mar 26, 2026
b636802
Bump version to v0.27.0.beta1
vinistock Apr 1, 2026
acebc25
Bump rubydex to v0.1.0.beta12
vinistock Apr 15, 2026
1da09e0
Fix UTF-32 encoding in global state (#4063)
vinistock Apr 17, 2026
ba444a3
Upgrade rubydex to v0.1.0.beta13
vinistock Apr 21, 2026
f59456a
Benchmark and send telemetry events for indexing and resolution (#4074)
vinistock Apr 23, 2026
02c713d
Migrate test discovery to use Rubydex (#4064)
vinistock Apr 28, 2026
aa1cf80
Complete keyword hover with Rubydex (#4073)
vinistock Apr 30, 2026
da58161
Migrate type hierarchy to use Rubydex (#4072)
vinistock Apr 30, 2026
bc14098
Fix type inference for parent scopes and method definitions with rece…
vinistock Apr 30, 2026
e64dced
Migrate find references to Rubydex (#4066)
vinistock Apr 30, 2026
d4a6cb6
Bump version v0.27.0.beta2
vinistock Apr 30, 2026
400afff
Bump rubydex to v0.2.0
vinistock May 1, 2026
04d27a5
Use method receivers to narrow reference search results (#4091)
vinistock May 6, 2026
4d3031e
Upgrade rubydex to v0.2.1
vinistock May 6, 2026
91a5857
Upgrade rubydex to v0.2.2
vinistock May 8, 2026
2a6ff9b
Handle visibility in go to definition (#4095)
vinistock May 8, 2026
51165b8
Handle visibility in hover (#4097)
vinistock May 8, 2026
f4765d9
Partially migrate completion to Rubydex (#4096)
vinistock May 8, 2026
2f69aa5
Migrate signature help to Rubydex (#4098)
vinistock May 8, 2026
74f9a51
Use Rubydex for method hover (#4099)
vinistock May 8, 2026
df31f52
Use Rubydex for method completion resolve (#4100)
vinistock May 8, 2026
45871df
Remove old indexer (#4101)
vinistock May 8, 2026
9eb1d02
Prevent guessed types from being anything but namespaces (#4102)
vinistock May 8, 2026
3a2070a
Bump version to v0.27.0.beta3
vinistock May 8, 2026
de46460
Make percentage optional when starting progress notifications
vinistock Jun 15, 2026
5c36336
Show progress when running incremental indexing and resolution
vinistock Jun 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 0 additions & 25 deletions .github/workflows/indexing.yml

This file was deleted.

7 changes: 7 additions & 0 deletions .mcp.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"mcpServers": {
"rubydex": {
"command": "${HOME}/.cargo/bin/rubydex_mcp"
}
}
}
4 changes: 0 additions & 4 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@ Sorbet/TrueSigil:
Enabled: true
Include:
- "test/**/*.rb"
- "lib/ruby_indexer/test/**/*.rb"
- "lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb"
- "lib/ruby_lsp/scripts/compose_bundle.rb"
- "lib/ruby_lsp/test_reporters/test_unit_reporter.rb"
Exclude:
Expand All @@ -64,9 +62,7 @@ Sorbet/StrictSigil:
Exclude:
- "**/*.rake"
- "test/**/*.rb"
- "lib/ruby_indexer/test/**/*.rb"
- "lib/ruby-lsp.rb"
- "lib/ruby_indexer/lib/ruby_indexer/prefix_tree.rb"
- "lib/ruby_lsp/scripts/compose_bundle.rb"
- "lib/ruby_lsp/test_helper.rb"
- "lib/ruby_lsp/test_reporters/test_unit_reporter.rb"
Expand Down
2 changes: 0 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ Its parts are:

- `ruby-lsp` gem: language server implementation and extra custom functionality to support the VS Code extension. This
is the top level of the repository
- Ruby code indexer: static analysis engine to support features like go to definition, completion and workspace
symbols. This is entirely implemented inside `lib/ruby_indexer`
- Companion VS Code extension that includes several integrations. The extension is entirely implemented in the `vscode`
directory
- Jekyll static documentation site. Fully implemented in `jekyll`
Expand Down
13 changes: 11 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
PATH
remote: .
specs:
ruby-lsp (0.26.9)
ruby-lsp (0.27.0.beta3)
language_server-protocol (~> 3.17.0)
prism (>= 1.2, < 2.0)
rbs (>= 3, < 5)
rubydex (~> 0.2.0, < 0.3.0)

GEM
remote: https://rubygems.org/
Expand Down Expand Up @@ -91,6 +92,10 @@ GEM
rubocop (>= 1)
ruby-progressbar (1.13.0)
ruby2_keywords (0.0.5)
rubydex (0.2.2-arm64-darwin)
rubydex (0.2.2-x64-mingw-ucrt)
rubydex (0.2.2-x86_64-darwin)
rubydex (0.2.2-x86_64-linux)
sorbet (0.6.13055)
sorbet-static (= 0.6.13055)
sorbet-runtime (0.6.13055)
Expand Down Expand Up @@ -197,9 +202,13 @@ CHECKSUMS
rubocop-rake (0.7.1) sha256=3797f2b6810c3e9df7376c26d5f44f3475eda59eb1adc38e6f62ecf027cbae4d
rubocop-shopify (2.17.1) sha256=03850eb1a9c4d1f9f0ac1d8d5aa51bb47a149e532cfb5e8d02ac6a90c8800a5f
rubocop-sorbet (0.8.7) sha256=670b7478425543e808558c5aa9acafeb5c9137af9ac8d3541b69d3d18ea4726b
ruby-lsp (0.26.9)
ruby-lsp (0.27.0.beta3)
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
ruby2_keywords (0.0.5) sha256=ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef
rubydex (0.2.2-arm64-darwin) sha256=9f8a65aef09f056ef5c9de5eef231c3f5a3c305a3e723951533223b40e7bd774
rubydex (0.2.2-x64-mingw-ucrt) sha256=40498e97f36c63f6afad6d72f7b38d4536f38b24cc26aec76967616d423dcbaf
rubydex (0.2.2-x86_64-darwin) sha256=2270f577fc9192e29111165ee7a51b692c05ede17972da389d1f0e9c2a8e6341
rubydex (0.2.2-x86_64-linux) sha256=b356fbd11401522dc6967637b3c0485827053e549303229eeb8aa669638b0885
sorbet (0.6.13055) sha256=5f5e8f37c13c281fa2b2f95e261d2e531d8331ddcc8e2dd8c4f16457935872ec
sorbet-runtime (0.6.13055) sha256=c8ae8c81310e0a28d290b11f44ddca59659b7d7f13752c0ef5d16964bbb84d18
sorbet-static (0.6.13055-universal-darwin) sha256=649c8e79a443be85318922f9ecbb46be72f6c585443f4440c4ec0fb1737c86e8
Expand Down
10 changes: 1 addition & 9 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,8 @@ Rake::TestTask.new(:test) do |t|
t.test_files = FileList["test/**/*_test.rb"].exclude("test/fixtures/prism/**/*")
end

namespace :test do
Rake::TestTask.new(:indexer) do |t|
t.libs << "test"
t.libs << "lib"
t.test_files = FileList["lib/ruby_indexer/test/**/*_test.rb"]
end
end

require "rubocop/rake_task"

RuboCop::RakeTask.new

task default: ["test:indexer", :test]
task default: :test
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.26.9
0.27.0.beta3
46 changes: 0 additions & 46 deletions exe/ruby-lsp
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,6 @@ parser = OptionParser.new do |opts|
options[:debug] = true
end

opts.on("--time-index", "Measure the time it takes to index the project") do
options[:time_index] = true
end

opts.on("--doctor", "Run troubleshooting steps") do
options[:doctor] = true
end

opts.on("--use-launcher", "[EXPERIMENTAL] Use launcher mechanism to handle missing dependencies gracefully") do
options[:launcher] = true
end
Expand Down Expand Up @@ -110,44 +102,6 @@ if options[:debug]
end
end

if options[:time_index]
index = RubyIndexer::Index.new

time_start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
index.index_all
elapsed_time = Process.clock_gettime(Process::CLOCK_MONOTONIC) - time_start

entries = index.instance_variable_get(:@entries)
entries_by_entry_type = entries.values.flatten.group_by(&:class)

puts <<~MSG
Ruby LSP v#{RubyLsp::VERSION}: Indexing took #{elapsed_time.round(5)} seconds and generated:
- #{entries_by_entry_type.sort_by { |k, _| k.to_s }.map { |k, v| "#{k.name.split("::").last}: #{v.size}" }.join("\n- ")}
MSG
return
end

if options[:doctor]
index = RubyIndexer::Index.new

if File.exist?(".index.yml")
begin
config = YAML.parse_file(".index.yml").to_ruby
rescue => e
abort("Error parsing config: #{e.message}")
end
index.configuration.apply_config(config)
end

puts "Globbing for indexable files"

index.configuration.indexable_uris.each do |uri|
puts "indexing: #{uri}"
index.index_file(uri)
end
return
end

server = RubyLsp::Server.new

# Ensure all output goes out stderr by default to allow puts/p/pp to work
Expand Down
15 changes: 0 additions & 15 deletions exe/ruby-lsp-check
Original file line number Diff line number Diff line change
Expand Up @@ -36,21 +36,6 @@ ensure
end
puts "\n"

# Indexing
puts "Verifying that indexing executes successfully. This may take a while..."

index = RubyIndexer::Index.new
uris = index.configuration.indexable_uris

uris.each_with_index do |uri, i|
index.index_file(uri)
rescue => e
errors[uri.full_path] = e
ensure
print("\033[M\033[0KIndexed #{i + 1}/#{uris.length}") unless ENV["CI"]
end
puts "\n"

if errors.empty?
puts "All operations completed successfully!"
exit
Expand Down
Loading
Loading