Skip to content

ryanmab/onoma

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

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.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors