diff --git a/plug.vim b/plug.vim index bdd647b..29083ad 100644 --- a/plug.vim +++ b/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)