Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

201 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

ὄνομα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.

Supported Languages

  • Rust (.rs)
  • Go (.go)
  • Lua (.lua)
  • Clojure (.clj)
  • TypeScript (.ts and .tsx) / JavaScript (.js and .jsx)
  • Python (.py)

Demo

540262784-6df459ec-e97d-4b95-8a97-11fb7aacecaf.mov

Installation

Lazy.nvim

Snacks

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,
}

Telescope

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,
}

Contributing

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.

Acknowledgments

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

About

A plugin to integrate Onoma natively into Neovim, enabling fast, typo-resistant, language-agnostic symbol search with fuzzy finding in pickers.

Resources

Stars

14 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages