neovim-config/lua/compe/lua.lua

82 lines
2 KiB
Lua
Raw Normal View History

2021-03-11 19:00:34 +00:00
vim.o.completeopt = "menuone,noselect"
2021-03-13 01:23:02 +00:00
require "compe".setup {
enabled = true,
autocomplete = true,
debug = false,
min_length = 1,
preselect = "enable",
throttle_time = 80,
source_timeout = 200,
incomplete_delay = 400,
max_abbr_width = 100,
max_kind_width = 100,
max_menu_width = 100,
2021-03-23 04:52:29 +00:00
documentation = true,
2021-03-13 01:23:02 +00:00
source = {
path = true,
buffer = true,
calc = true,
vsnip = true,
nvim_lsp = true,
nvim_lua = true,
spell = true,
tags = true,
snippets_nvim = true,
treesitter = true
}
2021-03-11 19:00:34 +00:00
}
local t = function(str)
2021-03-13 01:23:02 +00:00
return vim.api.nvim_replace_termcodes(str, true, true, true)
2021-03-11 19:00:34 +00:00
end
2021-03-31 10:01:05 +00:00
2021-03-31 12:13:17 +00:00
local check_back_space = function()
2021-04-06 02:59:37 +00:00
local col = vim.fn.col(".") - 1
if col == 0 or vim.fn.getline("."):sub(col, col):match("%s") then
2021-03-31 12:13:17 +00:00
return true
else
return false
end
end
2021-04-06 02:59:37 +00:00
-- tab completion
2021-03-31 12:13:17 +00:00
2021-03-31 10:01:05 +00:00
_G.tab_complete = function()
2021-04-06 02:59:37 +00:00
if vim.fn.pumvisible() == 1 then
return t "<C-n>"
elseif check_back_space() then
return t "<Tab>"
else
return vim.fn["compe#complete"]()
end
2021-03-31 10:01:05 +00:00
end
2021-03-11 19:00:34 +00:00
_G.s_tab_complete = function()
2021-03-13 01:23:02 +00:00
if vim.fn.pumvisible() == 1 then
return t "<C-p>"
elseif vim.fn.call("vsnip#jumpable", {-1}) == 1 then
return t "<Plug>(vsnip-jump-prev)"
else
return t "<S-Tab>"
end
2021-03-11 19:00:34 +00:00
end
2021-03-17 14:37:02 +00:00
-- mappings
2021-03-31 10:01:05 +00:00
vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
2021-03-11 19:00:34 +00:00
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
vim.api.nvim_set_keymap("i", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
vim.api.nvim_set_keymap("s", "<S-Tab>", "v:lua.s_tab_complete()", {expr = true})
2021-03-17 14:37:02 +00:00
function _G.completions()
local npairs = require("nvim-autopairs")
if vim.fn.pumvisible() == 1 then
if vim.fn.complete_info()["selected"] ~= -1 then
return vim.fn["compe#confirm"]("<CR>")
end
end
return npairs.check_break_line_char()
end
vim.api.nvim_set_keymap("i", "<CR>", "v:lua.completions()", {expr = true})