aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/nvim/init.lua9
-rw-r--r--configs/nvim/lua/crupest/nvim/plugins/snip.lua74
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
+}