From 71f8e1e11e6bde71b5948d5e1b353bf6b426c12e Mon Sep 17 00:00:00 2001 From: Giulio De Pasquale Date: Thu, 13 Oct 2022 18:07:39 +0200 Subject: [PATCH] Remove easyalign, nerdtree and other unused plugins. Reordered vim plugins, added leap --- roles/home/common.nix | 244 +++++++++++++++++++----------------------- 1 file changed, 113 insertions(+), 131 deletions(-) diff --git a/roles/home/common.nix b/roles/home/common.nix index d4da7e0..a211c25 100644 --- a/roles/home/common.nix +++ b/roles/home/common.nix @@ -3,18 +3,20 @@ { imports = [ ./zsh.nix ./git.nix ]; + home = { stateVersion = "21.05"; sessionVariables = { EDITOR = "nvim"; VISUAL = "nvim"; }; - packages = with pkgs; [ rizin sshfs nixfmt victor-mono ]; }; programs.neovim = { enable = true; + viAlias = true; + vimAlias = true; extraPackages = with pkgs; [ nodePackages.prettier nodePackages.pyright @@ -24,6 +26,26 @@ clang-tools rustfmt ]; + plugins = with pkgs.vimPlugins; [ + vim-nix + molokai + vim-airline + vim-airline-themes + vim-lsp + vim-indent-guides + vim-signify + vim-fugitive + vimtex + neoformat + nvim-lspconfig + vim-vsnip + nvim-cmp + cmp-nvim-lsp + (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) + nvim-treesitter-textobjects + pkgs.vimExtraPlugins.leap-nvim + ]; + extraConfig = '' " syntax syntax enable @@ -36,38 +58,16 @@ set wildmode=longest:full,full " remapping popup menu (command autocompletion) - " cnoremap pumvisible() ? "" : " - " cnoremap pumvisible() ? "" : "" - " cnoremap pumvisible() ? "":"" + cnoremap pumvisible() ? "" : " + cnoremap pumvisible() ? "" : "" + cnoremap pumvisible() ? "":"" + " set line numbers set number " enable indent guides let g:indent_guides_enable_on_vim_startup = 1 - " Exit Vim if NERDTree is the only window left. - autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | - \ quit | endif - - " Start NERDTree. If a file is specified, move the cursor to its window. - autocmd StdinReadPre * let s:std_in=1 - autocmd VimEnter * NERDTree | if argc() > 0 || exists("s:std_in") | wincmd p | endif - - " Start NERDTree when Vim starts with a directory argument. - autocmd StdinReadPre * let s:std_in=1 - autocmd VimEnter * if argc() == 1 && isdirectory(argv()[0]) && !exists('s:std_in') | - \ execute 'NERDTree' argv()[0] | wincmd p | enew | execute 'cd '.argv()[0] | endif - - " Exit Vim if NERDTree is the only window left. - autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | - \ quit | endif - - " Start interactive EasyAlign in visual mode (e.g. vipga) - xmap ga (EasyAlign) - - " Start interactive EasyAlign for a motion/text object (e.g. gaip) - nmap ga (EasyAlign) - " Highlight row and column set cul set cuc @@ -86,123 +86,105 @@ let g:neoformat_basic_format_trim = 1 lua << EOF - ------------------ - -- Setup nvim-cmp. - ------------------ - -- Set completeopt to have a better completion experience - vim.o.completeopt = 'menuone,noselect' + -- Setup leap-nvim keymappings + require('leap').add_default_mappings() - local cmp = require'cmp' + ------------------ + -- Setup nvim-cmp. + ------------------ - cmp.setup({ - snippet = { - -- REQUIRED - you must specify a snippet engine - expand = function(args) - vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. - end, - }, - mapping = { - [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), - [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), - [''] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. - [''] = cmp.mapping({ - i = cmp.mapping.abort(), - c = cmp.mapping.close(), - }), - [''] = 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 = 'buffer' }, - }) + -- Set completeopt to have a better completion experience + vim.o.completeopt = 'menuone,noselect' + + local cmp = require'cmp' + + cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users. + end, + }, + mapping = { + [''] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }), + [''] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }), + [''] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `` mapping. + [''] = cmp.mapping({ + i = cmp.mapping.abort(), + c = cmp.mapping.close(), + }), + [''] = 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 = 'buffer' }, }) + }) - -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline('/', { - sources = { - { name = 'buffer' } - } + -- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline('/', { + sources = { + { name = 'buffer' } + } + }) + + -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). + cmp.setup.cmdline(':', { + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } }) + }) - -- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). - cmp.setup.cmdline(':', { - sources = cmp.config.sources({ - { name = 'path' } - }, { - { name = 'cmdline' } - }) - }) + -- Setup lspconfig. + local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) - -- Setup lspconfig. - local capabilities = require('cmp_nvim_lsp').update_capabilities(vim.lsp.protocol.make_client_capabilities()) + -------------- + -- LSP Servers + -------------- - -------------- - -- LSP Servers - -------------- + require'lspconfig'.pyright.setup{ + capabilities = capabilities + } + require'lspconfig'.rust_analyzer.setup{ + capabilities = capabilities + } + require'lspconfig'.rnix.setup{ + capabilities = capabilities + } + require'lspconfig'.clangd.setup{ + capabilities = capabilities, + cmd = { + "clangd", + "--background-index", + "--clang-tidy", + }, + } - require'lspconfig'.pyright.setup{ - capabilities = capabilities - } - require'lspconfig'.rust_analyzer.setup{ - capabilities = capabilities - } - require'lspconfig'.rnix.setup{ - capabilities = capabilities - } - require'lspconfig'.clangd.setup{ - capabilities = capabilities, - cmd = { - "clangd", - "--background-index", - "--clang-tidy", + ------------------- + -- TreeSitter setup + ------------------- + require'nvim-treesitter.configs'.setup { + highlight = { + enable = true, + custom_captures = { + -- Highlight the @foo.bar capture group with the "Identifier" highlight group. + ["foo.bar"] = "Identifier", }, - } - - ------------------- - -- TreeSitter setup - ------------------- - require'nvim-treesitter.configs'.setup { - highlight = { - enable = true, - custom_captures = { - -- Highlight the @foo.bar capture group with the "Identifier" highlight group. - ["foo.bar"] = "Identifier", - }, - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = false, - }, - } + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + }, + } EOF ''; - viAlias = true; - vimAlias = true; - plugins = with pkgs.vimPlugins; [ - vim-nix - molokai - vim-airline - vim-airline-themes - vim-lsp - vim-indent-guides - vim-signify - nerdtree - vim-easy-align - vim-fugitive - vimtex - neoformat - nvim-lspconfig - vim-vsnip - nvim-cmp - cmp-nvim-lsp - (nvim-treesitter.withPlugins (_: pkgs.tree-sitter.allGrammars)) - nvim-treesitter-textobjects - ]; }; }