},
-- Use <tab> for completion and snippets (supertab)
- -- first: disable default <tab> and <s-tab> behavior in LuaSnip
- {
- "L3MON4D3/LuaSnip",
- keys = function()
- return {}
- end,
- },
- -- then: setup supertab in cmp
{
"hrsh7th/nvim-cmp",
dependencies = {
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")
opts.mapping = vim.tbl_extend("force", opts.mapping, {
["<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()
- -- this way you will only jump inside the snippet region
- elseif luasnip.expand_or_jumpable() then
- luasnip.expand_or_jump()
+ elseif vim.snippet.active({ direction = 1 }) then
+ vim.schedule(function()
+ vim.snippet.jump(1)
+ end)
elseif has_words_before() then
cmp.complete()
else
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
- elseif luasnip.jumpable(-1) then
- luasnip.jump(-1)
+ elseif vim.snippet.active({ direction = -1 }) then
+ vim.schedule(function()
+ vim.snippet.jump(-1)
+ end)
else
fallback()
end