[](https://coveragerobot.com)
[](https://crates.io/crates/onoma)

[](https://docs.rs/onoma)
[](https://github.com/ryanmab/onoma/actions/workflows/build.yml)

> [!WARNING]
> Onoma and all of its editor integrations are still in early development. Expect bugs, breaking changes, and other
> general hiccups.
# Onoma
> **ὄνομα** — *Onoma* (pronounced `OH-no-ma`) is Greek for **“name”**, signifying not just a
> label, but the *essence* or character of a thing.
Onoma is a fast, language-agnostic semantic symbol indexer and fuzzy finder, which supports real-time
cross-language symbol matching, without needing a full language server and without applying limits
to workspace-wide queries.
It achieves this through incremental indexing with Tree-sitter and filesystem events,
and includes typo-resistant fuzzy matching with a scoring system to prioritise relevant results.
While Onoma can be used as a standalone crate, its primary goal is to act as an editor-agnostic
indexer and resolver which can be cross-compiled and integrated into text editors and IDEs.
## Supported Languages
- Rust (`.rs`)
- Go (`.go`)
- Lua (`.lua`)
- Clojure (`.clj`)
- TypeScript (`.ts` and `.tsx`) / JavaScript (`.js` and `.jsx`)
- Python (`.py`)
## Usage
### 1. Editor Integrations
> _Feel free to [open an issue](https://github.com/ryanmab/onoma/issues) with ideas for additional
> editor integrations._

Currently, Onoma is integrated with:
1. **Neovim**, using [onoma.nvim](https://github.com/ryanmab/onoma.nvim) with Snacks Picker
### 2. Standalone Crate
```toml
[dependencies]
onoma = "0.0.11"
```
#### Documentation
Full documentation is available on [docs.rs](https://docs.rs/onoma/latest/onoma/).
## Contributing
Contributions are welcome!
The core Onoma backend should contain all editor-agnostic functionality, including improvements
to indexing and fuzzy matching.
For editor-specific features or changes to bindings for a particular editor, please submit pull requests
in the respective editor repositories listed above.
### Testing
The tests can be run with:
```sh
cargo test
```
## Acknowledgments
- [fff.nvim](https://github.com/dmtrKovalenko/fff.nvim/tree/main) for inspiring the semantic fuzzy finder design in Onoma.
- [snacks.nvim](https://github.com/folke/snacks.nvim/tree/main) for the excellent picker frontend.
- [frizbee](https://github.com/saghen/frizbee) for the high-performance SIMD implementation of fuzzy matching.