Fix Ruby installer on macOS system Vim
- Do not use io/console - Interrupting threads crashes Vim, so don't do it Close #592 Related #537, #538
This commit is contained in:
parent
d1ac3cdd1f
commit
e80a93d5d0
1 changed files with 10 additions and 3 deletions
9
plug.vim
9
plug.vim
|
@ -1768,6 +1768,7 @@ function! s:update_ruby()
|
|||
tries = VIM::evaluate('get(g:, "plug_retries", 2)') + 1
|
||||
nthr = VIM::evaluate('s:update.threads').to_i
|
||||
maxy = VIM::evaluate('winheight(".")').to_i
|
||||
vim7 = VIM::evaluate('v:version').to_i <= 703 && RUBY_PLATFORM =~ /darwin/
|
||||
cd = iswin ? 'cd /d' : 'cd'
|
||||
tot = VIM::evaluate('len(s:update.todo)') || 0
|
||||
bar = ''
|
||||
|
@ -1857,11 +1858,17 @@ function! s:update_ruby()
|
|||
main = Thread.current
|
||||
threads = []
|
||||
watcher = Thread.new {
|
||||
if vim7
|
||||
while VIM::evaluate('getchar(1)')
|
||||
sleep 0.1
|
||||
end
|
||||
else
|
||||
require 'io/console' # >= Ruby 1.9
|
||||
nil until IO.console.getch == 3.chr
|
||||
end
|
||||
mtx.synchronize do
|
||||
running = false
|
||||
threads.each { |t| t.raise Interrupt }
|
||||
threads.each { |t| t.raise Interrupt } unless vim7
|
||||
end
|
||||
threads.each { |t| t.join rescue nil }
|
||||
main.kill
|
||||
|
|
Loading…
Reference in a new issue