From 7127e48660591496ded989877a3d13571d6664a3 Mon Sep 17 00:00:00 2001 From: Vahagn Khachatryan Date: Fri, 31 Oct 2014 22:55:17 +0400 Subject: [PATCH] local-vimrc.vim based on independence.vim --- vim/plugin/local-vimrc.vim | 54 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 vim/plugin/local-vimrc.vim diff --git a/vim/plugin/local-vimrc.vim b/vim/plugin/local-vimrc.vim new file mode 100644 index 0000000..0493b2c --- /dev/null +++ b/vim/plugin/local-vimrc.vim @@ -0,0 +1,54 @@ +" +" Authors: Vahagn Khachatryan (vahagn DOT khachatryan AT gmail DOT com) +" +" Licence: http://www.opensource.org/licenses/mit-license.php +" The MIT License +" +" This file is based on Andy Dawson's independence.vim +" +"----------------------------------------------------------------------------- +" +" Section: Documentation +" +" The vim local-vimrc plugin loads a .vimrc file from upper directories if +" it exists. This allows you to override your vim settings on a directory tree +" basis. + +" Section: Plugin header +" +" loaded_local_vimrc is set to 1 when initialization begins, and 2 when it +" completes. +if exists('g:loaded_locl_vimrc') + finish +endif +let g:loaded_local_vimrc=1 + +" Section: Event group setup +" Act when creating or loading a file +augroup LocalVimrc + au BufNewFile,BufRead * call s:LoadConfig() +augroup END + +" Function: LoadConfig() +" +" If the file .vimrc exists in the root of a git project - load it +function s:LoadConfig() + let l:path = fnameescape(expand("%:p:h")) + if empty(l:path) + return + endif + + let l:pathp = "" + while !filereadable(l:path.'/.vimrc') && l:pathp != l:path + let l:pathp = l:path + let l:path = fnamemodify(l:path, ":h") + endwhile + + let l:vimrc = l:path . '/.vimrc' + if filereadable(l:vimrc) && l:vimrc != $MYVIMRC + exec ":source " . l:vimrc + endif +endfunction + +" Section: Plugin completion +let g:loaded_local_vimrc=2