https://github.com/doompling/fuzzy_ruby_server
A Ruby language server for large codebases
https://github.com/doompling/fuzzy_ruby_server
language-server ruby vscode-extension
Last synced: 3 months ago
JSON representation
A Ruby language server for large codebases
- Host: GitHub
- URL: https://github.com/doompling/fuzzy_ruby_server
- Owner: doompling
- Created: 2022-07-10T01:34:50.000Z (over 3 years ago)
- Default Branch: master
- Last Pushed: 2023-11-22T19:06:31.000Z (about 2 years ago)
- Last Synced: 2025-01-28T05:28:28.177Z (12 months ago)
- Topics: language-server, ruby, vscode-extension
- Language: Rust
- Homepage:
- Size: 82.4 MB
- Stars: 212
- Watchers: 3
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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](#definitions) | Jump to the definitions for methods, variables, etc. |
| [Definition Search](#definition-search) | Search method, class, and module definitions in a project |
| [Diagnostics](#diagnostics) | Indicates issues with the code |
| [References](#references) | Jump to an occurrence of a method, variable, etc. |
| [Highlights](#highlights) | Highlight all occurrences within a file |
| [Rename](#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](https://github.com/pheen/fuzzy_ruby_server/wiki/Neomvim-Install).
## 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 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//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](https://choosealicense.com/licenses/mit/)