From 271b35c8d0f44bf4bca6af73c6bb790eed36560c Mon Sep 17 00:00:00 2001
From: wsdjeg <wsdjeg@outlook.com>
Date: Tue, 26 Dec 2017 21:09:23 +0800
Subject: [PATCH] Improve plugin manager

---
 autoload/SpaceVim/api/logger.vim      |  4 ++--
 autoload/SpaceVim/logger.vim          |  7 +++----
 autoload/SpaceVim/plugins/manager.vim | 12 +++++-------
 3 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/autoload/SpaceVim/api/logger.vim b/autoload/SpaceVim/api/logger.vim
index 4aaffc2ee..beb1fa3fc 100644
--- a/autoload/SpaceVim/api/logger.vim
+++ b/autoload/SpaceVim/api/logger.vim
@@ -52,13 +52,13 @@ function! s:self.write(msg) abort
   call writefile([a:msg], self.file, flags)
 endfunction
 
-function! s:self.warn(msg) abort
+function! s:self.warn(msg, ...) abort
   if self.level > 2
     return
   endif
   let time = strftime('%H:%M:%S')
   let log = '[ ' . self.name . ' ] [' . time . '] [ ' . s:levels[1] . ' ] ' . a:msg
-  if !self.silent && self.verbose >= 2
+  if (!self.silent && self.verbose >= 2) || get(a:000, 0, 0) == 1
     echohl WarningMsg
     echom log
     echohl None
diff --git a/autoload/SpaceVim/logger.vim b/autoload/SpaceVim/logger.vim
index af331639b..d1b69481e 100644
--- a/autoload/SpaceVim/logger.vim
+++ b/autoload/SpaceVim/logger.vim
@@ -11,10 +11,9 @@ function! SpaceVim#logger#info(msg) abort
 
 endfunction
 
-function! SpaceVim#logger#warn(msg) abort
-
-  call s:LOGGER.warn(a:msg)
-
+function! SpaceVim#logger#warn(msg, ...) abort
+  let issilent = get(a:000, 0, 1)
+  call s:LOGGER.warn(a:msg, issilent)
 endfunction
 
 
diff --git a/autoload/SpaceVim/plugins/manager.vim b/autoload/SpaceVim/plugins/manager.vim
index 61e8b8b77..1596c5d3e 100644
--- a/autoload/SpaceVim/plugins/manager.vim
+++ b/autoload/SpaceVim/plugins/manager.vim
@@ -120,19 +120,20 @@ function! SpaceVim#plugins#manager#install(...) abort
   if !s:JOB.vim_job && !s:JOB.nvim_job
     let &maxfuncdepth = 2000
   endif
-  let s:plugins = a:0 == 0 ? sort(map(s:get_uninstalled_plugins(), 'v:val.name')) : sort(copy(a:1))
-  if empty(s:plugins)
-    call SpaceVim#logger#warn(' [ plug manager ] Wrong plugin name, or all of the plugins are already installed.')
+  let plugins = a:0 == 0 ? sort(map(s:get_uninstalled_plugins(), 'v:val.name')) : sort(copy(a:1))
+  if empty(plugins)
+    call SpaceVim#logger#warn(' [ plug manager ] All of the plugins are already installed.', 1)
     return
   endif
   let status = s:new_window()
   if status == 0
-    call SpaceVim#logger#warn(' [ plug manager ] plugin manager process is not finished.')
+    call SpaceVim#logger#warn(' [ plug manager ] plugin manager process is not finished.', 1)
     return
   elseif status == 1
     " resume window
     return
   endif
+  let s:plugins = plugins
   let s:pct = 0
   let s:pct_done = 0
   let s:total = len(s:plugins)
@@ -232,7 +233,6 @@ endfunction
 
 " here if a:data == 0, git pull succeed
 function! s:on_pull_exit(id, data, event) abort
-  call SpaceVim#logger#info(string(a:data)) 
   if a:id == -1
     let id = s:jobpid
   else
@@ -292,7 +292,6 @@ endfunction
 
 " @vimlint(EVL103, 1, a:event)
 function! s:on_install_stdout(id, data, event) abort
-  call SpaceVim#logger#info(string(a:data)) 
   if a:id == -1
     let id = s:jobpid
   else
@@ -363,7 +362,6 @@ function! s:pull(repo) abort
   let s:pct += 1
   let s:ui_buf[a:repo.name] = s:pct
   let argv = ['git', 'pull', '--progress']
-  call SpaceVim#logger#info('plugin manager cmd: ' . string(argv))
   if s:JOB.vim_job || s:JOB.nvim_job
     let jobid = s:JOB.start(argv,{
           \ 'on_stderr' : function('s:on_install_stdout'),