Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
c8e8848
Add rubydex dependency
vinistock Feb 25, 2026
401bb9d
Upgrade rubydex to v0.1.0.beta9
vinistock Mar 18, 2026
1f90449
Start indexing and resolving Rubydex graph
vinistock Mar 3, 2026
6999276
Switch singleton class names to new style
vinistock Mar 5, 2026
2f35b7e
Migrate type inferrer to use Rubydex
vinistock Mar 18, 2026
0d07d06
Upgrade Rubydex to v0.1.0.beta10
vinistock Mar 25, 2026
dd84bc3
Partially migrate go to definition to Rubydex
vinistock Mar 20, 2026
4d8030b
Migrate workspace symbol to use Rubydex
vinistock Mar 19, 2026
fa3224e
Update graph on edits
vinistock Mar 26, 2026
24ab57c
Upgrade to Rubydex v0.1.0.beta11
vinistock Mar 27, 2026
45cadd3
Partially migrate hover to use Rubydex
vinistock Mar 23, 2026
1fb6513
Migrate rename to use Rubydex
vinistock Mar 26, 2026
26a75b0
Bump version to v0.27.0.beta1
vinistock Apr 1, 2026
bef4700
Bump rubydex to v0.1.0.beta12
vinistock Apr 15, 2026
fa77e40
Fix UTF-32 encoding in global state (#4063)
vinistock Apr 17, 2026
1750d54
Upgrade rubydex to v0.1.0.beta13
vinistock Apr 21, 2026
a3509f4
Benchmark and send telemetry events for indexing and resolution (#4074)
vinistock Apr 23, 2026
5ce73a2
Migrate test discovery to use Rubydex (#4064)
vinistock Apr 28, 2026
da674c2
Complete keyword hover with Rubydex (#4073)
vinistock Apr 30, 2026
c81bde7
Migrate type hierarchy to use Rubydex (#4072)
vinistock Apr 30, 2026
5a1aca0
Fix type inference for parent scopes and method definitions with rece…
vinistock Apr 30, 2026
ae85e44
Migrate find references to Rubydex (#4066)
vinistock Apr 30, 2026
335604e
Bump version v0.27.0.beta2
vinistock Apr 30, 2026
c6b1443
Bump rubydex to v0.2.0
vinistock May 1, 2026
26b5235
Use method receivers to narrow reference search results (#4091)
vinistock May 6, 2026
dded8c8
Upgrade rubydex to v0.2.1
vinistock May 6, 2026
95e4f88
Upgrade rubydex to v0.2.2
vinistock May 8, 2026
b2a6eff
Handle visibility in go to definition (#4095)
vinistock May 8, 2026
2d53dfa
Handle visibility in hover (#4097)
vinistock May 8, 2026
c516b6e
Partially migrate completion to Rubydex (#4096)
vinistock May 8, 2026
6fa9320
Migrate signature help to Rubydex (#4098)
vinistock May 8, 2026
040b237
Use Rubydex for method hover (#4099)
vinistock May 8, 2026
b9b9e9e
Use Rubydex for method completion resolve (#4100)
vinistock May 8, 2026
079aba7
Remove old indexer (#4101)
vinistock May 8, 2026
03d0d1f
Prevent guessed types from being anything but namespaces (#4102)
vinistock May 8, 2026
ac7088f
Bump version to v0.27.0.beta3
vinistock May 8, 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