Skip to content

Commit dd50479

Browse files
Fix preselection after persistent killing of buffers
1 parent a8ded1d commit dd50479

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

helm-buffers.el

+25-18
Original file line numberDiff line numberDiff line change
@@ -1057,26 +1057,33 @@ vertically."
10571057
bufname)))))
10581058

10591059
(defun helm-buffers-persistent-kill (_buffer)
1060-
(let ((marked (helm-marked-candidates))
1061-
(sel (helm-get-selection))
1062-
(msg "Buffer `%s' modified, please save it before kill"))
1063-
(unwind-protect
1064-
(cl-loop for b in marked
1065-
do (if (and (buffer-file-name b) (buffer-modified-p b))
1066-
(message msg (buffer-name b))
1067-
;; We need to preselect each marked because
1068-
;; helm-buffers-persistent-kill-1 is deleting
1069-
;; current selection.
1070-
(helm-preselect
1071-
(format "^%s"
1072-
(helm-buffers--quote-truncated-buffer b)))
1073-
(helm-buffers-persistent-kill-1 b)
1074-
(message nil)
1075-
(helm--remove-marked-and-update-mode-line b)))
1076-
(with-helm-buffer
1060+
(let* ((marked (helm-marked-candidates))
1061+
(msg "Buffer `%s' modified, please save it before kill")
1062+
;; After marking, selection should be after the last marked unless user
1063+
;; has not moved, if deleting current, use current selection after
1064+
;; having deleted.
1065+
(sel (and (cdr marked) (helm-get-selection))))
1066+
(with-helm-buffer
1067+
(unwind-protect
1068+
(dolist (b marked)
1069+
(if (and (buffer-file-name b) (buffer-modified-p b))
1070+
(progn (message msg (buffer-name b)) (sit-for 1))
1071+
;; We need to preselect each marked because
1072+
;; helm-buffers-persistent-kill-1 is deleting
1073+
;; current selection.
1074+
(helm-preselect
1075+
(format "^[[:multibyte:] ]*%s"
1076+
(helm-buffers--quote-truncated-buffer b)))
1077+
(helm-buffers-persistent-kill-1 b)
1078+
(helm--remove-marked-and-update-mode-line b)))
10771079
(setq helm-marked-candidates nil
10781080
helm-visible-mark-overlays nil))
1079-
(helm-force-update (helm-buffers--quote-truncated-buffer sel)))))
1081+
(helm-force-update (format "^[[:multibyte:] ]*%s"
1082+
(helm-buffers--quote-truncated-buffer
1083+
;; Ensure user has not moved selection on one
1084+
;; of marked.
1085+
(or (and (buffer-live-p sel) sel)
1086+
(helm-get-selection))))))))
10801087

10811088
(defun helm-buffers-list-persistent-action (candidate)
10821089
(let ((current (window-buffer helm-persistent-action-display-window)))

0 commit comments

Comments
 (0)