nvim/.config/nvim/lua/plugins/completion/blink.lua

-- nvim/.config/nvim/lua/plugins/completion/blink.lua
-- blink.cmp replaced nvim-cmp in late 2024. Much snappier.

return {
  "saghen/blink.cmp",
  version = "v0.*",
  event = { "InsertEnter", "CmdlineEnter" },
  dependencies = { "rafamadriz/friendly-snippets", "L3MON4D3/LuaSnip" },
  opts = {
    keymap = {
      preset = "default",
      ["<Tab>"]   = { "select_next", "snippet_forward", "fallback" },
      ["<S-Tab>"] = { "select_prev", "snippet_backward", "fallback" },
      ["<CR>"]    = { "accept", "fallback" },
      ["<C-e>"]   = { "hide", "fallback" },
      ["<C-space>"] = { "show", "show_documentation", "hide_documentation" },
    },
    snippets = {
      preset = "luasnip",
    },
    sources = {
      default = { "lsp", "path", "snippets", "buffer" },
      providers = {
        buffer = { min_keyword_length = 3, score_offset = -3 },
        path   = { opts = { trailing_slash = false } },
      },
    },
    completion = {
      accept = { auto_brackets = { enabled = true } },
      list   = { selection = { preselect = false, auto_insert = true } },
      menu = {
        border = "rounded",
        draw = {
          columns = {
            { "label", "label_description", gap = 1 },
            { "kind_icon", "kind", gap = 1 },
          },
        },
      },
      documentation = {
        auto_show = true,
        auto_show_delay_ms = 200,
        window = { border = "rounded" },
      },
      ghost_text = { enabled = false },
    },
    signature = { enabled = true, window = { border = "rounded" } },
    appearance = { use_nvim_cmp_as_default = false, nerd_font_variant = "mono" },
  },
  opts_extend = { "sources.default" },
}