{ plugins = { cmp = { enable = true; settings = { sources = [ { name = "nvim_lsp"; } { name = "buffer"; # text within current buffer option.get_bufnrs.__raw = "vim.api.nvim_list_bufs"; keywordLength = 3; } { name = "path"; # file system paths keywordLength = 3; } { name = "luasnip"; # snippets keywordLength = 3; } ]; mapping = { "" = "cmp.mapping(cmp.mapping.select_next_item(), {'i', 's'})"; "" = "cmp.mapping.select_next_item()"; "" = "cmp.mapping.select_prev_item()"; "" = "cmp.mapping.abort()"; "" = "cmp.mapping.scroll_docs(-4)"; "" = "cmp.mapping.scroll_docs(4)"; "" = "cmp.mapping.complete()"; "" = "cmp.mapping.confirm({ select = true })"; "" = "cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace, select = true })"; }; }; }; cmp-nvim-lsp.enable = true; cmp-path.enable = true; cmp-buffer.enable = true; }; keymaps = [ # Need to map macro recording to another key due to: # https://github.com/hrsh7th/nvim-cmp/issues/1692 { mode = [ "n" ]; key = "q"; action = "q"; options = { noremap = true; silent = true; }; } { mode = [ "n" ]; key = "q"; action = ""; options = { noremap = true; silent = true; }; } ]; }