feature/popup: possible fix for elusive 'at top level' bug

Occasionally, a keyboard-quit bubbles up from popup's buffer cleanup
process, causing all kinds of havoc; like killed term buffers (#436),
abrupt interrupting of the minibuffer, and the point jumping around.

This tries to fix this, but needs more testing!
This commit is contained in:
Henrik Lissner 2018-03-18 02:39:32 -04:00
parent 026ba51c42
commit 5d69851f39
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -14,6 +14,7 @@
"Tries to kill BUFFER, as was requested by a transient timer. If it fails, eg. "Tries to kill BUFFER, as was requested by a transient timer. If it fails, eg.
the buffer is visible, then set another timer and try again later." the buffer is visible, then set another timer and try again later."
(when (buffer-live-p buffer) (when (buffer-live-p buffer)
(with-temp-buffer
(let ((kill-buffer-hook (remq '+popup|kill-buffer-hook kill-buffer-hook))) (let ((kill-buffer-hook (remq '+popup|kill-buffer-hook kill-buffer-hook)))
(cond ((eq ttl 0) (cond ((eq ttl 0)
(kill-buffer buffer)) (kill-buffer buffer))
@ -25,7 +26,7 @@ the buffer is visible, then set another timer and try again later."
(let (confirm-kill-processes) (let (confirm-kill-processes)
(when-let* ((process (get-buffer-process (current-buffer)))) (when-let* ((process (get-buffer-process (current-buffer))))
(kill-process process))) (kill-process process)))
(kill-buffer buffer))))))) (kill-buffer buffer))))))))
(defun +popup--init (window &optional alist) (defun +popup--init (window &optional alist)
"Initializes a popup window. Run any time a popup is opened. It sets the "Initializes a popup window. Run any time a popup is opened. It sets the