Bladeren bron

Print warning message when plug window is closed

Junegunn Choi 9 jaren geleden
bovenliggende
commit
c0a83826f9
2 gewijzigde bestanden met toevoegingen van 22 en 1 verwijderingen
  1. 11 1
      plug.vim
  2. 11 0
      test/workflow.vader

+ 11 - 1
plug.vim

@@ -810,6 +810,10 @@ function! s:do(pull, force, todo)
         if spec.do[0] == ':'
           call s:load_plugin(spec)
           execute spec.do[1:]
+          if !s:plug_window_exists()
+            cd -
+            throw 'Warning: vim-plug was terminated by the post-update hook of '.name
+          endif
         else
           let error = s:bang(spec.do)
         endif
@@ -1059,7 +1063,13 @@ function! s:update_finish()
       redraw
     endfor
     silent 4 d _
-    call s:do(s:update.pull, s:update.force, filter(copy(s:update.all), 'index(s:update.errors, v:key) < 0 && has_key(v:val, "do")'))
+    try
+      call s:do(s:update.pull, s:update.force, filter(copy(s:update.all), 'index(s:update.errors, v:key) < 0 && has_key(v:val, "do")'))
+    catch
+      call s:warn('echom', v:exception)
+      call s:warn('echo', '')
+      return
+    endtry
     call s:finish(s:update.pull)
     call setline(1, 'Updated. Elapsed time: ' . split(reltimestr(reltime(s:update.start)))[0] . ' sec.')
     call s:switch_out('normal! gg')

+ 11 - 0
test/workflow.vader

@@ -959,6 +959,17 @@ Execute (Vim command with : prefix):
   AssertEqual '12345', getline(2)
   q
 
+Execute (Vim command with : prefix closing the window):
+  call plug#begin()
+  Plug 'junegunn/vim-pseudocl', { 'do': ':close' }
+  call plug#end()
+
+  redir => out
+  PlugInstall!
+  redir END
+  Assert out =~ 'vim-plug was terminated'
+  Assert out =~ 'of vim-pseudocl'
+
 **********************************************************************
 ~ Overriding `dir`
 **********************************************************************