From 7bb25612240f840a6edacc4778ed2d3359657ccd Mon Sep 17 00:00:00 2001 From: afranco Date: Wed, 18 Dec 2024 22:51:27 +0000 Subject: [PATCH] chore(nvim): replace cmp with blink.cmp --- .config/nvim/lua/plugins/cmp.lua | 197 +++++++-------------------- .config/nvim/lua/plugins/editing.lua | 2 +- .config/nvim/lua/plugins/lsp.lua | 12 +- .config/nvim/lua/plugins/ui.lua | 4 +- 4 files changed, 62 insertions(+), 153 deletions(-) diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua index ba622d9..518d0b1 100644 --- a/.config/nvim/lua/plugins/cmp.lua +++ b/.config/nvim/lua/plugins/cmp.lua @@ -1,152 +1,59 @@ return { { - "yioneko/nvim-cmp", - branch = "perf", - event = "VeryLazy", - dependencies = { - "hrsh7th/cmp-nvim-lsp", -- lsp - "hrsh7th/cmp-nvim-lua", -- Nvim API completions - "hrsh7th/cmp-nvim-lsp-signature-help", -- Show function signatures - "hrsh7th/cmp-buffer", --buffer completions - "hrsh7th/cmp-path", --path completions - "hrsh7th/cmp-cmdline", --cmdline completions - "L3MON4D3/LuaSnip", - "rafamadriz/friendly-snippets", - "saadparwaiz1/cmp_luasnip", - "onsails/lspkind.nvim", --lspkind icons - }, - config = function() - local cmp = require("cmp") - - local luasnip = require("luasnip") - require("luasnip/loaders/from_vscode").lazy_load() - - vim.opt.pumheight = 15 - - local lspkind = require("lspkind") - -- `/` cmdline setup. - cmp.setup.cmdline("/", { - mapping = cmp.mapping.preset.cmdline(), - sources = { - { name = "buffer" }, + 'saghen/blink.cmp', + lazy = false, + dependencies = 'rafamadriz/friendly-snippets', + build = 'cargo build --release', + opts = { + keymap = { + preset = 'default', + [''] = { 'scroll_documentation_up', 'fallback' }, + [''] = { 'scroll_documentation_down', 'fallback' }, + }, + appearance = { + use_nvim_cmp_as_default = true, + nerd_font_variant = 'mono' + }, + sources = { + default = { 'lsp', 'path', 'snippets', 'buffer' }, + providers = { + lazydev = { name = "LazyDev", module = "lazydev.integrations.blink", fallbacks = { "lsp" } }, }, - }) - - -- `:` cmdline setup. - cmp.setup.cmdline(":", { - mapping = cmp.mapping.preset.cmdline(), - sources = cmp.config.sources({ - { name = "path" }, - }, { - { - name = "cmdline", - option = { - ignore_cmds = { "Man", "!" }, - }, - }, - }), - }) - cmp.setup({ - snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - }, - performance = { - debounce = 0, - throttle = 0, - }, - mapping = { - [""] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }), - [""] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }), - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping( - cmp.mapping.confirm({ - behavior = cmp.ConfirmBehavior.Insert, - select = true, - }), - { "i", "c" } - ), - [""] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }), - [""] = cmp.mapping(function() - if luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - end - end), - [""] = cmp.mapping(function() - if luasnip.jumpable(-1) then - luasnip.jump(-1) - end - end), - }, - formatting = { - fields = { "kind", "abbr" }, - format = function(entry, vim_item) - local formatted_entry = lspkind.cmp_format({ - mode = "symbol", - maxwidth = { - menu = 0 - }, - show_labelDetails = false - })(entry, vim_item) - formatted_entry.kind = (formatted_entry.kind or "") .. " " - return formatted_entry - end - }, - preselect = cmp.PreselectMode.None, - sorting = { - priority_weight = 2, - comparators = { - cmp.config.compare.offset, - cmp.config.compare.exact, - cmp.config.compare.score, - - --Make entries that start with underline appear after - function(entry1, entry2) - local _, entry1_under = entry1.completion_item.label:find("^_+") - local _, entry2_under = entry2.completion_item.label:find("^_+") - entry1_under = entry1_under or 0 - entry2_under = entry2_under or 0 - if entry1_under > entry2_under then - return false - elseif entry1_under < entry2_under then - return true - end - end, - - cmp.config.compare.kind, - cmp.config.compare.sort_text, - cmp.config.compare.length, - cmp.config.compare.order, - }, - }, - sources = cmp.config.sources({ - { name = "nvim_lua" }, - { name = "nvim_lsp" }, - --{ name = "luasnip" }, - { name = "path" }, - }, { - { name = "buffer", keyword_length = 5 }, - }), + }, + signature = { + enabled = true, window = { - completion = { - border = "rounded", - winhighlight = "Normal:Normal,FloatBorder:Normal,CursorLine:Visual,Search:None", - }, - documentation = { - border = "rounded", - winhighlight = "Normal:Normal,FloatBorder:Normal,CursorLine:Visual,Search:None", - }, + max_width = 160, + max_height = 30, + scrollbar = true, + } + }, + completion = { + accept = { + auto_brackets = { + enabled = true + } }, - experimental = { - native_menu = false, - ghost_text = false, + menu = { + border = "single", + winhighlight = "Normal:Normal,FloatBorder:Normal,CursorLine:Visual,Search:None", + winblend = 0, + draw = { + treesitter = { 'lsp' }, + columns = { { 'kind_icon'}, { 'label' } }, + } }, - }) - - local cmp_autopairs = require("nvim-autopairs.completion.cmp") - cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) - end - } + documentation = { + auto_show = true, + window = { + border = 'single', + max_width = 160, + max_height = 30, + winblend = 0, + winhighlight = "Normal:Normal,FloatBorder:Normal,CursorLine:Visual,Search:None", + } + }, + }, + }, + }, } diff --git a/.config/nvim/lua/plugins/editing.lua b/.config/nvim/lua/plugins/editing.lua index 9436788..434f7af 100644 --- a/.config/nvim/lua/plugins/editing.lua +++ b/.config/nvim/lua/plugins/editing.lua @@ -42,7 +42,7 @@ return { }, }, completion = { - nvim_cmp = true, + nvim_cmp = false, min_chars = 2, }, picker = { diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua index d3f949c..eab484a 100644 --- a/.config/nvim/lua/plugins/lsp.lua +++ b/.config/nvim/lua/plugins/lsp.lua @@ -10,13 +10,12 @@ return { }, { 'nvim-java/nvim-java', - priority = 500, + ft = "java", config = function() require('java').setup() local lspconfig = require("lspconfig") local lsp_defaults = lspconfig.util.default_config - local capabilities = - vim.tbl_deep_extend("force", lsp_defaults.capabilities, require("cmp_nvim_lsp").default_capabilities()) + local capabilities = require('blink.cmp').get_lsp_capabilities(lsp_defaults.capabilities) capabilities.textDocument.foldingRange = { dynamicRegistration = false, lineFoldingOnly = true @@ -50,6 +49,9 @@ return { }, { "neovim/nvim-lspconfig", + dependencies = { + 'saghen/blink.cmp' + }, event = { "BufReadPost", "BufNewFile" }, config = function() local lspconfig = require("lspconfig") @@ -94,10 +96,8 @@ return { vim.keymap.set("n", "fo", function() conform.format({ lsp_fallback = true }) end, bufopts) end, }) - local lsp_defaults = lspconfig.util.default_config - local capabilities = - vim.tbl_deep_extend("force", lsp_defaults.capabilities, require("cmp_nvim_lsp").default_capabilities()) + local capabilities = require('blink.cmp').get_lsp_capabilities(lsp_defaults.capabilities) capabilities.textDocument.foldingRange = { dynamicRegistration = false, lineFoldingOnly = true diff --git a/.config/nvim/lua/plugins/ui.lua b/.config/nvim/lua/plugins/ui.lua index 1c90e13..eb8a371 100644 --- a/.config/nvim/lua/plugins/ui.lua +++ b/.config/nvim/lua/plugins/ui.lua @@ -27,8 +27,10 @@ return { override = { ["vim.lsp.util.convert_input_to_markdown_lines"] = true, ["vim.lsp.util.stylize_markdown"] = true, - ["cmp.entry.get_documentation"] = true, }, + signature = { + enabled = false + } }, presets = { inc_rename = true,