From 4f3063a34ed9742f2461e857a6b8e0813ba51d83 Mon Sep 17 00:00:00 2001 From: Arthur Wambst Date: Wed, 9 Apr 2025 15:16:23 +0200 Subject: [PATCH] trying to add cmp --- flake.lock | 26 +++++++++++ flake.nix | 130 ++++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 136 insertions(+), 20 deletions(-) diff --git a/flake.lock b/flake.lock index ab55c78..d8aaace 100644 --- a/flake.lock +++ b/flake.lock @@ -198,6 +198,30 @@ "type": "github" } }, + "plugin-cmp": { + "flake": false, + "locked": { + "narHash": "sha256-9tXrFiQyeIgGf4Q9fSdkrWgfumTjV4Dgr5Jss9k14nU=", + "type": "file", + "url": "https://github.com/hrsh7th/nvim-cmp" + }, + "original": { + "type": "file", + "url": "https://github.com/hrsh7th/nvim-cmp" + } + }, + "plugin-cmp-vsnip": { + "flake": false, + "locked": { + "narHash": "sha256-9xQVRhyv4RcqptqOUCJcEirVnQ64z2Rz4hX3eGv+2rw=", + "type": "file", + "url": "https://github.com/hrsh7th/cmp-vsnip" + }, + "original": { + "type": "file", + "url": "https://github.com/hrsh7th/cmp-vsnip" + } + }, "plugin-dracula": { "flake": false, "locked": { @@ -246,6 +270,8 @@ "inputs": { "neovim": "neovim", "nixpkgs": "nixpkgs", + "plugin-cmp": "plugin-cmp", + "plugin-cmp-vsnip": "plugin-cmp-vsnip", "plugin-dracula": "plugin-dracula", "plugin-gruvbox": "plugin-gruvbox", "plugin-lsp": "plugin-lsp" diff --git a/flake.nix b/flake.nix index 37af22a..9b8fb42 100644 --- a/flake.nix +++ b/flake.nix @@ -14,31 +14,121 @@ flake = false; }; plugin-gruvbox = { - url = "github:ellisonleao/gruvbox.nvim"; - flake = false; + url = "github:ellisonleao/gruvbox.nvim"; + flake = false; }; plugin-lsp = { - url = "https://github.com/neovim/nvim-lspconfig"; - flake = false; + url = "https://github.com/neovim/nvim-lspconfig"; + flake = false; }; + plugin-cmp = { + url = "https://github.com/hrsh7th/nvim-cmp"; + flake = false; + }; + plugin-cmp-vsnip = { + url = "https://github.com/hrsh7th/cmp-vsnip"; + flake = false; + }; + }; outputs = { self, nixpkgs, neovim, ... }@inputs: { - nixosModules.neovim = {config, pkgs, ...} : - { - environment.systemPackages = with pkgs; [ - inputs.neovim.packages.${pkgs.system}.neovim - ]; - programs.neovim = { - enable = true; - configure.customRC = '' - set runtimepath+=${inputs.plugin-dracula} - set runtimepath+=${inputs.plugin-lsp} - colorscheme dracula - autocmd BufEnter * :setlocal tabstop=4 shiftwidth=4 expandtab - autocmd BufEnter *.nix :setlocal tabstop=2 shiftwidth=2 expandtab - ''; - }; - }; + nixosModules.neovim = {config, pkgs, ...} : + { + environment.systemPackages = with pkgs; [ + inputs.neovim.packages.${pkgs.system}.neovim + ]; + programs.neovim = { + enable = true; + configure.customRC = '' + set runtimepath+=${inputs.plugin-dracula} + set runtimepath+=${inputs.plugin-lsp} + set runtimepath+=${inputs.plugin-cmp} + colorscheme dracula + autocmd BufEnter * :setlocal tabstop=2 shiftwidth=2 expandtab + autocmd BufEnter *.nix :setlocal tabstop=2 shiftwidth=2 expandtab + lua <'] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = 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 = 'vsnip' }, -- For vsnip users. + -- { name = 'luasnip' }, -- For luasnip users. + -- { name = 'ultisnips' }, -- For ultisnips users. + -- { name = 'snippy' }, -- For snippy users. + }, { + { name = 'buffer' }, + }) + }) + + -- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below + -- Set configuration for specific filetype. + --[[ cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'git' }, + }, { + { name = 'buffer' }, + }) + }) + require("cmp_git").setup() ]]-- + + -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } + }) + + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }), + matching = { disallow_symbol_nonprefix_matching = false } + }) + + -- Set up lspconfig. + local capabilities = require('cmp_nvim_lsp').default_capabilities() + -- Replace with each lsp server you've enabled. + require('lspconfig')[pyright, rust_analyzer].setup { + capabilities = capabilities + } +EOF + ''; + }; + }; }; }