Skip to content

[plugins] blink.cmp and nvim-treesitter-context #155

@stanfish06

Description

@stanfish06

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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions