#fuzzy-finder #symbols #tree-sitter #semantic

onoma

A fast, language-agnostic semantic symbol indexer and typo-resistant fuzzy finder, enabling real-time search across virtually unlimited code symbols without the need for language servers

7 releases

Uses new Rust 2024

new 0.0.7 Mar 7, 2026
0.0.6 Mar 2, 2026
0.0.5 Feb 25, 2026

#495 in Development tools

Download history 52/week @ 2026-02-02 9/week @ 2026-02-09 78/week @ 2026-02-23 122/week @ 2026-03-02

209 downloads per month

MIT license

155KB
2.5K SLoC

Rust 2K SLoC // 0.0% comments Scheme 382 SLoC // 0.4% comments SQL 21 SLoC // 0.1% comments

Coverage Crates.io Version Crates.io Total Downloads docs.rs Build GitHub License

[!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 with ideas for additional editor integrations.

onoma.nvim

Currently, Onoma is integrated with:

  1. Neovim, using onoma.nvim with Snacks Picker

2. Standalone Crate

[dependencies]
onoma = "0.0.7"

Documentation

Full documentation is available on docs.rs.

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:

cargo test

Acknowledgments

  • 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.

Dependencies

~104MB
~2M SLoC