[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/helm dd5047990d: Fix preselection after persistent killing
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/helm dd5047990d: Fix preselection after persistent killing of buffers |
Date: |
Fri, 4 Apr 2025 01:00:44 -0400 (EDT) |
branch: elpa/helm
commit dd5047990dfa5a86a7788e017f32bd660fa3e474
Author: Thierry Volpiatto <thievol@posteo.net>
Commit: Thierry Volpiatto <thievol@posteo.net>
Fix preselection after persistent killing of buffers
---
helm-buffers.el | 43 +++++++++++++++++++++++++------------------
1 file changed, 25 insertions(+), 18 deletions(-)
diff --git a/helm-buffers.el b/helm-buffers.el
index ea3dcfd912..5c445ce1d2 100644
--- a/helm-buffers.el
+++ b/helm-buffers.el
@@ -1057,26 +1057,33 @@ vertically."
bufname)))))
(defun helm-buffers-persistent-kill (_buffer)
- (let ((marked (helm-marked-candidates))
- (sel (helm-get-selection))
- (msg "Buffer `%s' modified, please save it before kill"))
- (unwind-protect
- (cl-loop for b in marked
- do (if (and (buffer-file-name b) (buffer-modified-p b))
- (message msg (buffer-name b))
- ;; We need to preselect each marked because
- ;; helm-buffers-persistent-kill-1 is deleting
- ;; current selection.
- (helm-preselect
- (format "^%s"
- (helm-buffers--quote-truncated-buffer b)))
- (helm-buffers-persistent-kill-1 b)
- (message nil)
- (helm--remove-marked-and-update-mode-line b)))
- (with-helm-buffer
+ (let* ((marked (helm-marked-candidates))
+ (msg "Buffer `%s' modified, please save it before kill")
+ ;; After marking, selection should be after the last marked unless
user
+ ;; has not moved, if deleting current, use current selection after
+ ;; having deleted.
+ (sel (and (cdr marked) (helm-get-selection))))
+ (with-helm-buffer
+ (unwind-protect
+ (dolist (b marked)
+ (if (and (buffer-file-name b) (buffer-modified-p b))
+ (progn (message msg (buffer-name b)) (sit-for 1))
+ ;; We need to preselect each marked because
+ ;; helm-buffers-persistent-kill-1 is deleting
+ ;; current selection.
+ (helm-preselect
+ (format "^[[:multibyte:] ]*%s"
+ (helm-buffers--quote-truncated-buffer b)))
+ (helm-buffers-persistent-kill-1 b)
+ (helm--remove-marked-and-update-mode-line b)))
(setq helm-marked-candidates nil
helm-visible-mark-overlays nil))
- (helm-force-update (helm-buffers--quote-truncated-buffer sel)))))
+ (helm-force-update (format "^[[:multibyte:] ]*%s"
+ (helm-buffers--quote-truncated-buffer
+ ;; Ensure user has not moved selection on one
+ ;; of marked.
+ (or (and (buffer-live-p sel) sel)
+ (helm-get-selection))))))))
(defun helm-buffers-list-persistent-action (candidate)
(let ((current (window-buffer helm-persistent-action-display-window)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [nongnu] elpa/helm dd5047990d: Fix preselection after persistent killing of buffers,
ELPA Syncer <=