2021-03-31 22:39:21 -04:00
|
|
|
vim.o.completeopt = "menuone,noselect"
|
2021-06-30 21:54:30 -05:00
|
|
|
-- Avoid having a "Pattern not found" message
|
|
|
|
|
vim.cmd("set shortmess+=c")
|
2021-03-31 22:39:21 -04:00
|
|
|
|
|
|
|
|
require'compe'.setup {
|
|
|
|
|
enabled = true;
|
|
|
|
|
autocomplete = true;
|
|
|
|
|
debug = false;
|
|
|
|
|
min_length = 1;
|
2021-06-30 21:54:30 -05:00
|
|
|
preselect = 'always';
|
2021-03-31 22:39:21 -04:00
|
|
|
throttle_time = 80;
|
|
|
|
|
source_timeout = 200;
|
|
|
|
|
incomplete_delay = 400;
|
|
|
|
|
max_abbr_width = 100;
|
|
|
|
|
max_kind_width = 100;
|
|
|
|
|
max_menu_width = 100;
|
2021-06-30 21:54:30 -05:00
|
|
|
documentation = true;
|
2021-03-31 22:39:21 -04:00
|
|
|
|
|
|
|
|
source = {
|
|
|
|
|
path = true;
|
2021-06-30 21:54:30 -05:00
|
|
|
buffer = false;
|
2021-07-14 14:46:57 -05:00
|
|
|
calc = false;
|
|
|
|
|
vsnip = false; -- Could be used if I want to start using snippets.
|
2021-03-31 22:39:21 -04:00
|
|
|
nvim_lsp = true;
|
|
|
|
|
nvim_lua = true;
|
|
|
|
|
tags = true;
|
|
|
|
|
snippets_nvim = true;
|
|
|
|
|
treesitter = true;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
local t = function(str)
|
|
|
|
|
return vim.api.nvim_replace_termcodes(str, true, true, true)
|
|
|
|
|
end
|
|
|
|
|
|
2021-06-21 19:57:46 -05:00
|
|
|
_G.comp_jump_if_avail = function()
|
2021-03-31 22:39:21 -04:00
|
|
|
if vim.fn.pumvisible() == 1 then
|
|
|
|
|
return t "<C-n>"
|
|
|
|
|
end
|
|
|
|
|
end
|
2021-06-21 19:57:46 -05:00
|
|
|
_G.comp_jump_prev_if_avail = function()
|
2021-03-31 22:39:21 -04:00
|
|
|
if vim.fn.pumvisible() == 1 then
|
2021-06-21 19:57:46 -05:00
|
|
|
return t "<C-p>"
|
2021-03-31 22:39:21 -04:00
|
|
|
end
|
|
|
|
|
end
|
2021-06-21 19:57:46 -05:00
|
|
|
_G.tab_complete = function()
|
2021-03-31 22:39:21 -04:00
|
|
|
if vim.fn.pumvisible() == 1 then
|
2021-06-21 19:57:46 -05:00
|
|
|
return vim.fn['compe#confirm']('')
|
2021-03-31 22:39:21 -04:00
|
|
|
else
|
2021-06-21 19:57:46 -05:00
|
|
|
return t "<Tab>"
|
2021-03-31 22:39:21 -04:00
|
|
|
end
|
|
|
|
|
end
|
2021-06-30 21:54:30 -05:00
|
|
|
_G.enter_complete = function()
|
|
|
|
|
if vim.fn.pumvisible() == 1 then
|
|
|
|
|
return vim.fn['compe#confirm']('')
|
|
|
|
|
else
|
|
|
|
|
return t "<CR>"
|
|
|
|
|
end
|
|
|
|
|
end
|
2021-03-31 22:39:21 -04:00
|
|
|
|
2021-06-21 19:57:46 -05:00
|
|
|
vim.api.nvim_set_keymap("i", "<C-j>", "v:lua.comp_jump_if_avail()", {expr = true})
|
|
|
|
|
vim.api.nvim_set_keymap("s", "<C-j>", "v:lua.comp_jump_if_avail()", {expr = true})
|
2021-06-30 21:54:30 -05:00
|
|
|
-- The next 4 funtcions don't work if compe doesn't automatically select the first option.
|
2021-07-14 14:46:57 -05:00
|
|
|
-- meaning the preselect option has to be set to alwasy.
|
2021-06-21 19:57:46 -05:00
|
|
|
vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
|
|
|
|
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
|
2021-06-30 21:54:30 -05:00
|
|
|
vim.api.nvim_set_keymap("i", "<CR>", "v:lua.enter_complete()", {expr = true})
|
|
|
|
|
vim.api.nvim_set_keymap("s", "<CR>", "v:lua.enter_complete()", {expr = true})
|
2021-06-21 19:57:46 -05:00
|
|
|
vim.api.nvim_set_keymap("i", "<C-k>", "v:lua.comp_jump_prev_if_avail()", {expr = true})
|
|
|
|
|
vim.api.nvim_set_keymap("s", "<C-k>", "v:lua.comp_jump_prev_if_avail()", {expr = true})
|
2021-06-30 21:54:30 -05:00
|
|
|
|