diff --git a/autoload/vundle.vim b/autoload/vundle.vim index 2939048..887ecdd 100644 --- a/autoload/vundle.vim +++ b/autoload/vundle.vim @@ -8,8 +8,8 @@ com! -nargs=+ -bar Plugin \ call vundle#config#bundle() -com! -nargs=? -bang -complete=custom,vundle#scripts#complete PluginInstall -\ call vundle#installer#new('!' == '', ) +com! -nargs=* -bang -complete=custom,vundle#scripts#complete PluginInstall +\ call vundle#installer#new('!' == '', ) com! -nargs=? -bang -complete=custom,vundle#scripts#complete PluginSearch \ call vundle#scripts#all('!' == '', ) @@ -24,7 +24,7 @@ com! -nargs=0 PluginDocs \ call vundle#installer#helptags(g:bundles) " Aliases -com! PluginUpdate PluginInstall! +com! -nargs=* -complete=custom,vundle#scripts#complete PluginUpdate PluginInstall! " Vundle Aliases com! -nargs=? -bang -complete=custom,vundle#scripts#complete VundleInstall PluginInstall diff --git a/autoload/vundle/installer.vim b/autoload/vundle/installer.vim index 614b64b..6797d1d 100644 --- a/autoload/vundle/installer.vim +++ b/autoload/vundle/installer.vim @@ -6,9 +6,21 @@ " ... -- any number of bundle specifications (separate arguments) " --------------------------------------------------------------------------- func! vundle#installer#new(bang, ...) abort - let bundles = (a:1 == '') ? - \ g:bundles : - \ map(copy(a:000), 'vundle#config#bundle(v:val, {})') + " No specific plugins are specified. Operate on all plugins. + if a:0 == 0 + let bundles = g:bundles + " Specific plugins are specified for update. Update them. + elseif (a:bang) + let bundles = filter(copy(g:bundles), 'index(a:000, v:val.name) > -1') + " Specific plugins are specified for installation. Install them. + else + let bundles = map(copy(a:000), 'vundle#config#bundle(v:val, {})') + endif + + if empty(bundles) + echoerr 'No bundles were selected for operation' + return + endif let names = vundle#scripts#bundle_names(map(copy(bundles), 'v:val.name_spec')) call vundle#scripts#view('Installer',['" Installing plugins to '.expand(g:bundle_dir, 1)], names + ['Helptags']) diff --git a/autoload/vundle/scripts.vim b/autoload/vundle/scripts.vim index d7409a1..f160e01 100644 --- a/autoload/vundle/scripts.vim +++ b/autoload/vundle/scripts.vim @@ -39,7 +39,12 @@ endf " candidates, see also :h command-completion-custom " --------------------------------------------------------------------------- func! vundle#scripts#complete(a,c,d) - return join(s:load_scripts(0),"\n") + " Return only installed plugins if updating + if match(a:c, '\v^Plugin%(Install!|Update)') == 0 + return join(map(copy(g:bundles), 'v:val.name'), "\n") + else + return join(s:load_scripts(0),"\n") + endif endf diff --git a/doc/vundle.txt b/doc/vundle.txt index 198584b..9a2670a 100644 --- a/doc/vundle.txt +++ b/doc/vundle.txt @@ -244,8 +244,16 @@ PluginInstall allows installation of plugins by name: > :PluginInstall unite.vim -Installs and activates unite.vim. You can use Tab to auto-complete known -script names. Note that the installation just described isn't permanent. To +Installs and activates unite.vim. + +PluginInstall also allows installation of several plugins separated by space. +> + :PluginInstall tpope/vim-surround tpope/vim-fugitive + +Installs both tpope/vim-surround and tpope/vim-fugitive from GitHub. + +You can use Tab to auto-complete known script names. +Note that the installation just described isn't permanent. To finish, you must put `Plugin 'unite.vim'` at the appropriate place in your `.vimrc` to tell Vundle to load the plugin at startup. @@ -263,6 +271,12 @@ Installs or updates the configured plugins. Press 'u' after updates complete to see the change log of all updated bundles. Press 'l' (lowercase 'L') to see the log of commands if any errors occurred. +To update specific plugins, write their names separated by space: +> + :PluginInstall! vim-surround vim-fugitive +or > + :PluginUpdate vim-surround vim-fugitive + 3.5 SEARCHING PLUGINS ~ *vundle-plugins-search* *:PluginSearch* >