Files
my-nvim/lua/crentist/lazy/completion.lua

100 lines
3.6 KiB
Lua

return {
'saghen/blink.cmp',
-- optional: provides snippets for the snippet source
dependencies = {
'mikavilpas/blink-ripgrep.nvim',
'rafamadriz/friendly-snippets',
{ 'L3MON4D3/LuaSnip', version = 'v2.*' }
},
-- use a release tag to download pre-built binaries
version = 'v1.8.*',
---@module 'blink-cmp'
---@type blink.cmp.Config
opts = {
fuzzy = { implementation = 'prefer_rust_with_warning' },
snippets = {
preset = 'luasnip',
active = function(filter)
local snippet = require('luasnip')
local blink = require('blink.cmp')
if snippet.in_snippet() and not blink.is_visible() then
return true
else
if not snippet.in_snippet() and vim.fn.mode() == 'n' then snippet.unlink_current() end
return false
end
end
},
cmdline = {
keymap = { preset = 'cmdline' },
completion = {
list = { selection = { preselect = false, auto_insert = true } }
}
},
completion = { list = { selection = { preselect = false, auto_insert = true } } },
keymap = { preset = 'enter' },
appearance = {
use_nvim_cmp_as_default = true,
nerd_font_variant = 'mono'
},
sources = {
default = { 'lazydev', 'lsp', 'snippets', 'ripgrep', 'path', 'buffer' },
per_filetype = {
sql = { 'snippets', 'dadbod', 'buffer', 'ripgrep' },
mysql = { 'snippets', 'dadbod', 'buffer', 'ripgrep' },
},
providers = {
lazydev = {
name = 'LazyDev',
module = 'lazydev.integrations.blink',
-- make lazydev completions top priority (see `:h blink.cmp`)
score_offset = 100,
},
ripgrep = {
module = 'blink-ripgrep',
name = 'Ripgrep',
score_offset = -5,
-- the options below are optional, some default values are shown
---@module 'blink-ripgrep'
---@type blink-ripgrep.Options
opts = {
backend = {
use = 'ripgrep',
},
ripgrep = {
ignore_paths = {},
additional_paths = {},
additional_rg_options = {},
max_filesize = '1M',
project_root_fallback = true,
search_casing = '--ignore-case',
},
project_root_marker = '.git',
fallback_to_regex_highlighting = true,
toggles = { debug = nil, },
},
transform_items = function(_, items)
for _, item in ipairs(items) do
-- example: append a description to easily distinguish rg results
item.labelDetails = {
description = '(rg)',
}
end
return items
end,
},
dadbod = {
name = 'Dadbod', module = 'vim_dadbod_completion.blink'
},
},
},
signature = { enabled = true }
},
}