From 802b10041597e1e30204de26b9d75801ddffd067 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Tue, 6 Jun 2017 16:17:30 +0900 Subject: [PATCH] Extend plug#load to process a list of names instead of varargs Allows `call plug#load(keys(g:plugs))` for manually loading all plugins at once. Close #638. --- plug.vim | 5 +++-- test/workflow.vader | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/plug.vim b/plug.vim index ac299a2..a7f1030 100644 --- a/plug.vim +++ b/plug.vim @@ -442,12 +442,13 @@ function! plug#load(...) if !exists('g:plugs') return s:err('plug#begin was not called') endif - let unknowns = filter(copy(a:000), '!has_key(g:plugs, v:val)') + let names = a:0 == 1 && type(a:1) == s:TYPE.list ? a:1 : a:000 + let unknowns = filter(copy(names), '!has_key(g:plugs, v:val)') if !empty(unknowns) let s = len(unknowns) > 1 ? 's' : '' return s:err(printf('Unknown plugin%s: %s', s, join(unknowns, ', '))) end - let unloaded = filter(copy(a:000), '!get(s:loaded, v:val, 0)') + let unloaded = filter(copy(names), '!get(s:loaded, v:val, 0)') if !empty(unloaded) for name in unloaded call s:lod([name], ['ftdetect', 'after/ftdetect', 'plugin', 'after/plugin']) diff --git a/test/workflow.vader b/test/workflow.vader index b24b128..78887ac 100644 --- a/test/workflow.vader +++ b/test/workflow.vader @@ -1141,6 +1141,12 @@ Execute (plug#load - invalid arguments): AssertEqual 0, plug#load('xxx', 'non-existent-plugin') AssertEqual 0, plug#load('non-existent-plugin', 'xxx') +Execute (plug#load - list argument (#638)): + redir => out + call plug#load(keys(g:plugs)) + redir END + AssertEqual '', out + Execute (on: []): call plug#begin() Plug 'junegunn/rust.vim', { 'on': [] }