mirror of
https://github.com/junegunn/vim-plug.git
synced 2024-12-19 10:35:38 -07:00
Fix #318: Freezes on PlugInstall
This commit is contained in:
parent
072d28e86e
commit
c3bcd95459
20
plug.vim
20
plug.vim
@ -1061,7 +1061,7 @@ endwhile
|
||||
endfunction
|
||||
|
||||
function! s:update_python()
|
||||
let py_exe = has('python3') ? 'python3' : 'python'
|
||||
let py_exe = has('python') ? 'python' : 'python3'
|
||||
execute py_exe "<< EOF"
|
||||
""" Due to use of signals this function is POSIX only. """
|
||||
import datetime
|
||||
@ -1090,14 +1090,9 @@ G_CLONE_OPT = vim.eval('s:clone_opt')
|
||||
G_PROGRESS = vim.eval('s:progress_opt(1)')
|
||||
G_LOG_PROB = 1.0 / int(vim.eval('s:update.threads'))
|
||||
G_STOP = thr.Event()
|
||||
G_THREADS = {}
|
||||
|
||||
class PlugError(Exception):
|
||||
def __init__(self, msg):
|
||||
self._msg = msg
|
||||
@property
|
||||
def msg(self):
|
||||
return self._msg
|
||||
pass
|
||||
class CmdTimedOut(PlugError):
|
||||
pass
|
||||
class CmdFailed(PlugError):
|
||||
@ -1288,7 +1283,7 @@ class Plugin(object):
|
||||
with self.lock:
|
||||
thread_vim_command("let s:update.new['{0}'] = 1".format(self.name))
|
||||
except PlugError as exc:
|
||||
self.write(Action.ERROR, self.name, exc.msg)
|
||||
self.write(Action.ERROR, self.name, str(exc))
|
||||
except KeyboardInterrupt:
|
||||
G_STOP.set()
|
||||
self.write(Action.ERROR, self.name, ['Interrupted!'])
|
||||
@ -1371,10 +1366,6 @@ class PlugThread(thr.Thread):
|
||||
work_q.task_done()
|
||||
except queue.Empty:
|
||||
pass
|
||||
finally:
|
||||
global G_THREADS
|
||||
with lock:
|
||||
del G_THREADS[thr.current_thread().name]
|
||||
|
||||
class RefreshThread(thr.Thread):
|
||||
def __init__(self, lock):
|
||||
@ -1428,17 +1419,16 @@ def main():
|
||||
for work in plugs.items():
|
||||
work_q.put(work)
|
||||
|
||||
global G_THREADS
|
||||
start_cnt = thr.active_count()
|
||||
for num in range(nthreads):
|
||||
tname = 'PlugT-{0:02}'.format(num)
|
||||
thread = PlugThread(tname, (buf_q, work_q, lock))
|
||||
thread.start()
|
||||
G_THREADS[tname] = thread
|
||||
if mac_gui:
|
||||
rthread = RefreshThread(lock)
|
||||
rthread.start()
|
||||
|
||||
while not buf_q.empty() or len(G_THREADS) != 0:
|
||||
while not buf_q.empty() or thr.active_count() != start_cnt:
|
||||
try:
|
||||
action, name, msg = buf_q.get(True, 0.25)
|
||||
buf.write(action, name, msg)
|
||||
|
Loading…
Reference in New Issue
Block a user