Two plugin suggestions that complement the existing setup
1. blink.cmp — richer completion UI on top of native LSP
Repo: https://github.com/Saghen/blink.cmp
The config already enables vim.lsp.completion per-buffer in LspAttach (plugin_config.lua:112). This works well but gives a plain pumenu. blink.cmp wraps the same LSP completion protocol and adds:
- Signature help popup while typing arguments
- Snippet expansion (useful for LSP snippet completions from
ts_ls/rust_analyzer)
- Cmdline and path completion in the same UI
- Fuzzy match scoring with better ranking than
completeopt=fuzzy
Integration is intentionally light: it can take over vim.lsp.completion or run alongside it. The existing <c-space> / <c-n> / <c-e> keymaps stay meaningful. Since the config already has fff.nvim for file-fuzzy and fzf-lua for search, blink.cmp fills the only remaining ergonomic gap: in-buffer completion.
2. nvim-treesitter-context — sticky function/class header at top of window
Repo: https://github.com/nvim-treesitter/nvim-treesitter-context
When scrolled into the body of a long function or class, the defining line scrolls off screen. This plugin pins a 1–3 line "context header" at the top of the window showing the enclosing scope — similar to VS Code's sticky scroll.
This pairs naturally with:
- The existing
scopeline.lua (vertical indent guide) — they complement each other orthogonally
nvim-treesitter already installed and active
- The
]f/[f function-jump keymaps from nvim-treesitter-textobjects (you already navigate by function; this shows you which one you're in)
Zero configuration needed beyond require("treesitter-context").setup({}). A <leader>tc keymap for :TSContextToggle would make it optional per-session.
Not suggested here
snacks.nvim (already covers too much overlap with existing fzf-lua/gitsigns/conform setup) and mini.pairs (auto-pairs adds latency for a minor ergonomic win — not worth it given the <CR> auto-indent already in options.lua).
Two plugin suggestions that complement the existing setup
1.
blink.cmp— richer completion UI on top of native LSPRepo: https://github.com/Saghen/blink.cmp
The config already enables
vim.lsp.completionper-buffer inLspAttach(plugin_config.lua:112). This works well but gives a plainpumenu.blink.cmpwraps the same LSP completion protocol and adds:ts_ls/rust_analyzer)completeopt=fuzzyIntegration is intentionally light: it can take over
vim.lsp.completionor run alongside it. The existing<c-space>/<c-n>/<c-e>keymaps stay meaningful. Since the config already hasfff.nvimfor file-fuzzy andfzf-luafor search,blink.cmpfills the only remaining ergonomic gap: in-buffer completion.2.
nvim-treesitter-context— sticky function/class header at top of windowRepo: https://github.com/nvim-treesitter/nvim-treesitter-context
When scrolled into the body of a long function or class, the defining line scrolls off screen. This plugin pins a 1–3 line "context header" at the top of the window showing the enclosing scope — similar to VS Code's sticky scroll.
This pairs naturally with:
scopeline.lua(vertical indent guide) — they complement each other orthogonallynvim-treesitteralready installed and active]f/[ffunction-jump keymaps fromnvim-treesitter-textobjects(you already navigate by function; this shows you which one you're in)Zero configuration needed beyond
require("treesitter-context").setup({}). A<leader>tckeymap for:TSContextTogglewould make it optional per-session.Not suggested here
snacks.nvim(already covers too much overlap with existing fzf-lua/gitsigns/conform setup) andmini.pairs(auto-pairs adds latency for a minor ergonomic win — not worth it given the<CR>auto-indent already in options.lua).