Neovim plugin for codanna semantic code search. Supports Telescope, mini.pick, and snacks.nvim pickers.
- codanna CLI
- Neovim 0.10+
- One of: snacks.nvim, telescope.nvim, or mini.pick
{
"kyleking/codanna.nvim",
dependencies = {
-- Use one of:
"folke/snacks.nvim",
-- "nvim-telescope/telescope.nvim",
-- "echasnovski/mini.pick",
},
opts = {
preferred_picker = "snacks", -- "snacks", "telescope", or "mini"
},
keys = {
{ "<leader>cs", "<cmd>CodannaSearch<cr>", desc = "Semantic Search" },
{ "<leader>cy", "<cmd>CodannaSymbols<cr>", desc = "Symbols" },
{ "<leader>cc", "<cmd>CodannaCallers<cr>", desc = "Find Callers" },
{ "<leader>cC", "<cmd>CodannaCalls<cr>", desc = "Get Calls" },
{ "<leader>ci", "<cmd>CodannaImpact<cr>", desc = "Analyze Impact" },
{ "<leader>cd", "<cmd>CodannaDocuments<cr>", desc = "Documents" },
},
}require("codanna").setup({
codanna_path = "codanna", -- Path to codanna binary
timeout_ms = 10000, -- Command timeout
cache_ttl_ms = 5000, -- Cache TTL for results
preferred_picker = nil, -- nil = auto-detect, or "snacks"/"telescope"/"mini"
})| Command | Description |
|---|---|
:CodannaSearch [query] |
Semantic code search |
:CodannaSymbols [query] |
Search indexed symbols |
:CodannaCallers [symbol] |
Find callers (uses word under cursor if no argument) |
:CodannaCalls [symbol] |
Get outgoing calls from symbol |
:CodannaImpact [symbol] |
Analyze impact of changes to symbol |
:CodannaDocuments [query] |
Search documentation |
Before using, index your project with codanna:
cd /path/to/your/project
codanna init
codanna index .Supported languages: Rust, Python, JS, TS, Go, Java, C, C++, C#, Swift, Kotlin, PHP, GDScript
make index-test-project # Clone and index codanna repo for testing
make test-telescope # Test with Telescope
make test-mini # Test with mini.pick
make test-snacks # Test with snacks.nvim
# Or test with your own project:
make test-telescope PROJECT=/path/to/your/project