Five plugin suggestions that complement the existing setup without overlap or bloat. Inferred from the installed LSPs (lua, python, c/cpp, ts/js, rust, go, swift), the sneak + fzf-lua navigation style, the conform formatting workflow, and the custom statusline + scopeline.
1. blink.cmp — automatic LSP completion popup
Repo: https://github.com/Saghen/blink.cmp
The config currently uses only native omnifunc (<C-Space> triggers <C-x><C-o>). blink.cmp provides an always-on popup that sources completions from all attached LSP clients automatically, with fuzzy matching, signature help, and snippet support. It is written in Rust for performance and has become the de-facto modern replacement for nvim-cmp. The existing vim.opt.completeopt = { "menu", "menuone", "noinsert", "fuzzy" } setting shows an interest in completion UX — blink.cmp takes that further without requiring any LSP config changes.
2. mini.comment — single-key code commenting
Repo: https://github.com/echasnovski/mini.comment (part of mini.nvim)
There is no commenting plugin in this config. mini.comment adds gc{motion} and gcc (toggle current line) using Treesitter to detect the correct comment style per language. It is zero-config, has no dependencies, and is one file. Given the multi-language LSP setup (Lua, Python, C, TypeScript, Rust, Go, Swift), correct comment strings per filetype is a real quality-of-life win.
3. nvim-dap + nvim-dap-ui — debugging
Repos: https://github.com/mfussenegger/nvim-dap / https://github.com/rcarriga/nvim-dap-ui
The config has LSP for six compiled/typed languages (C, Rust, Go, TypeScript, Python, Swift) but no debugger. nvim-dap implements the Debug Adapter Protocol so the same key bindings work across all these languages. nvim-dap-ui provides a floating panel with breakpoints, call stack, and variable inspection. This is the natural next step for a config that already invests in per-language LSP and formatting.
4. vim-repeat — make . work with vim-sneak
Repo: https://github.com/tpope/vim-repeat
vim-sneak (sneaks.vim) is installed. Without vim-repeat, pressing . after a sneak motion does not repeat the motion — it repeats the last native change instead. vim-repeat is a one-file plugin that hooks into Neovim's repeat mechanism and is explicitly supported by vim-sneak. Zero configuration needed.
5. mini.surround — add/change/delete surrounding pairs
Repo: https://github.com/echasnovski/mini.surround (part of mini.nvim)
The custom <CR> handler in options.lua (auto-expanding {} and ()) shows interest in bracket-pair ergonomics. mini.surround extends that with sa{motion}{char} (add surround), sd{char} (delete surround), and sr{from}{to} (replace surround). Works with Treesitter for smart pair detection. No dependencies; pairs naturally with vim-sneak's motion-first style.
Five plugin suggestions that complement the existing setup without overlap or bloat. Inferred from the installed LSPs (lua, python, c/cpp, ts/js, rust, go, swift), the sneak + fzf-lua navigation style, the conform formatting workflow, and the custom statusline + scopeline.
1.
blink.cmp— automatic LSP completion popupRepo: https://github.com/Saghen/blink.cmp
The config currently uses only native omnifunc (
<C-Space>triggers<C-x><C-o>). blink.cmp provides an always-on popup that sources completions from all attached LSP clients automatically, with fuzzy matching, signature help, and snippet support. It is written in Rust for performance and has become the de-facto modern replacement for nvim-cmp. The existingvim.opt.completeopt = { "menu", "menuone", "noinsert", "fuzzy" }setting shows an interest in completion UX — blink.cmp takes that further without requiring any LSP config changes.2.
mini.comment— single-key code commentingRepo: https://github.com/echasnovski/mini.comment (part of mini.nvim)
There is no commenting plugin in this config.
mini.commentaddsgc{motion}andgcc(toggle current line) using Treesitter to detect the correct comment style per language. It is zero-config, has no dependencies, and is one file. Given the multi-language LSP setup (Lua, Python, C, TypeScript, Rust, Go, Swift), correct comment strings per filetype is a real quality-of-life win.3.
nvim-dap+nvim-dap-ui— debuggingRepos: https://github.com/mfussenegger/nvim-dap / https://github.com/rcarriga/nvim-dap-ui
The config has LSP for six compiled/typed languages (C, Rust, Go, TypeScript, Python, Swift) but no debugger. nvim-dap implements the Debug Adapter Protocol so the same key bindings work across all these languages. nvim-dap-ui provides a floating panel with breakpoints, call stack, and variable inspection. This is the natural next step for a config that already invests in per-language LSP and formatting.
4.
vim-repeat— make.work with vim-sneakRepo: https://github.com/tpope/vim-repeat
vim-sneak (
sneaks.vim) is installed. Without vim-repeat, pressing.after a sneak motion does not repeat the motion — it repeats the last native change instead. vim-repeat is a one-file plugin that hooks into Neovim's repeat mechanism and is explicitly supported by vim-sneak. Zero configuration needed.5.
mini.surround— add/change/delete surrounding pairsRepo: https://github.com/echasnovski/mini.surround (part of mini.nvim)
The custom
<CR>handler inoptions.lua(auto-expanding{}and()) shows interest in bracket-pair ergonomics. mini.surround extends that withsa{motion}{char}(add surround),sd{char}(delete surround), andsr{from}{to}(replace surround). Works with Treesitter for smart pair detection. No dependencies; pairs naturally with vim-sneak's motion-first style.