From 5e80cc2081ec616c828a0abe82d246c4dc0a4334 Mon Sep 17 00:00:00 2001 From: bh Date: Wed, 19 Nov 2025 14:50:22 +0800 Subject: Fixed snippets and also a little refactoring on the theme --- lua/config/completion.lua | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 lua/config/completion.lua (limited to 'lua/config/completion.lua') diff --git a/lua/config/completion.lua b/lua/config/completion.lua new file mode 100644 index 0000000..09a934e --- /dev/null +++ b/lua/config/completion.lua @@ -0,0 +1,59 @@ +-- return a function for lazy.nvim +return function() + local cmp = require("cmp") + local luasnip = require("luasnip") + local lspkind = require("lspkind") + + -- load friendly-snippets + require("luasnip.loaders.from_vscode").lazy_load() + + cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), -- manual trigger + [""] = cmp.mapping.confirm({ select = true }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "path" }, + { name = "luasnip" }, + }, { + { name = "buffer" }, + }), + formatting = { + format = lspkind.cmp_format({ with_text = true, maxwidth = 50 }), + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + completion = { + autocomplete = false, -- only trigger with + }, + }) +end + -- cgit v1.2.3