require('compe').setup { enabled = true, autocomplete = true, debug = false, min_length = 1, preselect = 'always', source = { path = true, buffer = true, calc = false, nvim_lsp = true, nvim_lua = false, vsnip = false, luasnip = true, utilsnips = false, tags = false, spell = true } } -- Use (S-)Tab in completion menu -- See https://github.com/neovim/nvim-lspconfig/wiki/Snippets 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 _G.tab_complete = function() if vim.fn.pumvisible() == 1 then return t '' elseif require('luasnip').expand_or_jumpable() then return t 'luasnip-expand-or-jump' elseif check_back_space() then return t '' else return vim.fn['compe#complete']() end end _G.s_tab_complete = function() if vim.fn.pumvisible() == 1 then return t '' elseif require('luasnip').jumpable(-1) then return t 'luasnip-jump-prev' else return t '' end end vim.api.nvim_set_keymap('i', '', 'v:lua.tab_complete()', {expr = true}) vim.api.nvim_set_keymap('s', '', 'v:lua.tab_complete()', {expr = true}) vim.api.nvim_set_keymap('i', '', 'v:lua.s_tab_complete()', {expr = true}) vim.api.nvim_set_keymap('s', '', 'v:lua.s_tab_complete()', {expr = true}) vim.api.nvim_set_keymap('i', '', 'compe#complete()', {expr = true}) vim.api.nvim_set_keymap('i', '', 'compe#close(\'\')', {expr = true})