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.nvim is a Neovim plugin built around Onoma, the fast, language-agnostic semantic symbol indexer and fuzzy finder, which doesn't require a full language server or limit workspace-wide searches.
It provides a first-class integration into Neovim, using Snacks Picker or Telescope as the frontend for fuzzy finding semantic symbols in source code.
- Rust (
.rs) - Go (
.go) - Lua (
.lua) - Clojure (
.clj) - TypeScript (
.tsand.tsx) / JavaScript (.jsand.jsx) - Python (
.py)
540262784-6df459ec-e97d-4b95-8a97-11fb7aacecaf.mov
return {
'ryanmab/onoma.nvim',
version = '*', -- Required when using prebuilt binaries
-- Otherwise, you can build from source
-- build = 'cargo --config ./bridge/.cargo/config.toml build --release --manifest-path ./bridge/Cargo.toml'
dependencies = {
'folke/snacks.nvim',
},
event = 'VeryLazy',
config = function()
require('onoma').setup({
-- Default configuration can be found in: "lua/config.lua"
picker = { 'snacks' },
})
vim.keymap.set({ 'n', 'v', 'x' }, 'fs', Snacks.picker.get_symbols, { desc = 'Symbols', silent = true })
end,
}return {
'ryanmab/onoma.nvim',
version = '*', -- Required when using prebuilt binaries
-- Otherwise, you can build from source
-- build = 'cargo --config ./bridge/.cargo/config.toml build --release --manifest-path ./bridge/Cargo.toml'
dependencies = {
'nvim-telescope/telescope.nvim',
},
event = 'VeryLazy',
config = function()
vim.keymap.set({ 'n', 'v', 'x' }, 'fs', function()
require('telescope').extensions.onoma.get_symbols({
-- Default configuration can be found in: "lua/config.lua"
})
end, { desc = 'Symbols', silent = true })
end,
}Contributions are welcome!
The core Onoma backend contains 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.
- fff.nvim for inspiring the semantic fuzzy finder design in Onoma.
- snacks.nvim for the excellent picker frontend.
- telescope.nvim for the excellent picker frontend.
- frizbee for the high-performance SIMD implementation of fuzzy matching.