summaryrefslogtreecommitdiff
path: root/shared/home-manager/neovim/completion.nix
diff options
context:
space:
mode:
authorLinnnus <[email protected]>2024-12-21 15:47:33 +0100
committerLinnnus <[email protected]>2024-12-21 16:19:04 +0100
commit8353554315564b89dfe27d5130080ed04a0a65ad (patch)
tree896de88b6ea2701692b3ffe977c23947a786318e /shared/home-manager/neovim/completion.nix
parent9b7ed17b27157a25e57a6e38be3bcfeaa70ec9e8 (diff)
Move to a profile-based configuration where common
This patch makes it so common configuration is now located in shared/ and each host basically just becomes a bunch of import statements. The exception here is host-specific configuration like the `*.linus.onl` that live inside `hosts/ahmed/`. Specifically I have: - moved common configuration `shared/{nixos,home-manager,nix-darwin}`. - moved `hosts/common.nix` to `shared/nixos/common-{nix,shell}-settings.nix`. - split `hosts/muhammed/{dev-utils,neovim}` into per-language configuration. This patch was done in preparation for the arrival of a new host, which will need to share a lot of configuration with Muhammed.
Diffstat (limited to 'shared/home-manager/neovim/completion.nix')
-rw-r--r--shared/home-manager/neovim/completion.nix47
1 files changed, 47 insertions, 0 deletions
diff --git a/shared/home-manager/neovim/completion.nix b/shared/home-manager/neovim/completion.nix
new file mode 100644
index 0000000..3776674
--- /dev/null
+++ b/shared/home-manager/neovim/completion.nix
@@ -0,0 +1,47 @@
+# This module sets up auto completion for Neovim.
+{pkgs, ...}: {
+ 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
+ ];
+}