From b51f1ae28924a752258e7607fbc3210f9b18eaac Mon Sep 17 00:00:00 2001 From: Gustaf Rydholm Date: Thu, 22 Jul 2021 00:08:36 +0200 Subject: Updates based on Chris's lunarvim --- .config/nvim/lua/core/compe.lua | 96 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 .config/nvim/lua/core/compe.lua (limited to '.config/nvim/lua/core/compe.lua') diff --git a/.config/nvim/lua/core/compe.lua b/.config/nvim/lua/core/compe.lua new file mode 100644 index 0000000..c8152ad --- /dev/null +++ b/.config/nvim/lua/core/compe.lua @@ -0,0 +1,96 @@ +local M = {} +M.config = function() + O.completion = { + 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, + documentation = true, + + source = { + path = { kind = "  (Path)" }, + buffer = { kind = "  (Buffer)" }, + calc = { kind = "  (Calc)" }, + vsnip = { kind = "  (Snippet)" }, + nvim_lsp = { kind = "  (LSP)" }, + nvim_lua = false, + spell = { kind = "  (Spell)" }, + tags = false, + vim_dadbod_completion = false, + snippets_nvim = false, + ultisnips = false, + treesitter = false, + emoji = { kind = " ﲃ (Emoji)", filetypes = { "markdown", "text" } }, + -- for emoji press : (idk if that in compe tho) + }, + } +end + +M.setup = function() + vim.g.vsnip_snippet_dir = O.vsnip_dir + + local status_ok, compe = pcall(require, "compe") + if not status_ok then + return + end + + compe.setup(O.completion) + + 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 + --- jump to prev/next snippet's placeholder + _G.tab_complete = function() + if vim.fn.pumvisible() == 1 then + return t "" + elseif vim.fn.call("vsnip#available", { 1 }) == 1 then + return t "(vsnip-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 vim.fn.call("vsnip#jumpable", { -1 }) == 1 then + return t "(vsnip-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()", { noremap = true, silent = true, expr = true }) + vim.api.nvim_set_keymap("i", "", "compe#confirm('')", { noremap = true, silent = true, expr = true }) + vim.api.nvim_set_keymap("i", "", "compe#close('')", { noremap = true, silent = true, expr = true }) + vim.api.nvim_set_keymap("i", "", "compe#scroll({ 'delta': +4 })", { noremap = true, silent = true, expr = true }) + vim.api.nvim_set_keymap("i", "", "compe#scroll({ 'delta': -4 })", { noremap = true, silent = true, expr = true }) +end + +return M -- cgit v1.2.3-70-g09d2