Skip to content

Custom plugins

Beyond LazyVim and its extras, .config/nvim/lua/plugins/ holds project-specific plugin specs and overrides.

Theme

cyberdream.lua

return {
  { "scottmckendry/cyberdream.nvim", lazy = false, priority = 1000 },
  { "nvim-lualine/lualine.nvim", opts = { theme = "auto" } },
}

Loads cyberdream.nvim eagerly with the highest priority so the colourscheme is in place before any other UI renders.

lua-line.lua

Drops the lualine_z section so the status line ends at branch/diagnostics instead of the default position/percent block.

header.lua

Custom Snacks dashboard header — ASCII art that spells "Deavon's Terminal". See Customize → NeoVim dashboard header for how to regenerate the art with figlet.

UX

snacks.lua

A big Snacks configuration covering:

  • Explorer — hidden files visible, gitignored files visible.
  • Sessions picker — lists tmux sessions as a tree and switches to the picked one with tmux switch-client. The active session is shown at the top with a (current) label so its worktrees nest visibly underneath; selecting it is a no-op. Sessions whose session_path lives under ~/.cache/agent/worktrees/ (the Claude Code worktree hook convention) are treated as worktrees and indented under the tmux session whose name is the longest matching prefix — so dotfiles-feature-branch nests under dotfiles. Worktrees whose parent isn't currently in tmux land under a synthetic (orphans) header. The preview pane runs git -C <path> status -sb so branch + ahead/behind + dirty state are visible at a glance. Bind: ++leader++ F S.
  • Snippets picker — fuzzy-find LuaSnip snippets with live preview and expansion. Bind: ++leader++ F X.
  • Image previews — enabled (image = {}), so :Snacks.picker.files previews images inline in the supported terminals.
  • Files default to cwd — ++leader++ Space uses root = false so it searches the current directory rather than the project root.

auto-save.lua

return {
  "Pocco81/auto-save.nvim",
  opts = {
    trigger_events = { "InsertLeave" },
    debounce_delay = 500,
  },
  keys = { { "<leader>uv", "<cmd>ASToggle<CR>", desc = "Toggle Auto-save" } },
}

Saves on InsertLeave with a 500 ms debounce. Toggle with ++leader++ U V.

blink.lua

Configures blink.cmp so the completion menu doesn't preselect the first item — pressing Enter inserts a literal newline instead of accepting an unwanted completion.

grug-far.lua

Search-and-replace TUI scoped to the current buffer. Bind: ++leader++ S F.

vim-tmux-navigator.lua

Maps Ctrl+H / Ctrl+J / Ctrl+K / Ctrl+L for seamless navigation between Vim splits and tmux panes. Paired with the matching tmux plugin (see tmux).

ghostty.lua

Loads the vimfiles bundled with Ghostty so the ghostty config filetype gets syntax highlighting:

return { "ghostty", dir = "/Applications/Ghostty.app/Contents/Resources/vim/vimfiles/" }

sql.lua

Wires sqlfluff into the LazyVim formatting and linting machinery (format - and lint --format=json).

Language plugins

lua/plugins/lang/ adds support for languages not covered by LazyVim extras:

File Adds
go.lua Extra Go tooling / debug configuration.
markdown.lua Markdown-specific plugin tweaks (treesitter, render, etc.).
tofu.lua OpenTofu (Terraform fork) support.
xml.lua XML LSP / formatting.
jinja.lua Jinja2 templating filetype + LSP.
protobuf.lua Protocol Buffers LSP / formatting.