1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
//! # 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.13"
//! ```
//!
//! #### 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.