From dd829bbad56e53a35d86e8e43165a92268339929 Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Thu, 29 Oct 2020 20:15:18 +0100 Subject: neovim: configure smart completion --- user/nvim/coc-settings.json | 5 +++++ user/nvim/init.vim | 25 +++++++++++++++++++++++++ user/settings/base.nix | 25 ++++++++++++++----------- 3 files changed, 44 insertions(+), 11 deletions(-) create mode 100644 user/nvim/coc-settings.json create mode 100644 user/nvim/init.vim (limited to 'user') diff --git a/user/nvim/coc-settings.json b/user/nvim/coc-settings.json new file mode 100644 index 00000000..718446b1 --- /dev/null +++ b/user/nvim/coc-settings.json @@ -0,0 +1,5 @@ +{ + "json.enable": true, + "suggest.enablePreview": true +} + diff --git a/user/nvim/init.vim b/user/nvim/init.vim new file mode 100644 index 00000000..0b2438d5 --- /dev/null +++ b/user/nvim/init.vim @@ -0,0 +1,25 @@ +set autoindent + +set background=light +set shiftwidth=2 +set tabstop=2 +set noexpandtab +set relativenumber +set smartcase + +" use for trigger completion and navigate to the next complete item +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~ '\s' +endfunction + +inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ coc#refresh() + +inoremap pumvisible() ? "\" : "\" +inoremap pumvisible() ? "\" : "\" + +" use to trigger completion +inoremap coc#refresh() diff --git a/user/settings/base.nix b/user/settings/base.nix index b5031dc7..823aa5f3 100644 --- a/user/settings/base.nix +++ b/user/settings/base.nix @@ -9,20 +9,22 @@ programs.neovim = { enable = true; vimAlias = true; + vimdiffAlias = true; + package = pkgs.unstable.neovim-unwrapped; configure = { - customRC = '' - set autoindent - - set background=light - set shiftwidth=2 - set tabstop=2 - set noexpandtab - set relativenumber - set smartcase - ''; - packages.myVimPackage = with pkgs.vimPlugins; { + customRC = builtins.readFile ../nvim/init.vim; + packages.myVimPackage = with pkgs.unstable.vimPlugins; { start = [ commentary + coc-css + coc-eslint + coc-git + coc-html + coc-json + coc-nvim + coc-prettier + coc-tabnine + coc-yaml vim-surround vim-nix ]; @@ -30,6 +32,7 @@ }; }; }; + xdg.configFile."nvim/coc-settings.json".source = ../nvim/coc-settings.json; home.sessionVariables = { EMAIL = "alan@alanpearce.eu"; XDG_CACHE_HOME = if pkgs.stdenv.isDarwin then "$HOME/Library/Caches/XDG" else "$HOME/.cache"; -- cgit 1.4.1