From b73d408fd9e9b1af65ad3efe8b0cc1244ccd71cf Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Wed, 30 Apr 2025 13:08:09 +0200 Subject: vim: cmp -> blink MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Robert Günzler --- .vim/lua/internal/plugins/blink.lua | 85 ++++++++++++++++++++++++++++++++ .vim/lua/internal/plugins/cmp.lua | 31 ++++++++++++ .vim/lua/internal/plugins/completion.lua | 60 ---------------------- .vim/lua/internal/plugins/lsp.lua | 4 +- 4 files changed, 119 insertions(+), 61 deletions(-) create mode 100644 .vim/lua/internal/plugins/blink.lua create mode 100644 .vim/lua/internal/plugins/cmp.lua delete mode 100644 .vim/lua/internal/plugins/completion.lua (limited to '.vim/lua/internal/plugins') diff --git a/.vim/lua/internal/plugins/blink.lua b/.vim/lua/internal/plugins/blink.lua new file mode 100644 index 0000000..1d0e0ae --- /dev/null +++ b/.vim/lua/internal/plugins/blink.lua @@ -0,0 +1,85 @@ +return { + { + 'saghen/blink.cmp', + version = '1.*', + + lazy = false, + + dependencies = { + { + 'L3MON4D3/LuaSnip', + version = 'v2.*', + build = 'make install_jsregexp', + config = function() + require('internal.snippets') + end, + }, + }, + + init = function() + vim.opt.completeopt = { 'menu', 'menuone', 'noselect' } + vim.opt.shortmess:append('c') + vim.opt.pumheight = 20 -- max height of completion window + + local hl = vim.api.nvim_set_hl + hl(0, 'BlinkCmpSource', { link = 'Comment', force = true }) + hl(0, 'BlinkCmpLabelDescription', { link = 'Comment', force = true }) + end, + + opts = { + -- TODO: + -- 'prefer_rust_with_warning', requires nightly rust, due to: + -- https://github.com/rust-lang/rust/issues/86656 + fuzzy = { implementation = 'lua' }, + + appearance = { + -- fallback to cmp highlight names + use_nvim_cmp_as_default = true, + -- adjusts spacing to ensure icons are aligned + -- nerd_font_variant = 'normal', + }, + + sources = { + providers = { + buffer = { min_keyword_length = 3 }, + snippets = { min_keyword_length = 3 }, + }, + }, + + completion = { + documentation = { auto_show = true }, + menu = { + draw = { + columns = { + { 'kind_icon' }, + { 'label', 'label_description', gap = 1 }, + { 'source_name' }, + }, + }, + }, + }, + + signature = { + enabled = true, + window = { scrollbar = false }, -- BUG: weird artifacts + }, + + keymap = { + [''] = { 'show', 'show_documentation', 'hide_documentation' }, + [''] = { 'cancel', 'fallback' }, + [''] = { 'select_and_accept' }, + [''] = { 'select_prev', 'fallback' }, + [''] = { 'select_next', 'fallback' }, + [''] = { 'scroll_documentation_up', 'fallback' }, + [''] = { 'scroll_documentation_down', 'fallback' }, + [''] = { 'select_and_accept', 'fallback' }, + [''] = { 'snippet_forward', 'fallback' }, + [''] = { 'snippet_backward', 'fallback' }, + -- [''] = { 'show', 'hide', 'fallback' }, + }, + + snippets = { preset = 'luasnip' }, + }, + opts_extend = { 'sources.default' }, + }, +} diff --git a/.vim/lua/internal/plugins/cmp.lua b/.vim/lua/internal/plugins/cmp.lua new file mode 100644 index 0000000..086e1ac --- /dev/null +++ b/.vim/lua/internal/plugins/cmp.lua @@ -0,0 +1,31 @@ +return { + { + enabled = false, + -- 'hrsh7th/nvim-cmp', + 'iguanacucumber/magazine.nvim', -- perf improvements + name = 'nvim-cmp', + lazy = false, + -- event = {'InsertEnter', 'CmdlineEnter' }, + priority = 100, + dependencies = { + 'hrsh7th/cmp-buffer', + 'hrsh7th/cmp-nvim-lsp', + 'https://codeberg.org/FelipeLema/cmp-async-path', + -- 'hrsh7th/cmp-nvim-lua', + 'hrsh7th/cmp-nvim-lsp-signature-help', -- used to provide function signature completion + 'hrsh7th/cmp-cmdline', + 'dmitmel/cmp-cmdline-history', + 'hrsh7th/cmp-nvim-lsp-document-symbol', -- used by cmdline completion + -- 'f3fora/cmp-spell', + + { 'L3MON4D3/LuaSnip', run = 'make install_jsregexp' }, + 'saadparwaiz1/cmp_luasnip', + + 'onsails/lspkind.nvim', + }, + config = function() + require('internal.snippets') + require('internal.completion') + end, + }, +} diff --git a/.vim/lua/internal/plugins/completion.lua b/.vim/lua/internal/plugins/completion.lua deleted file mode 100644 index db96085..0000000 --- a/.vim/lua/internal/plugins/completion.lua +++ /dev/null @@ -1,60 +0,0 @@ -return { - { - -- 'hrsh7th/nvim-cmp', - 'iguanacucumber/magazine.nvim', -- perf improvements - name = 'nvim-cmp', - - lazy = false, - -- event = {'InsertEnter', 'CmdlineEnter' }, - priority = 100, - dependencies = { - 'hrsh7th/cmp-buffer', - 'hrsh7th/cmp-nvim-lsp', - 'https://codeberg.org/FelipeLema/cmp-async-path', - -- 'hrsh7th/cmp-nvim-lua', - 'hrsh7th/cmp-nvim-lsp-signature-help', -- used to provide function signature completion - 'hrsh7th/cmp-cmdline', - 'dmitmel/cmp-cmdline-history', - 'hrsh7th/cmp-nvim-lsp-document-symbol', -- used by cmdline completion - -- 'f3fora/cmp-spell', - - { 'L3MON4D3/LuaSnip', run = 'make install_jsregexp' }, - 'saadparwaiz1/cmp_luasnip', - - 'onsails/lspkind.nvim', - }, - config = function() - require('internal.snippets') - require('internal.completion') - end, - }, - - -- { -- TODO: try when it doesnt require nightly rust, i dont want binary blobs - -- - -- 'saghen/blink.cmp', - -- lazy = false, - -- -- use a release tag to download pre-built binaries - -- -- version = 'v0.*', - -- -- OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust - -- build = 'cargo build --release', - -- - -- opts = { - -- highlight = { - -- -- sets the fallback highlight groups to nvim-cmp's highlight groups - -- -- useful for when your theme doesn't support blink.cmp - -- -- will be removed in a future release, assuming themes add support - -- use_nvim_cmp_as_default = true, - -- }, - -- - -- -- set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font' - -- -- adjusts spacing to ensure icons are aligned - -- nerd_font_variant = 'normal', - -- - -- -- experimental auto-brackets support - -- -- accept = { auto_brackets = { enabled = true } } - -- - -- -- experimental signature help support - -- -- trigger = { signature_help = { enabled = true } } - -- }, - -- }, -} diff --git a/.vim/lua/internal/plugins/lsp.lua b/.vim/lua/internal/plugins/lsp.lua index d138c6c..e2a5866 100644 --- a/.vim/lua/internal/plugins/lsp.lua +++ b/.vim/lua/internal/plugins/lsp.lua @@ -8,7 +8,9 @@ return { }, config = function() local capabilities = nil - if pcall(require, 'cmp_nvim_lsp') then + if pcall(require, 'blink.cmp') then + capabilities = require('blink.cmp').get_lsp_capabilities() + elseif pcall(require, 'cmp_nvim_lsp') then capabilities = require('cmp_nvim_lsp').default_capabilities() end -- cgit 1.4.1