From d325eb2d27063d282eba6983d4756be89197c843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Geoffrey=20=E2=80=9CFrogeye=E2=80=9D=20Preud=27homme?= Date: Tue, 9 Jan 2024 20:00:12 +0100 Subject: [PATCH] vim: Replace nvim-compe with nvim-cmp --- hm/common.nix | 1 - hm/dev/default.nix | 1 + hm/git/default.nix | 2 ++ hm/vim/default.nix | 50 ++++++++++++++++++------------ hm/vim/nvim-compe.lua | 72 ------------------------------------------- 5 files changed, 33 insertions(+), 93 deletions(-) delete mode 100644 hm/vim/nvim-compe.lua diff --git a/hm/common.nix b/hm/common.nix index 451afba..30e6818 100644 --- a/hm/common.nix +++ b/hm/common.nix @@ -43,7 +43,6 @@ ffplay = "ffplay -hide_banner"; numbat = "numbat --intro-banner off"; insect = "numbat"; - bat = "bat -A"; # Frequent mistakes sl = "ls"; diff --git a/hm/dev/default.nix b/hm/dev/default.nix index cbbc18b..fe7cf20 100644 --- a/hm/dev/default.nix +++ b/hm/dev/default.nix @@ -1,6 +1,7 @@ { pkgs, config, ... }: { imports = [ ./c.nix + ./python.nix ./common.nix ]; } diff --git a/hm/git/default.nix b/hm/git/default.nix index 39897b9..0799152 100644 --- a/hm/git/default.nix +++ b/hm/git/default.nix @@ -38,6 +38,8 @@ syntax-theme = "base16"; }; }; + # Also tried difftastic, and while I like the default theme it's a bit + # less configurable lfs.enable = true; userEmail = lib.mkDefault "geoffrey@frogeye.fr"; userName = lib.mkDefault "Geoffrey Frogeye"; diff --git a/hm/vim/default.nix b/hm/vim/default.nix index 74c7da3..f556afc 100644 --- a/hm/vim/default.nix +++ b/hm/vim/default.nix @@ -78,6 +78,34 @@ in # Tabline barbar.enable = true; + # Completion + nvim-cmp = { + enable = true; + mapping = { # Proposed example, since there's no default + "" = "cmp.mapping.complete()"; + "" = "cmp.mapping.scroll_docs(-4)"; + "" = "cmp.mapping.close()"; + "" = "cmp.mapping.scroll_docs(4)"; + "" = "cmp.mapping.confirm({ select = true })"; + "" = { + action = "cmp.mapping.select_prev_item()"; + modes = [ "i" "s" ]; + }; + "" = { + action = "cmp.mapping.select_next_item()"; + modes = [ "i" "s" ]; + }; + }; + sources = [ # Respective plugins will get installed automatically + { name = "buffer"; } + { name = "calc"; } + { name = "nvim_lsp"; } + { name = "path"; } + { name = "vsnip"; } + ]; + }; + lspkind.enable = true; # Add icons to LSP completions + # Go to whatever telescope = { enable = true; @@ -164,16 +192,12 @@ in yamlls.enable = true; # YAML # TODO Check out none-ls }; - onAttach = '' - vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - ''; # Seems needed for auto-completion with nvim-compe }; nvim-lightbulb = { # Shows a lightbulb whenever a codeAction is available under the cursor enable = true; autocmd.enabled = true; }; - lspkind.enable = true; # Add icons to LSP completions # Treesitter treesitter = { @@ -231,13 +255,10 @@ in lsp_signature-nvim # Show argument definition when typing a function # Snippets - vim-vsnip + vim-vsnip vim-vsnip-integ friendly-snippets - - # Auto-completion - nvim-compe - # TODO Archived. Maybe use nvim-cmp and plugins instead? + # TODO luasnip seems to be in Lua and more integrated with Nix. # Git fugitive-gitlab-vim # Open files in GitLab @@ -257,7 +278,6 @@ in ./feline.lua ./symbols-outline-nvim.lua ./lsp_signature-nvim.lua - ./nvim-compe.lua ]; extraConfigVim = '' " GENERAL @@ -272,16 +292,6 @@ in " vim-gutentags let g:gutentags_cache_dir = expand('~/.cache/nvim/tags') - " nvim-compe - " Copy-pasted because I couldn't be bothered - set completeopt=menuone,noselect - - inoremap compe#complete() - inoremap compe#confirm('') - inoremap compe#close('') - inoremap compe#scroll({ 'delta': +4 }) - inoremap compe#scroll({ 'delta': -4 }) - '' + lib.optionalString config.frogeye.extra '' " languagetool let g:languagetool_cmd = "${pkgs.languagetool}/bin/languagetool-commandline" diff --git a/hm/vim/nvim-compe.lua b/hm/vim/nvim-compe.lua deleted file mode 100644 index 81d2274..0000000 --- a/hm/vim/nvim-compe.lua +++ /dev/null @@ -1,72 +0,0 @@ --- Default recommended config -require'compe'.setup { - enabled = true; - autocomplete = true; - debug = false; - min_length = 1; - preselect = 'enable'; - throttle_time = 80; - source_timeout = 200; - resolve_timeout = 800; - incomplete_delay = 400; - max_abbr_width = 100; - max_kind_width = 100; - max_menu_width = 100; - documentation = { - border = { '', '' ,'', ' ', '', '', '', ' ' }, -- the border option is the same as `|help nvim_open_win|` - winhighlight = "NormalFloat:CompeDocumentation,FloatBorder:CompeDocumentationBorder", - max_width = 120, - min_width = 60, - max_height = math.floor(vim.o.lines * 0.3), - min_height = 1, - }; - - source = { - path = true; - buffer = true; - calc = true; - nvim_lsp = true; - vsnip = true; - }; -} - --- Vim instructions were here - -local t = function(str) - return vim.api.nvim_replace_termcodes(str, true, true, true) -end - -local check_back_space = function() - local col = vim.fn.col('.') - 1 - return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nil -end - --- Use (s-)tab to: ---- move to prev/next item in completion menuone ---- jump to prev/next snippet's placeholder -_G.tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "" - elseif vim.fn['vsnip#available'](1) == 1 then - return t "(vsnip-expand-or-jump)" - elseif check_back_space() then - return t "" - else - return vim.fn['compe#complete']() - end -end -_G.s_tab_complete = function() - if vim.fn.pumvisible() == 1 then - return t "" - elseif vim.fn['vsnip#jumpable'](-1) == 1 then - return t "(vsnip-jump-prev)" - else - -- If is not working in your terminal, change it to - return t "" - end -end - -vim.api.nvim_set_keymap("i", "", "v:lua.tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("s", "", "v:lua.tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("i", "", "v:lua.s_tab_complete()", {expr = true}) -vim.api.nvim_set_keymap("s", "", "v:lua.s_tab_complete()", {expr = true})