summaryrefslogtreecommitdiff
path: root/helm-buffers.el
diff options
context:
space:
mode:
authorThierry Volpiatto <thierry.volpiatto@gmail.com>2016-08-09 07:23:29 +0200
committerThierry Volpiatto <thierry.volpiatto@gmail.com>2016-08-09 07:23:29 +0200
commit72800e798aae87b2d3f6df06c37b80ccaab9ae78 (patch)
treef0206797e47f8ca80ea5f86cbe7d4ace95ffd8a4 /helm-buffers.el
parent5879e4d030e09306d2071a1fed741edd0b7f2f8d (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.el31
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)