diff --git a/lua/plugins/spec/completion.lua b/lua/plugins/spec/completion.lua index db298ba..23649ca 100644 --- a/lua/plugins/spec/completion.lua +++ b/lua/plugins/spec/completion.lua @@ -1,17 +1,31 @@ -require("lazy.types") ----@type LazySpec[] +---@module "lazy" +---@type LazySpec return { - { - "L3MON4D3/LuaSnip", + { "L3MON4D3/LuaSnip", dependencies = { "rafamadriz/friendly-snippets", }, config = function() local lua_snippets = vim.fn.stdpath("config") .. "/luasnip" local vscode_snippets = vim.fn.stdpath("config") .. "/snippets" + local types = require("luasnip.util.types") require("luasnip.loaders.from_vscode").lazy_load() require("luasnip.loaders.from_vscode").lazy_load({ paths = { vscode_snippets } }) require("luasnip.loaders.from_lua").lazy_load({ paths = { lua_snippets } }) + require("luasnip").config.setup({ + ext_opts = { + [types.choiceNode] = { + active = { + virt_text = {{"", "GruvboxOrange"}} + } + }, + [types.insertNode] = { + active = { + virt_text = {{"", "GruvboxBlue"}} + } + } + } + }) end, lazy = true, }, @@ -32,9 +46,16 @@ return { "chrisgrieser/cmp-nerdfont", }, opts = function() + vim.lsp.config("*", {capabilities = require("cmp_nvim_lsp").default_capabilities()}) + local cmp = require("cmp") local luasnip = require("luasnip") local lspkind = require("lspkind") + local cmp_autopairs = require("nvim-autopairs.completion.cmp") + cmp.event:on( + 'confirm_done', + cmp_autopairs.on_confirm_done() + ) ---@type cmp.ConfigSchema return { enabled = function() @@ -66,6 +87,20 @@ return { fallback() end end, { "i", "s" }), + ["x"] = cmp.mapping(function (fallback) + if luasnip.choice_active() then + luasnip.change_choice(1) + else + fallback() + end + end), + ["z"] = cmp.mapping(function (fallback) + if luasnip.choice_active() then + luasnip.change_choice(-1) + else + fallback() + end + end), [""] = cmp.mapping(function(fallback) if cmp.visible() then cmp.select_prev_item() @@ -92,9 +127,16 @@ return { select = false, }), }), - [""] = cmp.mapping(function(fallback) + [""] = cmp.mapping(function(_) cmp.complete() end), + [""] = cmp.mapping(function (fallback) + if cmp.visible() then + cmp.close() + else + fallback() + end + end) }, sources = cmp.config.sources({ { name = "lazydev" }, @@ -122,3 +164,4 @@ return { end, }, } +-- vim: fdl=2