diff --git a/nixpkgs/programs/neovim.nix b/nixpkgs/programs/neovim.nix index 2d56ed8..da4d581 100644 --- a/nixpkgs/programs/neovim.nix +++ b/nixpkgs/programs/neovim.nix @@ -1,4 +1,4 @@ -{ pkgs, home, colorTheme, ... }: +{ pkgs, home, ... }: { programs.neovim = { enable = true; @@ -8,6 +8,7 @@ vimdiffAlias = true; plugins = with pkgs.vimPlugins; [ + direnv-vim vim-commentary vim-gitgutter fzf-vim @@ -17,7 +18,48 @@ vim-fugitive vim-css-color semshi - goyo-vim + { + plugin = goyo-vim; + + # TODO: The mapleader definition should be in extraConfig, but setting + # the mapleader before defining keymaps messes things up. + config = '' + let mapleader = " " + + let g:goyo_width = '90%' + let g:goyo_height = '85%' + let g:goyo_linenr = 1 + + function! s:goyo_enter() + if executable('tmux') && strlen($TMUX) + silent !tmux set status off + silent !tmux list-panes -F '\#F' | grep -q Z || tmux resize-pane -Z + endif + set noshowmode + set noshowcmd + set scrolloff=999 + Limelight + " ... + endfunction + + function! s:goyo_leave() + if executable('tmux') && strlen($TMUX) + silent !tmux set status on + silent !tmux list-panes -F '\#F' | grep -q Z && tmux resize-pane -Z + endif + set showmode + set showcmd + set scrolloff=5 + Limelight! + " ... + endfunction + + autocmd! User GoyoEnter nested call goyo_enter() + autocmd! User GoyoLeave nested call goyo_leave() + + nnoremap z :Goyo + ''; + } limelight-vim vim-tmux-navigator vim-polyglot @@ -46,6 +88,16 @@ extraConfig = '' set clipboard+=unnamedplus set number relativenumber + + set undofile + set undodir=~/.cache/vim/undodir + + nnoremap :m .+1== + nnoremap :m .-2== + inoremap :m .+1==gi + inoremap :m .-2==gi + vnoremap :m '>+1gv=gv + vnoremap :m '<-2gv=gv ''; };