summaryrefslogtreecommitdiff
path: root/home
diff options
context:
space:
mode:
authorLinnnus <[email protected]>2023-09-14 17:30:09 +0200
committerLinnnus <[email protected]>2023-09-14 17:31:35 +0200
commit3313983c0788b7fa0f960df7bccccafe3fe03005 (patch)
tree9e41a5582c46b1985479ea6b23e2b2881361ec25 /home
parent935ad9551eecab0bfecacd94dbc0942e86eb857e (diff)
Add completion to neovim
Diffstat (limited to 'home')
-rw-r--r--home/neovim/completion.nix50
-rw-r--r--home/neovim/default.nix1
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
];