Mercurial > dotfiles
changeset 176:c6a072353606
Vim config changes:
* Better working dir management in `vimrc`.
* Better shortcuts for NERDTree and CtrlP.
* Misc stuff.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 20 Jul 2014 17:43:25 -0700 |
parents | 095fb39b2096 |
children | 94a131d9a200 |
files | vim/vimrc |
diffstat | 1 files changed, 76 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/vim/vimrc Thu Jul 10 11:05:19 2014 -0700 +++ b/vim/vimrc Sun Jul 20 17:43:25 2014 -0700 @@ -244,6 +244,12 @@ if has("autocmd") + augroup VimRCAutoCWD + au! + + autocmd BufEnter * call s:SetProjectRootCwd() + augroup END + augroup VimRCFileTypeSettings au! @@ -282,7 +288,6 @@ " Tab navigation nnoremap <C-Tab> :tabnext<cr> nnoremap <C-S-Tab> :tabprevious<cr> -nnoremap <C-W> :tabclose<cr> " Buffer navigation nnoremap <C-S-right> :bnext<cr> @@ -294,14 +299,16 @@ nnoremap <C-left> :wincmd h<cr> nnoremap <C-right> :wincmd l<cr> -" Open NERDtree. -nnoremap <F2> :NERDTreeToggle %:p:h<cr> +" Switch buffers. +nnoremap <F2> :execute ("buffer " . bufname("#"))<cr> -" Switch buffers. -nnoremap <F3> :execute ("buffer " . bufname("#"))<cr> +" NERDTree. +nnoremap <F3> :call <SID>ToggleNERDTree()<cr> +nnoremap <F4> :call <SID>FindInNERDTree()<cr> " Tagbar. -nnoremap <F8> :TagbarToggle<cr> +nnoremap <F5> :TagbarToggle<cr> +nnoremap <F6> :TagbarOpenAutoClose<cr> " Common typos. nnoremap ; : @@ -330,7 +337,8 @@ " Ctrl-P mappings. nnoremap <silent> <C-p> :CtrlP<cr> nnoremap <silent> <C-o> :CtrlPBuffer<cr> -nnoremap <silent> <C-i> :CtrlPMRU<cr> +nnoremap <silent> <C-i> :CtrlPTag<cr> +nnoremap <silent> <Tab> :CtrlPMRUFiles<cr> " Switch between FR and US keyboard layouts. nnoremap <C-l>f :setlocal keymap=french<cr> @@ -430,6 +438,65 @@ call cursor(l, c) endfunction +function! s:FindProjectRoot(cur, marker) abort + let l:cur = a:cur + let l:previous_cur = '' + let l:slash = '/' + if has('win32') + let l:slash = '\\' + endif + while l:cur != l:previous_cur + let l:marker_path = l:cur . l:slash . a:marker + if glob(l:marker_path) != '' + return fnamemodify(l:cur, ':p') + endif + let l:previous_cur = l:cur + let l:cur = fnamemodify(l:cur, ':h') + endwhile + return '' +endfunction + +function! s:SetProjectRootCwd() abort + let l:cur_file_dir = expand('%:p:h', 1) + if l:cur_file_dir =~ '\v^.+://' + return + endif + let l:root = l:cur_file_dir + let l:markers = g:ctrlp_root_markers[:] + let l:markers += ['.git', '.hg', '.svn', '.bzr', '_darcs'] + for marker in l:markers + let l:proj_root = s:FindProjectRoot(l:cur_file_dir, marker) + if l:proj_root != '' + let l:root = l:proj_root + break + endif + endfor + execute 'lcd!' fnameescape(l:root) +endfunction + +function! s:ToggleNERDTree() abort + let l:was_open = nerdtree#isTreeOpen() + NERDTreeToggle + if !l:was_open + wincmd p + NERDTreeCWD + wincmd p + NERDTreeFind + endif +endfunction + +function! s:FindInNERDTree() abort + if !nerdtree#isTreeOpen() + call s:ToggleNERDTree() + else + if getbufvar('%', 'NERDTreeType') != '' + wincmd p + else + NERDTreeFind + endif + endif +endfunction + " }}} " Temporary stuff {{{ @@ -441,6 +508,8 @@ command! LawrenciumEnableTrace :call lawrencium#debugtrace(1) command! LawrenciumDisableTrace :call lawrencium#debugtrace(0) +let g:autotags_debug = 1 + " Enable debugging PieCrust let g:piecrust_debug = 1 let g:piecrust_trace = 0