diff options
author | Linnnus <[email protected]> | 2023-09-14 17:30:09 +0200 |
---|---|---|
committer | Linnnus <[email protected]> | 2023-09-14 17:31:35 +0200 |
commit | 3313983c0788b7fa0f960df7bccccafe3fe03005 (patch) | |
tree | 9e41a5582c46b1985479ea6b23e2b2881361ec25 /home/neovim | |
parent | 935ad9551eecab0bfecacd94dbc0942e86eb857e (diff) |
Add completion to neovim
Diffstat (limited to 'home/neovim')
-rw-r--r-- | home/neovim/completion.nix | 50 | ||||
-rw-r--r-- | home/neovim/default.nix | 1 |
2 files changed, 51 insertions, 0 deletions
diff --git a/home/neovim/completion.nix b/home/neovim/completion.nix new file mode 100644 index 0000000..f3be603 --- /dev/null +++ b/home/neovim/completion.nix @@ -0,0 +1,50 @@ +# This module sets up auto completion for Neovim. + +{ pkgs, lib, ... }: + +{ + programs.neovim.plugins = with pkgs.vimPlugins; [ + # This is the actual completion engine. + { + plugin = nvim-cmp; + type = "lua"; + config = '' + local cmp = require("cmp") + + cmp.setup({ + mapping = cmp.mapping.preset.insert({ + ["<C-b>"] = cmp.mapping.scroll_docs(-4), + ["<C-f>"] = cmp.mapping.scroll_docs(4), + ["<C-j>"] = cmp.mapping.select_next_item(), + ["<C-k>"] = cmp.mapping.select_prev_item(), + ["<C-Space>"] = cmp.mapping.complete(), + ["<C-e>"] = cmp.mapping.abort(), + ["<Tab>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "calc" }, + { name = "path" }, + { name = "buffer" }, + }), + -- disable completion in comments + enabled = function() + local context = require("cmp.config.context") + -- keep command mode completion enabled when cursor is in a comment + if vim.api.nvim_get_mode().mode == "c" then + return true + else + return not context.in_treesitter_capture("comment") + and not context.in_syntax_group("Comment") + end + end + }) + ''; + } + # The following are plugins for the... completion plugin. + cmp-nvim-lsp + cmp-calc + cmp-buffer + cmp-path + ]; +} diff --git a/home/neovim/default.nix b/home/neovim/default.nix index 5ba4340..ccf6dc5 100644 --- a/home/neovim/default.nix +++ b/home/neovim/default.nix @@ -7,6 +7,7 @@ [ ./lsp.nix ./filetype.nix + ./completion.nix ./plugins.nix ]; |