Skip to content

pheen/fuzzy_ruby_server

Repository files navigation

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

go_to_def

Definition Search

Search method, class, and module definitions in a project.

  • Cmd: Go to Symbol in Workspace...
  • Keybind: cmd + t

workspace-symbols

Diagnostics

Highlight issues found in static analysis.

diagnostics

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

references

Highlights

See all occurrences of a method/variable/symbol in the current editor.

highlight

Rename

Rename all occurrences within a file

  • Cmd: Rename Symbol
  • Keybind: f2

rename

 

Contributing

  • Update the command path in extension.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";.
  • Run yarn run esbuild to compile extension.ts.
  • Make Rust changes in src, then cargo 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

 

License

MIT

About

A Ruby language server for large codebases

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published