Fuzzy Ruby Server
A Ruby language server designed to stay performant for large codebases. A full-text search backend gives fast, but fuzzy search results that closely approximates the behaviour of Ruby.
Features | |
---|---|
Definitions | Jump to the definitions for methods, variables, etc. |
Definition Search | Search method, class, and module definitions in a project |
Diagnostics | Indicates issues with the code |
References | Jump to an occurrence of a method, variable, etc. |
Highlights | Highlight all occurrences within a file |
Rename | Rename all occurrences within a file |
Â
Installation
The workspace and gems will be indexed automatically after installing:
VSCode
1. Install the Fuzzy Ruby Server
extension from the VSCode Marketplace.
2. Activate the extension by reloading VSCode and navigating to any .rb
file.
Neovim
1. See the nvim config example here.
Â
Features
Definitions
Peek or go to the definition of a variable, method, class, or module. If multiple definitions are found they will all be returned. Results are sorted by score so the first result automatically shown will be the closest match.
- Cmd:
Go to Definition
- Keybinds:
f12
cmd + click
- Tip: Enable the VSCode setting
Workbench > Editor: Reveal If Open
Definition Search
Search method, class, and module definitions in a project.
- Cmd:
Go to Symbol in Workspace...
- Keybind:
cmd + t
Diagnostics
Highlight issues found in static analysis.
References
See all the locations where a method/variable/symbol is being used. Only locations in the the file being edited are shown currently.
- Cmd:
Go to References
- Keybind:
shift + f12
Highlights
See all occurrences of a method/variable/symbol in the current editor.
Rename
Rename all occurrences within a file
- Cmd:
Rename Symbol
- Keybind:
f2
Â
Contributing
- Update the
command
path inextension.ts
to point to your local working directory. Target release as it's necessary or indexing is too slow.- E.g.,
command = "/Users/<user>/dev/fuzzy_ruby_vscode_client/target/release/fuzzy";
.
- E.g.,
- Run
yarn run esbuild
to compileextension.ts
. - Make Rust changes in
src
, thencargo build --release
. - Hit
F5
in VSCode to run a the extension in a new VSCode window. - Make a pull request with your changes. Thank you!
Â
Publishing
- Build an Apple Intel release binary:
cargo build --target x86_64-apple-darwin
- Build an Apple Silicon binary:
cargo build --release --target=aarch64-apple-darwin
- Build a Linux binary:
brew tap messense/macos-cross-toolchains
brew install x86_64-unknown-linux-gnu
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_LINKER=x86_64-unknown-linux-gnu-gcc cargo build --release --target=x86_64-unknown-linux-gnu
-
Copy the binaries to
bin/
-
Delete the
target
directory or the.vsix
package will be huge -
vsce package
-
Upload the new package
Â