diff options
author | Thierry Volpiatto <thierry.volpiatto@gmail.com> | 2016-08-09 07:23:29 +0200 |
---|---|---|
committer | Thierry Volpiatto <thierry.volpiatto@gmail.com> | 2016-08-09 07:23:29 +0200 |
commit | 72800e798aae87b2d3f6df06c37b80ccaab9ae78 (patch) | |
tree | f0206797e47f8ca80ea5f86cbe7d4ace95ffd8a4 /helm-buffers.el | |
parent | 5879e4d030e09306d2071a1fed741edd0b7f2f8d (diff) |
Prevent persistent killing of helm-buffer and fix error when killing it.
* helm-buffers.el (helm-kill-marked-buffers): Check if helm-buffer is alive.
(helm-buffers-persistent-kill-1): Don't allow killing helm-buffer.
Diffstat (limited to 'helm-buffers.el')
-rw-r--r-- | helm-buffers.el | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/helm-buffers.el b/helm-buffers.el index 2188cf14..46e28f94 100644 --- a/helm-buffers.el +++ b/helm-buffers.el @@ -660,9 +660,10 @@ If REGEXP-FLAG is given use `query-replace-regexp'." (defun helm-kill-marked-buffers (_ignore) (let* ((bufs (helm-marked-candidates)) (killed-bufs (cl-count-if 'kill-buffer bufs))) - (with-helm-buffer - (setq helm-marked-candidates nil - helm-visible-mark-overlays nil)) + (when (buffer-live-p helm-buffer) + (with-helm-buffer + (setq helm-marked-candidates nil + helm-visible-mark-overlays nil))) (message "Killed %s buffer(s)" killed-bufs))) (defun helm-buffer-run-kill-buffers () @@ -735,17 +736,21 @@ If REGEXP-FLAG is given use `query-replace-regexp'." (helm-exit-and-execute-action 'helm-ediff-marked-buffers-merge))) (put 'helm-buffer-run-ediff-merge 'helm-only t) -(defun helm-buffers-persistent-kill-1 (buffer) +(defun helm-buffers-persistent-kill-1 (buffer-or-name) "Persistent action to kill buffer." - (if (eql (get-buffer buffer) (get-buffer helm-current-buffer)) - (progn - (message "Can't kill `helm-current-buffer' without quitting session") - (sit-for 1)) - (with-current-buffer (get-buffer buffer) - (kill-buffer buffer)) - (helm-delete-current-selection) - (with-helm-temp-hook 'helm-after-persistent-action-hook - (helm-force-update (regexp-quote (helm-get-selection nil t)))))) + (let ((buf (get-buffer buffer-or-name)) helm-buf-or-cur) + (if (or (and (eql buf (get-buffer helm-current-buffer)) + (setq helm-buf-or-cur "helm-current-buffer")) + (and (eql buf (get-buffer helm-buffer)) + (setq helm-buf-or-cur "helm-buffer"))) + (progn + (message "Can't kill `%s' without quitting session" helm-buf-or-cur) + (sit-for 1)) + (with-current-buffer buf + (kill-buffer buffer-or-name)) + (helm-delete-current-selection) + (with-helm-temp-hook 'helm-after-persistent-action-hook + (helm-force-update (regexp-quote (helm-get-selection nil t))))))) (defun helm-buffers--quote-truncated-buffer (buffer) (let ((bufname (and (bufferp buffer) |