Sanchayan Maity
e909c059a4
This is required if we want completion to trigger on identifiers like 'if' to be able to select snippets.
69 lines
1.6 KiB
Lua
69 lines
1.6 KiB
Lua
local remap = vim.api.nvim_set_keymap
|
|
|
|
require'compe'.setup {
|
|
enabled = true;
|
|
autocomplete = true;
|
|
debug = false;
|
|
min_length = 2;
|
|
preselect = 'enable';
|
|
throttle_time = 80;
|
|
source_timeout = 200;
|
|
incomplete_delay = 400;
|
|
documentation = true;
|
|
|
|
source = {
|
|
path = true;
|
|
buffer = true;
|
|
calc = true;
|
|
nvim_lsp = true;
|
|
nvim_lua = true;
|
|
omni = false;
|
|
spell = true;
|
|
tags = true;
|
|
treesitter = true;
|
|
snippets_nvim = false;
|
|
vsnip = true;
|
|
};
|
|
}
|
|
|
|
local t = function(str)
|
|
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
|
end
|
|
|
|
local check_back_space = function()
|
|
local col = vim.fn.col('.') - 1
|
|
if col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
end
|
|
|
|
-- Use (S-)tab to:
|
|
-- Move to prev/next item in completion menuone
|
|
|
|
_G.tab_complete = function()
|
|
if vim.fn.pumvisible() == 1 then
|
|
return t "<C-n>"
|
|
elseif vim.fn.call("vsnip#available", {1}) == 1 then
|
|
return t "<Plug>(vsnip-expand-or-jump)"
|
|
elseif check_back_space() then
|
|
return t "<Tab>"
|
|
else
|
|
return vim.fn['compe#complete']()
|
|
end
|
|
end
|
|
|
|
_G.s_tab_complete = function()
|
|
if vim.fn.pumvisible() == 1 then
|
|
return t "<C-p>"
|
|
else
|
|
return t "<S-Tab>"
|
|
end
|
|
end
|
|
|
|
remap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
|
remap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
|
remap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
|
|
remap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
|