Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
53c4901
Add rubydex dependency
vinistock Feb 25, 2026
eb66333
Upgrade rubydex to v0.1.0.beta9
vinistock Mar 18, 2026
b452b2a
Start indexing and resolving Rubydex graph
vinistock Mar 3, 2026
1ec0c31
Switch singleton class names to new style
vinistock Mar 5, 2026
676f0bb
Migrate type inferrer to use Rubydex
vinistock Mar 18, 2026
eac6de8
Upgrade Rubydex to v0.1.0.beta10
vinistock Mar 25, 2026
9d91c7a
Partially migrate go to definition to Rubydex
vinistock Mar 20, 2026
9d28161
Migrate workspace symbol to use Rubydex
vinistock Mar 19, 2026
24201c6
Update graph on edits
vinistock Mar 26, 2026
01557ef
Upgrade to Rubydex v0.1.0.beta11
vinistock Mar 27, 2026
a7e39d5
Partially migrate hover to use Rubydex
vinistock Mar 23, 2026
f4ea54c
Migrate rename to use Rubydex
vinistock Mar 26, 2026
bc27a5a
Bump version to v0.27.0.beta1
vinistock Apr 1, 2026
1a7d891
Bump rubydex to v0.1.0.beta12
vinistock Apr 15, 2026
1a8e982
Fix UTF-32 encoding in global state (#4063)
vinistock Apr 17, 2026
dfb3bfc
Upgrade rubydex to v0.1.0.beta13
vinistock Apr 21, 2026
50617f9
Benchmark and send telemetry events for indexing and resolution (#4074)
vinistock Apr 23, 2026
cccca65
Migrate test discovery to use Rubydex (#4064)
vinistock Apr 28, 2026
78581cd
Complete keyword hover with Rubydex (#4073)
vinistock Apr 30, 2026
db738a7
Migrate type hierarchy to use Rubydex (#4072)
vinistock Apr 30, 2026
9f70912
Fix type inference for parent scopes and method definitions with rece…
vinistock Apr 30, 2026
30cd264
Migrate find references to Rubydex (#4066)
vinistock Apr 30, 2026
7ab5ccc
Bump version v0.27.0.beta2
vinistock Apr 30, 2026
5d4ba1e
Bump rubydex to v0.2.0
vinistock May 1, 2026
5672734
Use method receivers to narrow reference search results (#4091)
vinistock May 6, 2026
1c9147c
Upgrade rubydex to v0.2.1
vinistock May 6, 2026
194bba0
Upgrade rubydex to v0.2.2
vinistock May 8, 2026
f529ee1
Handle visibility in go to definition (#4095)
vinistock May 8, 2026
06115c8
Handle visibility in hover (#4097)
vinistock May 8, 2026
4fb6617
Partially migrate completion to Rubydex (#4096)
vinistock May 8, 2026
1e4713f
Migrate signature help to Rubydex (#4098)
vinistock May 8, 2026
b1460fa
Use Rubydex for method hover (#4099)
vinistock May 8, 2026
a29ca84
Use Rubydex for method completion resolve (#4100)
vinistock May 8, 2026
4d3347a
Remove old indexer (#4101)
vinistock May 8, 2026
68d6228
Prevent guessed types from being anything but namespaces (#4102)
vinistock May 8, 2026
7112886
Bump version to v0.27.0.beta3
vinistock May 8, 2026
d6b3268
Make percentage optional when starting progress notifications
vinistock Jun 15, 2026
07bfbc8
Show progress when running incremental indexing and resolution
vinistock Jun 15, 2026
1f0fce3
Upgrade Rubydex to v0.2.7
vinistock Jul 2, 2026
b932e88
Load rubydex default config on boot
vinistock Jul 2, 2026
bf42921
Fix completion API usage for newest Rubydex
vinistock Jul 2, 2026
012b5ee
Include method alias target comments in documentation
vinistock Jul 2, 2026
f353271
Unskip visibility related completion tests
vinistock Jul 2, 2026
d068b53
Bump version to v0.27.0.beta4
vinistock Jul 3, 2026
329a4ca
Upgrade rubydex to v0.2.8
vinistock Jul 8, 2026
5112c96
Upgrade rubydex to v0.3.0
vinistock Jul 24, 2026
19e1a18
Upgrade rubydex to v0.4.0
vinistock Aug 21, 2026
243bbbb
Handle rubydex v0.4.0 breaking changes
vinistock Aug 21, 2026
5caacd3
Bump version to v0.27.0.beta5
vinistock Aug 21, 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
15 changes: 12 additions & 3 deletions Gemfile.lock
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
PATH
remote: .
specs:
ruby-lsp (0.26.11)
ruby-lsp (0.27.0.beta5)
language_server-protocol (~> 3.17.0)
prism (>= 1.2, < 2.0)
rbs (>= 3, < 5)
rubydex (>= 0.4.0, < 0.5.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.4.0-arm64-darwin)
rubydex (0.4.0-x64-mingw-ucrt)
rubydex (0.4.0-x86_64-darwin)
rubydex (0.4.0-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.11)
ruby-lsp (0.27.0.beta5)
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
ruby2_keywords (0.0.5) sha256=ffd13740c573b7301cf7a2e61fc857b2a8e3d3aff32545d6f8300d8bae10e3ef
rubydex (0.4.0-arm64-darwin) sha256=badbb7d1a7cfc03f1f7ce9fdc5ee414c729812c4b2eaa2bfe7da80d9a3a8b4b6
rubydex (0.4.0-x64-mingw-ucrt) sha256=7becaee5f1d89bdbea031daecbd46137f03e30e9e218f19cc03a538865830ba5
rubydex (0.4.0-x86_64-darwin) sha256=173bfdad227f4f53aaaab5cdf75d4ebd39c4532a8e7a568b3d8530317a273c3a
rubydex (0.4.0-x86_64-linux) sha256=75a4e1c6c4691ff815aee820dd26fb080f8053430a0ad248dd9b3125d621df86
sorbet (0.6.13055) sha256=5f5e8f37c13c281fa2b2f95e261d2e531d8331ddcc8e2dd8c4f16457935872ec
sorbet-runtime (0.6.13055) sha256=c8ae8c81310e0a28d290b11f44ddca59659b7d7f13752c0ef5d16964bbb84d18
sorbet-static (0.6.13055-universal-darwin) sha256=649c8e79a443be85318922f9ecbb46be72f6c585443f4440c4ec0fb1737c86e8
Expand All @@ -218,4 +227,4 @@ CHECKSUMS
yard-sorbet (0.9.0) sha256=03d1aa461b9e9c82b886919a13aa3e09fcf4d1852239d2967ed97e92723ffe21

BUNDLED WITH
4.0.3
4.0.6
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.11
0.27.0.beta5
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