From 866bb8b147bdcba16ecf766a423a7ee02b4da1cc Mon Sep 17 00:00:00 2001 From: Fredrik Ekre Date: Fri, 29 Apr 2022 23:38:33 +0200 Subject: [PATCH] [nvim] Update keybindings for nvim-cmp. --- .config/nvim/init.vim | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim index ee94679..14e18ef 100644 --- a/.config/nvim/init.vim +++ b/.config/nvim/init.vim @@ -7,7 +7,8 @@ lua << EOF -- Setup nvim-cmp. vim.opt.completeopt = {"menu", "menuone", "noselect"} -local cmp = require'cmp' +local cmp = require('cmp') +local cmp_types = require('cmp.types') local source_mapping = {buffer = '[Buffer]', nvim_lsp = '[LSP]'} cmp.setup({ @@ -17,9 +18,25 @@ cmp.setup({ end, }, mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping(cmp.mapping.scroll_docs( 4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), + -- [''] = cmp.mapping(cmp.mapping.select_next_item({ behavior = cmp_types.cmp.SelectBehavior.Insert })), + -- This is to make the hotkey for both initiating completion and select next item + [''] = function(fallback) + if cmp.visible() then + cmp.select_next_item({ behavior = cmp_types.cmp.SelectBehavior.Insert }) + elseif (function() + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil + end)() then + cmp.complete() + else + fallback() + end + end, + [''] = cmp.mapping.select_prev_item({ behavior = cmp_types.cmp.SelectBehavior.Insert }), + [''] = cmp.mapping.scroll_docs( 4), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.complete(), -- same as above + [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = false }), }), sources = cmp.config.sources({