diff options
author | tv <tv@krebsco.de> | 2016-06-30 19:46:50 +0200 |
---|---|---|
committer | tv <tv@krebsco.de> | 2016-06-30 19:46:50 +0200 |
commit | 0add7e1a47f4e4c8fd3c122ea25a0e6cf7d5e6fe (patch) | |
tree | 9051a4e399d66500259dc778ceda9bec12b67278 | |
parent | c6311d2187f5a64223ae33238de13206bcd3b53b (diff) |
tv vim: use ctrlp
-rw-r--r-- | tv/2configs/vim.nix | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/tv/2configs/vim.nix b/tv/2configs/vim.nix index 20e1943e7..6c277542d 100644 --- a/tv/2configs/vim.nix +++ b/tv/2configs/vim.nix @@ -14,6 +14,7 @@ let }; extra-runtimepath = concatMapStringsSep "," (pkg: "${pkg.rtp}") [ + pkgs.vimPlugins.ctrlp pkgs.vimPlugins.undotree (pkgs.vimUtils.buildVimPlugin { name = "file-line-1.0"; @@ -285,6 +286,9 @@ let vim = pkgs.writeDashBin "vim" '' set -efu (umask 0077; exec ${pkgs.coreutils}/bin/mkdir -p ${toString mkdirs}) + if test $# = 0 && test -e "$PWD/.ctrlpignore"; then + set -- +CtrlP + fi exec ${pkgs.vim}/bin/vim "$@" ''; @@ -332,9 +336,6 @@ let au BufRead,BufNewFile /dev/shm/* set nobackup nowritebackup noswapfile - nmap <esc>q :buffer - nmap <M-q> :buffer - cnoremap <C-A> <Home> noremap <C-c> :q<cr> @@ -360,6 +361,41 @@ let noremap <esc>[c <nop> | noremap! <esc>[c <nop> noremap <esc>[d <nop> | noremap! <esc>[d <nop> vnoremap u <nop> + + " + " CtrlP-related configuration + " + hi CtrlPPrtCursor ctermbg=199 + hi CtrlPMatch ctermfg=226 + set showtabline=0 + let g:ctrlp_cmd = 'CtrlPMixed' + let g:ctrlp_map = '<esc>q' + let g:ctrlp_working_path_mode = 'a' + " Cannot use autoignore extension because it fails to initialize properly: + " when started the first time, e.g. using `vim +CtrlP`, then it won't use + " patterns from .ctrlpignore until CtrlP gets reopened and F5 pressed... + fu s:gen_ctrlp_custom_ignore() + let l:prefix = getcwd() + let l:pats = readfile(l:prefix . "/.ctrlpignore") + let l:pats = filter(l:pats, 's:ctrlpignore_filter(v:val)') + let l:pats = map(l:pats, 's:ctrlpignore_rewrite(v:val)') + return l:prefix . "\\(" . join(l:pats, "\\|") . "\\)" + endfu + fu s:ctrlpignore_filter(s) + " filter comments and blank lines + return match(a:s, '^\s*\(#.*\)''$') == -1 + endfu + fu s:ctrlpignore_rewrite(s) + if a:s[0:0] == "^" + return "/" . a:s[1:] + else + return "/.*" . a:s + endif + endfu + try + let g:ctrlp_custom_ignore = s:gen_ctrlp_custom_ignore() + catch /^Vim\%((\a\+)\)\=:E484/ + endtry ''; in out |