aboutsummaryrefslogtreecommitdiffstats
path: root/nvim/after/plugin/luasnip.lua
diff options
context:
space:
mode:
Diffstat (limited to 'nvim/after/plugin/luasnip.lua')
-rw-r--r--nvim/after/plugin/luasnip.lua46
1 files changed, 46 insertions, 0 deletions
diff --git a/nvim/after/plugin/luasnip.lua b/nvim/after/plugin/luasnip.lua
new file mode 100644
index 0000000..6ff1131
--- /dev/null
+++ b/nvim/after/plugin/luasnip.lua
@@ -0,0 +1,46 @@
+local has_words_before = function()
+ unpack = unpack or table.unpack
+ local line, col = unpack(vim.api.nvim_win_get_cursor(0))
+ return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
+end
+
+local luasnip = require("luasnip")
+local cmp = require("cmp")
+
+cmp.setup({
+
+ -- ... Your other configuration ...
+
+ mapping = {
+
+ -- ... Your other mappings ...
+
+ ["<Tab>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable()
+ -- they way you will only jump inside the snippet region
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ elseif has_words_before() then
+ cmp.complete()
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+
+ ["<S-Tab>"] = 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" }),
+
+ -- ... Your other mappings ...
+ },
+
+ -- ... Your other configuration ...
+})