Warning
Onoma and all of its editor integrations are still in early development. Expect bugs, breaking changes, and other general hiccups.
ὄνομα — 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.
- Rust (
.rs) - Go (
.go) - Lua (
.lua) - Clojure (
.clj) - TypeScript (
.tsand.tsx) / JavaScript (.jsand.jsx) - Python (
.py)
Feel free to open an issue with ideas for additional editor integrations.
Currently, Onoma is integrated with:
- Neovim, using onoma.nvim with Snacks Picker
[dependencies]
onoma = "0.0.7"Full documentation is available on docs.rs.
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.
The tests can be run with:
cargo test- fff.nvim for inspiring the semantic fuzzy finder design in Onoma.
- snacks.nvim for the excellent picker frontend.
- frizbee for the high-performance SIMD implementation of fuzzy matching.
