Complete reference for every plugin in this Neovim configuration. All plugins are managed by lazy.nvim.
| Plugin | Category | Load Event | Config File |
|---|---|---|---|
nvim-lua/plenary.nvim |
Core Infrastructure | Dependency | telescope.lua, editor.lua, lang-elixir.lua |
neovim/nvim-lspconfig |
LSP & Completion | BufReadPre, BufNewFile |
lsp.lua |
williamboman/mason.nvim |
LSP & Completion | Mason / MasonInstall cmd |
lsp.lua |
williamboman/mason-lspconfig.nvim |
LSP & Completion | Dependency | lsp.lua |
WhoIsSethDaniel/mason-tool-installer.nvim |
LSP & Completion | Dependency | lsp.lua |
saghen/blink.cmp |
LSP & Completion | InsertEnter |
completion.lua |
folke/lazydev.nvim |
LSP & Completion | ft = lua |
lsp.lua |
Bilal2453/luvit-meta |
LSP & Completion | Lazy (dependency) | lsp.lua |
L3MON4D3/LuaSnip |
LSP & Completion | Dependency of blink.cmp | completion.lua |
j-hui/fidget.nvim |
LSP & Completion | -- | -- |
nvim-treesitter/nvim-treesitter |
Syntax & Code Intelligence | Eager (lazy = false) |
treesitter.lua |
nvim-treesitter/nvim-treesitter-textobjects |
Syntax & Code Intelligence | Dependency | treesitter.lua |
folke/todo-comments.nvim |
Syntax & Code Intelligence | BufReadPost, BufNewFile |
editor.lua |
nvim-telescope/telescope.nvim |
Search & Navigation | Telescope cmd / keys |
telescope.lua |
nvim-telescope/telescope-fzf-native.nvim |
Search & Navigation | Dependency | telescope.lua |
nvim-telescope/telescope-live-grep-args.nvim |
Search & Navigation | Dependency | telescope.lua |
nvim-tree/nvim-tree.lua |
Search & Navigation | NvimTreeToggle / NvimTreeFindFile cmd / keys |
navigation.lua |
cbochs/grapple.nvim |
Search & Navigation | Keys | navigation.lua |
stevearc/oil.nvim |
Search & Navigation | Oil cmd / keys |
oil.lua |
folke/flash.nvim |
Search & Navigation | VeryLazy / keys |
flash.lua |
folke/which-key.nvim |
Editor Enhancement | VeryLazy |
editor.lua |
windwp/nvim-autopairs |
Editor Enhancement | InsertEnter |
editor.lua |
brenoprata10/nvim-highlight-colors |
Editor Enhancement | BufReadPost, BufNewFile |
editor.lua |
echasnovski/mini.nvim |
Editor Enhancement | Eager | mini.lua |
mbbill/undotree |
Editor Enhancement | UndotreeToggle cmd / keys |
undotree.lua |
lewis6991/gitsigns.nvim |
Git | BufReadPre, BufNewFile |
git.lua |
tpope/vim-fugitive |
Git | Git cmd / keys |
git.lua |
stevearc/conform.nvim |
Formatting & Linting | BufWritePre / ConformInfo cmd / keys |
formatting.lua |
mfussenegger/nvim-lint |
Formatting & Linting | BufReadPre, BufNewFile |
linting.lua |
folke/tokyonight.nvim |
UI & Appearance | Eager (priority 1000) | colorscheme.lua |
catppuccin/nvim |
UI & Appearance | Eager | colorscheme.lua |
rose-pine/neovim |
UI & Appearance | Eager | colorscheme.lua |
rebelot/kanagawa.nvim |
UI & Appearance | Eager | colorscheme.lua |
sainnhe/everforest |
UI & Appearance | Eager | colorscheme.lua |
folke/snacks.nvim |
UI & Appearance | Eager (lazy = false, priority 1000) |
snacks.lua |
nvim-tree/nvim-web-devicons |
UI & Appearance | Dependency | telescope.lua, navigation.lua |
nickjvandyke/opencode.nvim |
AI | Keys | opencode.lua |
mrcjkb/rustaceanvim |
Language-Specific | Eager (lazy = false) |
lang-rust.lua |
elixir-tools/elixir-tools.nvim |
Language-Specific | BufReadPre, BufNewFile |
lang-elixir.lua |
ricardoramirezr/blade-nav.nvim |
Language-Specific | ft = blade, php |
lang-php.lua |
3rd/image.nvim |
Media & Preview | VeryLazy |
image.lua |
iamcco/markdown-preview.nvim |
Media & Preview | ft = markdown / cmd / keys |
markdown-preview.lua |
- GitHub: nvim-lua/plenary.nvim
- Purpose: General-purpose Lua utility library for Neovim. Provides async primitives, path utilities, testing helpers, and other foundational functions used by many plugins.
- Loading strategy: Loaded as a dependency of telescope.nvim, todo-comments.nvim, and elixir-tools.nvim. Never loaded on its own.
- Dependencies: None.
- Key configuration choices: None -- used as-is with default settings.
- Keybindings: None.
-
GitHub: neovim/nvim-lspconfig
-
Purpose: Quickstart configurations for the Neovim built-in LSP client. Provides sensible defaults for dozens of language servers, reducing boilerplate setup.
-
Loading strategy: Lazy-loaded on events
BufReadPreandBufNewFileso it activates as soon as a real file is opened. -
Dependencies:
williamboman/mason.nvimwilliamboman/mason-lspconfig.nvimWhoIsSethDaniel/mason-tool-installer.nvimfolke/lazydev.nvimBilal2453/luvit-meta
-
Key configuration choices:
- Broadcasts
blink.cmpcapabilities to every LSP server viavim.lsp.config("*", { capabilities }), ensuring completion sources are available everywhere. - On
LspAttach, sets up buffer-local keymaps that integrate with Telescope for definitions, references, implementations, symbols, and diagnostics. - Highlights references under the cursor on
CursorHoldwhen the server supportstextDocument/documentHighlight, and clears them on cursor movement. - Supports toggling inlay hints via
<leader>thwhen the server supportstextDocument/inlayHint. - Mason tool installer ensures a curated set of LSP servers, formatters, and linters are always installed:
lua-language-server,gopls,pyright,typescript-language-server,deno,clangd,tailwindcss-language-server,eslint-lsp,phpactor,stylua,clang-format,prettierd,ruff,golangci-lint. mason-lspconfigusesautomatic_enablewithrust_analyzer,rescriptls, andstylua_lspexcluded (Rust is handled by rustaceanvim instead).
- Broadcasts
-
Keybindings (buffer-local on LspAttach):
Key Mode Description gdn Go to definition (Telescope) grn Go to references (Telescope) gIn Go to implementation (Telescope) gDn Go to declaration <leader>Dn Type definition (Telescope) <leader>dsn Document symbols (Telescope) <leader>wsn Workspace symbols (Telescope) <leader>rnn Rename symbol <leader>can, x Code action <leader>thn Toggle inlay hints
- GitHub: williamboman/mason.nvim
- Purpose: Portable package manager for Neovim that installs and manages LSP servers, DAP servers, linters, and formatters.
- Loading strategy: Lazy-loaded on commands
MasonandMasonInstall. Also set up programmatically inside the lspconfigconfigfunction. - Dependencies: None.
- Key configuration choices: Uses default configuration (
config = true). - Keybindings: None (use
:Masoncommand to open the UI).
- GitHub: williamboman/mason-lspconfig.nvim
- Purpose: Bridges mason.nvim and nvim-lspconfig, automatically enabling LSP servers that Mason installs.
- Loading strategy: Loaded as a dependency of nvim-lspconfig.
- Dependencies:
mason.nvim,nvim-lspconfig. - Key configuration choices:
automatic_enableis on, meaning any Mason-installed server is automatically started.- Excludes
rust_analyzer(managed by rustaceanvim),rescriptls, andstylua_lspfrom automatic enable.
- Keybindings: None.
- GitHub: WhoIsSethDaniel/mason-tool-installer.nvim
- Purpose: Ensures a specific list of Mason tools (servers, formatters, linters) are always installed, acting as a declarative manifest.
- Loading strategy: Loaded as a dependency of nvim-lspconfig.
- Dependencies:
mason.nvim. - Key configuration choices:
ensure_installedlist covers:- LSP servers: lua-language-server, gopls, pyright, typescript-language-server, deno, clangd, tailwindcss-language-server, eslint-lsp, phpactor
- Formatters: stylua, clang-format, prettierd
- Linters: ruff, golangci-lint
- Keybindings: None.
-
GitHub: saghen/blink.cmp
-
Purpose: Fast, modern autocompletion engine for Neovim. Provides fuzzy matching, snippet expansion, and multiple completion sources with a lightweight footprint.
-
Loading strategy: Lazy-loaded on
InsertEnter. Pinned to version1.*. -
Dependencies:
L3MON4D3/LuaSnip(v2.*, builds withmake install_jsregexpon non-Windows)
-
Key configuration choices:
- Uses
luasnipas the snippet preset. - Custom keymap preset (
"none") with explicit bindings for navigation, acceptance, and snippet traversal. - Auto-brackets enabled on accept.
- Documentation auto-shows on completion.
- Completion sources:
lsp,snippets,path,buffer(default); addslazydevfor Lua files andblade-navfor blade/php files. - Custom providers registered for
LazyDev(score offset 100 to prioritize) andBlade.
- Uses
-
Keybindings (insert mode, during completion):
Key Action <C-n>/<Down>Select next item <C-p>/<Up>Select previous item <C-b>Scroll documentation up <C-f>Scroll documentation down <Tab>/<C-y>Select and accept <C-Space>Show completion menu <C-e>Hide completion menu <C-l>Jump to next snippet placeholder <C-h>Jump to previous snippet placeholder
- GitHub: L3MON4D3/LuaSnip
- Purpose: Snippet engine written in Lua. Provides programmable snippets with dynamic nodes, choice nodes, and regex triggers.
- Loading strategy: Loaded as a dependency of blink.cmp. Pinned to version
v2.*. - Dependencies: None.
- Key configuration choices: Builds
jsregexpviamake install_jsregexpon platforms that support it (skipped on Windows or whenmakeis unavailable). - Keybindings: Snippet traversal is handled by blink.cmp (
<C-l>forward,<C-h>backward).
- GitHub: folke/lazydev.nvim
- Purpose: Provides proper completion and type annotations for the Neovim Lua API, plugin APIs, and
vim.uv(libuv bindings) when editing Lua files. - Loading strategy: Lazy-loaded on filetype
lua. - Dependencies:
Bilal2453/luvit-meta(provides libuv type definitions). - Key configuration choices:
- Library includes
luvit-meta/librarytriggered by the patternvim%.uv, so libuv types are only loaded when relevant. - Integrated into blink.cmp as a custom provider with
score_offset = 100to prioritize Neovim API completions over generic Lua completions.
- Library includes
- Keybindings: None.
- GitHub: Bilal2453/luvit-meta
- Purpose: Provides Lua type definitions for libuv (the async I/O library underlying
vim.uv), enabling accurate completions and hover docs. - Loading strategy:
lazy = true-- only loaded when lazydev.nvim requests it. - Dependencies: None.
- Key configuration choices: None.
- Keybindings: None.
- GitHub: nvim-treesitter/nvim-treesitter
- Purpose: Provides incremental parsing via Tree-sitter, enabling accurate syntax highlighting, indentation, code folding, and the foundation for textobjects and other structural code features.
- Loading strategy: Eager (
lazy = false). Runs:TSUpdateon build. - Dependencies:
nvim-treesitter/nvim-treesitter-textobjects
- Key configuration choices:
- Registers the
bladefiletype for treesitter. - Adds a compatibility shim for
blade-nav.nvimwhich relies on the removedparsers.get_parserAPI. ensure_installedcovers 20 languages: bash, c, cpp, css, diff, elixir, go, html, javascript, json, lua, luadoc, markdown, markdown_inline, php, python, query, rust, svelte, typescript, vim, vimdoc.auto_install = trueso any unrecognized filetype triggers parser installation.- Both
highlightandindentmodules are enabled.
- Registers the
- Keybindings: None directly (textobject keymaps are defined via treesitter-textobjects below).
-
Purpose: Adds Tree-sitter-aware textobjects for selecting, moving between, and swapping code structures like functions, classes, parameters, and loops.
-
Loading strategy: Loaded as a dependency of nvim-treesitter.
-
Dependencies:
nvim-treesitter. -
Key configuration choices:
select.lookahead = trueso textobject selections look ahead to the next match if the cursor is not currently inside one.- Defines select, move, and swap operations via manual keymap registration (not through the deprecated nvim-treesitter
setup()textobjects table).
-
Keybindings:
Selection (visual/operator-pending mode):
Key Textobject afFunction (outer) ifFunction (inner) acClass (outer) icClass (inner) aaParameter (outer) iaParameter (inner) alLoop (outer) ilLoop (inner) Movement (normal/visual/operator-pending mode):
Key Description ]fNext function start [fPrevious function start ]cNext class start [cPrevious class start ]aNext argument [aPrevious argument Swap (normal mode):
Key Description <leader>xaSwap with next argument <leader>xASwap with previous argument
- GitHub: folke/todo-comments.nvim
- Purpose: Highlights and searches for TODO, FIXME, HACK, NOTE, and other comment annotations across the project. Integrates with Telescope and quickfix for navigation.
- Loading strategy: Lazy-loaded on events
BufReadPostandBufNewFile. - Dependencies:
nvim-lua/plenary.nvim. - Key configuration choices:
signs = falsedisables sign column indicators for todo comments, keeping the gutter clean.
- Keybindings: None defined in config (uses built-in commands like
:TodoTelescope).
-
GitHub: nvim-telescope/telescope.nvim
-
Purpose: Highly extensible fuzzy finder for files, buffers, grep results, LSP symbols, and more. The central search interface for the entire configuration.
-
Loading strategy: Lazy-loaded on the
Telescopecommand and via numerouskeysmappings. -
Dependencies:
nvim-lua/plenary.nvimnvim-telescope/telescope-fzf-native.nvim(conditional onmakebeing available)nvim-tree/nvim-web-devicons(conditional onvim.g.nerd_font)nvim-telescope/telescope-live-grep-args.nvim(enables rg flags in live grep prompt)
-
Key configuration choices:
file_ignore_patternsexcludesnode_modules/,.git/,*.lock,dist/,build/,target/,vendor/, and*.min.jsfor faster searches.sorting_strategy = "ascending"withprompt_position = "top"for a top-down layout.path_display = { "truncate" }to keep results readable.- Preview limited to files under 1MB with a 250ms timeout.
- FZF extension loaded with smart_case and overrides for both generic and file sorters.
live_grep_argsextension loaded withauto_quoting = trueand insert-mode shortcuts:Ctrl+k(quote prompt),Ctrl+t(quote +-ttype filter),Ctrl+i(quote +--iglobglob filter).
-
Keybindings:
Key Mode Description <leader>shn Search help tags <leader>skn Search keymaps <leader>safn Search all files (find_files) <leader>sfn Search git files <leader>ssn Search Telescope builtins <leader>swn Search current word (grep_string) <leader>sgn Search by grep (live_grep_args — supports rg flags like -tlua,--iglob)<leader>sGn Search by grep (include ignored/hidden) <leader>sDn Search directory (scoped grep with rg arg support) <leader>sdn Search diagnostics (vertical layout) <leader>srn Resume last search <leader>s.n Search recent files <leader><leader>n Find existing buffers <leader>/n Fuzzy search in current buffer (dropdown) <leader>s/n Live grep in open files <leader>snn Search Neovim config files <leader>sFn Find files in a prompted directory
- GitHub: nvim-telescope/telescope-fzf-native.nvim
- Purpose: C-compiled FZF sorter for Telescope that dramatically improves fuzzy matching performance compared to the default Lua sorter.
- Loading strategy: Built with
makeand loaded as a Telescope extension. Conditional onmakebeing available on the system. - Dependencies:
telescope.nvim. - Key configuration choices:
fuzzy = true,override_generic_sorter = true,override_file_sorter = true,case_mode = "smart_case".
- Keybindings: None.
- GitHub: nvim-telescope/telescope-live-grep-args.nvim
- Purpose: Telescope extension that allows passing ripgrep arguments directly in the live grep prompt, enabling file type filtering (
-tlua), glob patterns (--iglob *.py), and other rg flags without leaving the picker. - Loading strategy: Loaded as a dependency of telescope.nvim. Pinned to version
^1.0.0. - Dependencies:
telescope.nvim. - Key configuration choices:
auto_quoting = true-- automatically quotes the search term so rg flags are parsed correctly.- Insert-mode mappings inside the picker:
Ctrl+k-- quote the prompt (general purpose).Ctrl+t-- quote the prompt + append-tfor file type filtering.Ctrl+i-- quote the prompt + append--iglobfor glob filtering.
- Keybindings: None directly (used via
<leader>sgand<leader>sD).
-
GitHub: nvim-tree/nvim-tree.lua
-
Purpose: File explorer sidebar with tree view. Provides a visual directory structure for browsing, creating, renaming, and deleting files.
-
Loading strategy: Lazy-loaded on commands
NvimTreeToggleandNvimTreeFindFile, and on key mappings. Pinned to latest stable version (version = "*"). -
Dependencies:
nvim-tree/nvim-web-devicons. -
Key configuration choices:
- Case-sensitive sorting.
- Tree view width of 30 columns.
- Empty directories are grouped together (
group_empty = true). - Dotfiles are hidden by default (
filters.dotfiles = true).
-
Keybindings:
Key Mode Description <leader>fjn Toggle file tree <leader>ffn Find current file in tree
-
GitHub: cbochs/grapple.nvim
-
Purpose: Fast file tagging and switching. Allows marking files for quick access, similar to harpoon but with git-scoped tags and a numbered quick-select interface.
-
Loading strategy: Lazy-loaded on key mappings.
-
Dependencies:
nvim-tree/nvim-web-devicons. -
Key configuration choices:
scope = "git"-- tags are scoped to the current git repository.quick_select = "123456789"-- number keys for quick tag selection in the tags window.
-
Keybindings:
Key Mode Description <leader>han Toggle tag on current file <leader>hfn Open tags finder <C-n>n Cycle to next tagged file <C-p>n Cycle to previous tagged file
-
GitHub: stevearc/oil.nvim
-
Purpose: File explorer that lets you edit your filesystem like a buffer. Navigate directories, rename files by editing text, and create/delete files with normal Vim operations.
-
Loading strategy: Lazy-loaded on the
Oilcommand and on key mappings. -
Dependencies: None.
-
Key configuration choices:
default_file_explorer = false-- does not replace netrw (nvim-tree is used as the default tree explorer).show_hidden = truein view options.- Float window with padding of 4, max width 120, max height 40.
qmapped to close,<C-s>unmapped (to avoid overriding split keybinding).
-
Keybindings:
Key Mode Description -n Open parent directory in Oil qn Close Oil buffer (inside Oil)
-
GitHub: folke/flash.nvim
-
Purpose: Enhanced motion plugin that uses labels for lightning-fast jumps to any visible location. Supports character-based jumps, treesitter-aware selection, and remote operations.
-
Loading strategy: Lazy-loaded on
VeryLazyevent and on key mappings. -
Dependencies: None.
-
Key configuration choices:
char.jump_labels = true-- shows labels on f/F/t/T motions.search.enabled = false-- does not integrate with/search (search remains vanilla).
-
Keybindings:
Key Mode Description sn, x, o Flash jump Sn, x, o Flash treesitter selection ro Remote flash (operator-pending) Ro, x Treesitter search
- GitHub: folke/which-key.nvim
- Purpose: Displays a popup with available keybindings as you type a prefix key, helping discover and remember mappings.
- Loading strategy: Lazy-loaded on
VeryLazy. - Dependencies: None.
- Key configuration choices:
- Icon mappings controlled by
vim.g.nerd_font(uses icons only when a Nerd Font is available). - Defines group labels for key prefixes:
<leader>c(Code),<leader>d(Document),<leader>r(Rename),<leader>s(Search),<leader>w(Workspace),<leader>t(Toggle),<leader>h(Grapple).
- Icon mappings controlled by
- Keybindings: None directly (it annotates other keybindings).
- GitHub: windwp/nvim-autopairs
- Purpose: Automatically inserts matching closing brackets, parentheses, quotes, and other paired characters when you type the opening one.
- Loading strategy: Lazy-loaded on
InsertEnter. - Dependencies: None.
- Key configuration choices: Uses default configuration (
config = true). - Keybindings: None (operates automatically in insert mode).
- GitHub: brenoprata10/nvim-highlight-colors
- Purpose: Highlights color codes (hex, rgb, hsl, named colors) inline in the buffer so you can visually see what color a value represents.
- Loading strategy: Lazy-loaded on events
BufReadPostandBufNewFile. - Dependencies: None.
- Key configuration choices:
render = "virtual"-- displays colors as virtual text rather than background highlights.enable_tailwind = false-- Tailwind CSS color class detection is disabled.
- Keybindings: None.
- GitHub: echasnovski/mini.nvim
- Purpose: Collection of minimal, focused Lua modules. This configuration uses three modules:
mini.ai(extended textobjects),mini.surround(surround operations), andmini.statusline(status line). - Loading strategy: Eager (no lazy loading specified).
- Dependencies: None.
- Key configuration choices:
- mini.ai:
n_lines = 500-- searches up to 500 lines for textobject matches (extends thea/itextobject family with bracket-aware, argument-aware selections). - mini.surround: Default configuration -- adds
sa(add surrounding),sd(delete surrounding),sr(replace surrounding),sf(find surrounding),sF(find surrounding left),sh(highlight surrounding). - mini.statusline: Uses icons when
vim.g.nerd_fontis set. Overridessection_locationto showline:columnin a compact%2l:%-2vformat.
- mini.ai:
- Keybindings: mini.surround defaults (
sa,sd,sr,sf,sF,shin normal/visual modes). mini.ai textobjects are available via standarda/imotions.
-
GitHub: mbbill/undotree
-
Purpose: Visualizes the Vim undo history as a tree, allowing you to navigate and restore any previous state, including branches that linear undo cannot reach.
-
Loading strategy: Lazy-loaded on the
UndotreeTogglecommand and key mapping. -
Dependencies: None.
-
Key configuration choices:
undotree_SetFocusWhenToggle = 1-- automatically focuses the undotree window when toggled.undotree_WindowLayout = 2-- uses layout 2 (tree on the left, diff below).undotree_ShortIndicators = 1-- uses short time indicators to save space.
-
Keybindings:
Key Mode Description <leader>un Toggle Undotree
- GitHub: lewis6991/gitsigns.nvim
- Purpose: Adds git change indicators in the sign column (added, modified, deleted lines) and provides inline blame, hunk staging, and other git operations without leaving the editor.
- Loading strategy: Lazy-loaded on events
BufReadPreandBufNewFile. - Dependencies: None.
- Key configuration choices:
- Custom sign characters:
+(add),~(change),_(delete),‾(top delete),~(change-delete).
- Custom sign characters:
- Keybindings: None explicitly defined (gitsigns provides many default keymaps via its own setup).
-
GitHub: tpope/vim-fugitive
-
Purpose: Comprehensive Git wrapper for Vim. Provides
:Gitcommand for any git operation, plus specialized views for status, blame, diff, log, and merge conflict resolution. -
Loading strategy: Lazy-loaded on the
Gitcommand and key mapping. -
Dependencies: None.
-
Keybindings:
Key Mode Description <leader>gsn Open Git status
-
GitHub: stevearc/conform.nvim
-
Purpose: Lightweight formatting engine that runs external formatters and falls back to LSP formatting. Supports format-on-save with per-filetype formatter configuration.
-
Loading strategy: Lazy-loaded on
BufWritePre(for format-on-save), theConformInfocommand, and key mapping. -
Dependencies: None.
-
Key configuration choices:
notify_on_error = false-- suppresses error notifications from failed formatters.- Format-on-save enabled with 500ms timeout. Falls back to LSP formatting except for C/C++ files where LSP formatting is explicitly disabled (
"never"). - Formatters by filetype:
lua->styluac++/cpp->clang-formatjavascript/typescript->prettierdthenprettier(stop after first success)php->pintthenphp_cs_fixer(stop after first success)
-
Keybindings:
Key Mode Description <leader>fall modes Format buffer (async, LSP fallback)
- GitHub: mfussenegger/nvim-lint
- Purpose: Asynchronous linting engine that runs external linters and populates the diagnostics list. Complements LSP diagnostics with tool-specific checks.
- Loading strategy: Lazy-loaded on events
BufReadPreandBufNewFile. - Dependencies: None.
- Key configuration choices:
- Linters by filetype:
python->ruffgo->golangcilint
- Linting triggers on
BufWritePost,InsertLeave, andBufReadPost-- only for normal buffers (buftype == "").
- Linters by filetype:
- Keybindings: None.
-
GitHub: folke/tokyonight.nvim
-
Purpose: Clean, dark colorscheme with multiple style variants (night, storm, day, moon). Also serves as the primary colorscheme loader for this configuration.
-
Loading strategy: Eager with
priority = 1000to ensure it loads before any UI rendering. Theinitfunction applies the saved theme from~/.local/share/nvim/theme.txt(defaults tocatppuccin-mocha). -
Dependencies: None.
-
Key configuration choices:
style = "night"variant.- Custom highlight override: comments are rendered in orange.
- Theme persistence: the selected theme is saved to
theme.txtin the Neovim data directory and restored on startup. - Theme picker uses Telescope's colorscheme picker with live preview; selected themes are persisted.
-
Keybindings:
Key Mode Description <leader>ttn Open theme picker (Telescope with preview, saves selection)
- GitHub: catppuccin/nvim
- Purpose: Soothing pastel colorscheme with multiple flavors (latte, frappe, macchiato, mocha). The default theme for this configuration (
catppuccin-mocha). - Loading strategy: Eager (loaded at startup to be available for the theme picker).
- Dependencies: None.
- Key configuration choices:
no_italic = true-- disables all italic styling.
- Keybindings: None.
- GitHub: rose-pine/neovim
- Purpose: Elegant, low-contrast colorscheme inspired by natural tones with dawn, moon, and main variants.
- Loading strategy: Eager.
- Dependencies: None.
- Key configuration choices:
disable_italics = true-- disables italic styling.
- Keybindings: None.
- GitHub: rebelot/kanagawa.nvim
- Purpose: Colorscheme inspired by the famous painting "The Great Wave off Kanagawa" with wave, dragon, and lotus variants.
- Loading strategy: Eager.
- Dependencies: None.
- Key configuration choices:
compile = true-- pre-compiles the theme for faster startup.commentStyle = { italic = false }-- comments are not italic.keywordStyle = { italic = false }-- keywords are not italic.
- Keybindings: None.
- GitHub: sainnhe/everforest
- Purpose: Green-toned comfortable colorscheme designed to be easy on the eyes during long coding sessions.
- Loading strategy: Eager.
- Dependencies: None.
- Key configuration choices:
everforest_disable_italic_comment = 1-- disables italic comments (consistent with all other themes in this config).
- Keybindings: None.
-
GitHub: folke/snacks.nvim
-
Purpose: Swiss-army-knife utility plugin providing notifications, input prompts, lazygit integration, floating terminal, and big file detection in a single, cohesive package.
-
Loading strategy: Eager (
lazy = false,priority = 1000). -
Dependencies: None.
-
Key configuration choices:
- Notifier: Enabled with notification width range of 60-100 characters. Notification history window is 90% width and height with word wrap.
- Input: Enabled (replaces
vim.ui.inputwith a snacks-styled prompt). - Lazygit: Enabled with fullscreen window (
width = 0,height = 0). - Bigfile: Enabled (disables expensive features like treesitter and LSP for large files).
- Terminal: Floating window with rounded border, 80% width and height.
-
Keybindings:
Key Mode Description <C-\>n, t Toggle floating terminal <leader>nhn Show notification history <leader>ggn Open Lazygit
- GitHub: nvim-tree/nvim-web-devicons
- Purpose: Provides filetype-specific icons (Nerd Font glyphs) used by Telescope, nvim-tree, grapple, and the statusline.
- Loading strategy: Loaded as a dependency. Conditionally enabled based on
vim.g.nerd_font. - Dependencies: None.
- Key configuration choices: None (default icon set).
- Keybindings: None.
-
GitHub: NickvanDyke/opencode.nvim
-
Purpose: Integrates the opencode CLI tool into Neovim. Shares editor context (buffers, selections, diagnostics) with the AI assistant and embeds the opencode TUI as a full-screen float.
-
Loading strategy: Lazy-loaded on key mappings. Pinned to latest stable (
version = "*"). -
Dependencies:
folke/snacks.nvim(uses snacks.terminal for the embedded TUI). -
Key configuration choices:
- Uses the snacks provider to embed the opencode TUI as a floating terminal.
- Float window: 95% width/height, rounded border, opaque backdrop, auto-enter on toggle.
- Scrollback disabled (
scrollback = 0) to prevent the terminal buffer from scrolling past the TUI. VimLeavePreautocmd callsopencode.stop()to clean up the server process on exit.- Context placeholders (
@this,@buffer,@diagnostics, etc.) inject editor state into prompts.
-
Keybindings:
Key Mode Description <leader>aan, t Toggle opencode TUI <leader>aav Ask opencode about visual selection <leader>amn Open opencode menu (prompts, commands) -
Prerequisite: The
opencodeCLI must be installed and configured separately (provider/API key setup is done in opencode's own config, not in Neovim).
- GitHub: mrcjkb/rustaceanvim
- Purpose: Comprehensive Rust development plugin that manages rust-analyzer, provides enhanced hover actions, runnables, debuggables, crate graph visualization, and other Rust-specific features beyond what generic LSP provides.
- Loading strategy: Eager (
lazy = false). Pinned to version^8. The plugin auto-detects Rust files and attaches automatically. - Dependencies: None (manages rust-analyzer independently; excluded from mason-lspconfig's
automatic_enable). - Key configuration choices: Uses defaults -- the plugin is designed to work out of the box with minimal configuration.
- Keybindings: None defined explicitly (rustaceanvim provides its own default keymaps on attach).
-
GitHub: elixir-tools/elixir-tools.nvim
-
Purpose: All-in-one Elixir development plugin providing NextLS and ElixirLS integration, pipe manipulation commands, macro expansion, and projectionist support.
-
Loading strategy: Lazy-loaded on events
BufReadPreandBufNewFile. Pinned to latest stable (version = "*"). -
Dependencies:
nvim-lua/plenary.nvim. -
Key configuration choices:
- NextLS: Enabled (
enable = true) -- modern Elixir language server. - ElixirLS: Enabled with
dialyzerEnabled = false(saves resources) andenableTestLenses = false. - Projectionist: Enabled for alternate file navigation.
- Keymaps set on
on_attachfor Elixir-specific operations.
- NextLS: Enabled (
-
Keybindings (buffer-local, Elixir files only):
Key Mode Description <leader>expn Convert from pipe syntax <leader>exon Convert to pipe syntax <leader>exmv Expand macro
- GitHub: ricardoramirezr/blade-nav.nvim
- Purpose: Provides navigation and completion support for Laravel Blade templates, enabling goto-definition for components, includes, and other Blade directives.
- Loading strategy: Lazy-loaded on filetypes
bladeandphp. - Dependencies:
saghen/blink.cmp(integrates as a blink.cmp completion source). - Key configuration choices: None (default configuration). Registered as a blink.cmp provider in
completion.lua. - Keybindings: None.
- GitHub: 3rd/image.nvim
- Purpose: Displays images directly inside the Neovim terminal using the Kitty graphics protocol. Supports inline image rendering in markdown files and direct image file viewing.
- Loading strategy: Lazy-loaded on
VeryLazy. Build is disabled (build = false). - Dependencies: None (requires Kitty terminal and ImageMagick externally).
- Key configuration choices:
backend = "kitty"-- uses the Kitty terminal graphics protocol.processor = "magick_cli"-- uses the ImageMagick CLI for image processing.- Hijacks file patterns:
*.png,*.jpg,*.jpeg,*.gif,*.webp,*.avif,*.svg. max_height_window_percentage = 50-- images take at most half the window height.window_overlap_clear_enabled = true-- clears images when windows overlap.- Markdown integration enabled with remote image downloading.
- Custom SVG support: intercepts
*.svg/*.svgzfiles viaBufReadCmd, converts to PNG using ImageMagick at 300 DPI with transparent background, and displays the result. Temporary PNG files are cleaned up on buffer close.
- Keybindings: None.
-
GitHub: iamcco/markdown-preview.nvim
-
Purpose: Live markdown preview in the browser. Opens a local web server that renders markdown with live reload as you edit.
-
Loading strategy: Lazy-loaded on filetype
markdownand commandsMarkdownPreviewToggle,MarkdownPreview,MarkdownPreviewStop. Builds withcd app && npm install. -
Dependencies: None (requires Node.js externally).
-
Key configuration choices: Default configuration.
-
Keybindings:
Key Mode Description <leader>mpn Toggle markdown preview
All five colorschemes in this configuration disable italic styling. This is a deliberate design choice for consistency:
- tokyonight: uses custom
on_highlights(comments set to orange, not italic) - catppuccin:
no_italic = true - rose-pine:
disable_italics = true - kanagawa:
commentStyle = { italic = false },keywordStyle = { italic = false } - everforest:
everforest_disable_italic_comment = 1
The colorscheme system saves the active theme to ~/.local/share/nvim/theme.txt and restores it on startup. The <leader>tt mapping opens a Telescope picker with live preview, and the selected theme is persisted automatically.
Several plugins check vim.g.nerd_font to conditionally enable icon support:
nvim-web-deviconsis only enabled when the flag is setwhich-key.nvimuses icon mappings conditionallymini.statuslineuses icons conditionally
The configuration uses a layered approach:
conform.nvimruns the configured external formatter first- If no formatter is configured or it fails, LSP formatting is used as fallback
- C/C++ files are excluded from LSP formatting (only
clang-formatvia conform) - Format-on-save runs on
BufWritePrewith a 500ms timeout
blink.cmp sources are ordered: lsp > snippets > path > buffer. For Lua files, lazydev is added with score_offset = 100 to ensure Neovim API completions rank highest. For Blade/PHP files, blade-nav provides Blade-specific completions.