diff options
-rw-r--r-- | configs/nvim/init.lua | 9 | ||||
-rw-r--r-- | configs/nvim/lua/crupest/nvim/plugins/snip.lua | 74 |
2 files changed, 80 insertions, 3 deletions
diff --git a/configs/nvim/init.lua b/configs/nvim/init.lua index 22a5630..e8987f7 100644 --- a/configs/nvim/init.lua +++ b/configs/nvim/init.lua @@ -101,12 +101,16 @@ local lint = require("crupest.nvim.plugins.lint") lint.setup_lint() -- setup nvim-cmp +local snip = require("crupest.nvim.plugins.snip") +local luasnip = snip.luasnip +snip.setup_snip() + local cmp = require("cmp") cmp.setup({ snippet = { expand = function(args) - require("luasnip").lsp_expand(args.body) + luasnip.lsp_expand(args.body) end, }, window = { @@ -119,7 +123,7 @@ cmp.setup({ ['<C-Space>'] = cmp.mapping.complete(), ['<C-e>'] = cmp.mapping.abort(), ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - ['<tab>'] = cmp.mapping.confirm({ select = true }) + ['<C-y>'] = cmp.mapping.confirm({ select = true }) }), sources = cmp.config.sources({ { name = 'nvim_lsp' }, @@ -151,7 +155,6 @@ vim.api.nvim_create_autocmd('LspAttach', { vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts) - vim.keymap.set('i', '<C-k>', vim.lsp.buf.signature_help, opts) vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts) vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts) vim.keymap.set('n', '<space>wl', function() diff --git a/configs/nvim/lua/crupest/nvim/plugins/snip.lua b/configs/nvim/lua/crupest/nvim/plugins/snip.lua new file mode 100644 index 0000000..1dde7d3 --- /dev/null +++ b/configs/nvim/lua/crupest/nvim/plugins/snip.lua @@ -0,0 +1,74 @@ +local luasnip = require("luasnip") + +local ls = luasnip +-- some shorthands... +local s = ls.snippet +local sn = ls.snippet_node +local t = ls.text_node +local i = ls.insert_node +local f = ls.function_node +local c = ls.choice_node +local d = ls.dynamic_node +local r = ls.restore_node +local l = require("luasnip.extras").lambda +local rep = require("luasnip.extras").rep +local p = require("luasnip.extras").partial +local m = require("luasnip.extras").match +local n = require("luasnip.extras").nonempty +local dl = require("luasnip.extras").dynamic_lambda +local fmt = require("luasnip.extras.fmt").fmt +local fmta = require("luasnip.extras.fmt").fmta +local types = require("luasnip.util.types") +local conds = require("luasnip.extras.conditions") +local conds_expand = require("luasnip.extras.conditions.expand") + +local function copy(args) + return args[1] +end + +local function setup_snip() + vim.keymap.set({ "i", "s" }, "<C-L>", function() luasnip.jump(1) end, { silent = true }) + vim.keymap.set({ "i", "s" }, "<C-J>", function() luasnip.jump(-1) end, { silent = true }) + + vim.keymap.set({ "i", "s" }, "<C-E>", function() + if luasnip.choice_active() then + luasnip.change_choice(1) + end + end, { silent = true }) + + luasnip.add_snippets("cpp", { + s("cs", { + i(1, "classname"), + t("::"), + f(copy, 1), + t("("), + i(0), + t(") { }") + }), + + s("ds", { + i(1, "classname"), + t("::~"), + f(copy, 1), + t("() { }") + }), + + s("csds", { + i(1, "classname"), + t("::"), + f(copy, 1), + t("("), + i(0), + t({") { }", "", ""}), + f(copy, 1), + t("::~"), + f(copy, 1), + t("() { }") + }), + }) +end + +return { + setup_snip = setup_snip, + luasnip = luasnip +} |