@@ -1057,26 +1057,33 @@ vertically."
1057
1057
bufname)))))
1058
1058
1059
1059
(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)))
1077
1079
(setq helm-marked-candidates nil
1078
1080
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))))))))
1080
1087
1081
1088
(defun helm-buffers-list-persistent-action (candidate )
1082
1089
(let ((current (window-buffer helm-persistent-action-display-window)))
0 commit comments