diff --git a/autoload/vundle/config.vim b/autoload/vundle/config.vim index f6c080f..68dfe68 100644 --- a/autoload/vundle/config.vim +++ b/autoload/vundle/config.vim @@ -11,7 +11,7 @@ func! vundle#config#init() let g:bundles = [] endf -func! vundle#config#require(bundles) +func! vundle#config#require(bundles) abort for b in a:bundles call s:rtp_add(b.rtpath()) call s:rtp_add(g:bundle_dir) @@ -64,14 +64,14 @@ func! s:rtp_add_a() call filter(reverse(copy(g:bundles)), 's:rtp_add(v:val.rtpath())') endf -func! s:rtp_rm(dir) - exec 'set rtp-='.a:dir - exec 'set rtp-='.expand(a:dir.'/after') +func! s:rtp_rm(dir) abort + exec 'set rtp-='.escape(expand(a:dir),' ') + exec 'set rtp-='.escape(expand(a:dir.'/after'), ' ') endf -func! s:rtp_add(dir) - exec 'set rtp^='.a:dir - exec 'set rtp+='.expand(a:dir.'/after') +func! s:rtp_add(dir) abort + exec 'set rtp^='.escape(expand(a:dir), ' ') + exec 'set rtp+='.escape(expand(a:dir.'/after'), ' ') endf let s:bundle = {} diff --git a/autoload/vundle/installer.vim b/autoload/vundle/installer.vim index 5a60e16..a5a0f20 100644 --- a/autoload/vundle/installer.vim +++ b/autoload/vundle/installer.vim @@ -1,4 +1,4 @@ -func! vundle#installer#install(bang, ...) +func! vundle#installer#install(bang, ...) abort if !isdirectory(g:bundle_dir) | call mkdir(g:bundle_dir, 'p') | endif let bundles = (a:1 == '') ? \ s:reload_bundles() : @@ -11,19 +11,19 @@ func! vundle#installer#install(bang, ...) call s:log("Installed bundles:\n".join((empty(installed) ? ['no new bundless installed'] : map(installed, 'v:val.name')),"\n")) let help_dirs = vundle#installer#helptags(bundles) - if !empty(help_dirs) - call s:log('Helptags: done. '.len(help_dirs).' bundles processed') - endif endf -func! vundle#installer#helptags(bundles) +func! vundle#installer#helptags(bundles) abort let bundle_dirs = map(copy(a:bundles),'v:val.rtpath()') let help_dirs = filter(bundle_dirs, 's:has_doc(v:val)') call map(copy(help_dirs), 's:helptags(v:val)') + if !empty(help_dirs) + call s:log('Helptags: done. '.len(help_dirs).' bundles processed') + endif return help_dirs endf -func! vundle#installer#clean(bang) +func! vundle#installer#clean(bang) abort let bundle_dirs = map(copy(g:bundles), 'v:val.path()') let all_dirs = split(globpath(g:bundle_dir, '*'), "\n") let x_dirs = filter(all_dirs, '0 > index(bundle_dirs, v:val)') @@ -46,29 +46,29 @@ func! s:reload_bundles() return g:bundles endf -func! s:has_doc(rtp) +func! s:has_doc(rtp) abort return isdirectory(a:rtp.'/doc') \ && (!filereadable(a:rtp.'/doc/tags') || filewritable(a:rtp.'/doc/tags')) \ && !(empty(glob(a:rtp.'/doc/*.txt')) && empty(glob(a:rtp.'/doc/*.??x'))) endf -func! s:helptags(rtp) +func! s:helptags(rtp) abort helptags `=a:rtp.'/doc'` endf func! s:sync(bang, bundle) abort - let git_dir = a:bundle.path().'/.git' + let git_dir = shellescape(expand(a:bundle.path().'/.git')) if isdirectory(git_dir) if !(a:bang) | return 0 | endif - let cmd = 'cd '.a:bundle.path().' && git pull' + let cmd = 'cd '.shellescape(a:bundle.path()).' && git pull' else - let cmd = 'git clone '.a:bundle.uri.' '.a:bundle.path() + let cmd = 'git clone '.a:bundle.uri.' '.shellescape(a:bundle.path()) endif silent exec '!'.cmd return 1 endf -func! s:install(bang, bundles) +func! s:install(bang, bundles) abort return filter(copy(a:bundles), 's:sync(a:bang, v:val)') endf diff --git a/autoload/vundle/scripts.vim b/autoload/vundle/scripts.vim index f994a31..c787c7e 100644 --- a/autoload/vundle/scripts.vim +++ b/autoload/vundle/scripts.vim @@ -39,22 +39,24 @@ func! s:display(headers, results) let results = reverse(map(a:results, ' printf("Bundle ' ."'%s'".'", v:val) ')) call writefile(a:headers + results, s:browse) silent pedit `=s:browse` + wincmd P | wincmd H + setl ft=vundle endf func! s:fetch_scripts(to) - let temp = tempname() + let temp = shellescape(tempname()) if has('win32') || has('win64') let scripts_dir = fnamemodify(expand(a:to), ":h") if !isdirectory(scripts_dir) call mkdir(scripts_dir, "p") endif exec '!curl http://vim-scripts.org/api/scripts.json > '.temp. - \ '&& move /Y '.temp.' '.a:to + \ '&& move /Y '.temp.' '.shellescape(a:to) else exec '!curl http://vim-scripts.org/api/scripts.json > '.temp. - \ '&& mkdir -p $(dirname '.a:to.') && mv -f '.temp.' '.a:to + \ '&& mkdir -p $(dirname '.shellescape(a:to).') && mv -f '.temp.' '.shellescape(a:to) endif endf diff --git a/ftplugin/vundle.vim b/ftplugin/vundle.vim index f21d629..a7b4394 100644 --- a/ftplugin/vundle.vim +++ b/ftplugin/vundle.vim @@ -1,6 +1,4 @@ -setl hls ro noma ignorecase - -set syntax=vim +setl hls ro noma ignorecase syntax=vim syn keyword vimCommand Bundle