Skip to content

General

Blink cmp has a lot of configuration options, the following code block highlights some changes you're most likely to care about. For more information, check out the additional pages.

For more common configurations, see the recipes.

Do not copy this entire configuration! It contains only non-default options

lua
{
  -- Disable for some filetypes
  enabled = function()
    return not vim.tbl_contains({ "lua", "markdown" }, vim.bo.filetype)
      and vim.bo.buftype ~= "prompt"
      and vim.b.completion ~= false
  end,

  completion = {
    -- 'prefix' will fuzzy match on the text before the cursor
    -- 'full' will fuzzy match on the text before *and* after the cursor
    -- example: 'foo_|_bar' will match 'foo_' for 'prefix' and 'foo__bar' for 'full'
    keyword = { range = 'full' },

    -- Disable auto brackets
    -- NOTE: some LSPs may add auto brackets themselves anyway
    accept = { auto_brackets = { enabled = false }, },

    -- Don't select by default, auto insert on selection    
    list = { selection = { preselect = false, auto_insert = true } },
    -- or set either per mode via a function
    list = { selection = { preselect = function(ctx) return ctx.mode ~= 'cmdline' end } },

    menu = {
      -- Don't automatically show the completion menu
      auto_show = false,

      -- nvim-cmp style menu
      draw = {
        columns = {
          { "label", "label_description", gap = 1 },
          { "kind_icon", "kind" }
        },
      }
    },

    -- Show documentation when selecting a completion item
    documentation = { auto_show = true, auto_show_delay_ms = 500 },

    -- Display a preview of the selected item on the current line
    ghost_text = { enabled = true },
  },

  sources = {
    -- Remove 'buffer' if you don't want text completions, by default it's only enabled when LSP returns no items
    default = { 'lsp', 'path', 'snippets', 'buffer' },
    -- Disable cmdline completions
    cmdline = {},
  },

  -- Use a preset for snippets, check the snippets documentation for more information
  snippets = { preset = 'default' | 'luasnip' | 'mini_snippets' },

  -- Experimental signature help support
  signature = { enabled = true }
}