branch: externals/bufferlo
commit b626c89127956bca1669db3991d60d3edd355a82
Author: shipmints <[email protected]>
Commit: shipmints <[email protected]>
Rely only on tab numbers or names, not references to ephemeral tab objects.
Cures a couple of issues with saving/closing.
---
bufferlo.el | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/bufferlo.el b/bufferlo.el
index 1bab087ac6..a8a0be0b2c 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -1882,20 +1882,23 @@ associated bookmark exists."
"Produces an alist of active bufferlo bookmarks.
The alist is of the form:
((bookmark-name .
- ((\\='type . type) (\\='frame . frame) (\\='tab . tab))) ...)
+ ((\\='type . type) (\\='frame . frame) (\\='tab-number . tab-number))) ...)
for the specified FRAMES,
filtered by TYPE, where type is:
- \\='fbm for frame bookmarks or
- \\='tbm for tab bookmarks."
+ \\='fbm for frame bookmarks which include frame only or
+ \\='tbm for tab bookmarks which include frame and tab numbers."
(let ((abms))
(dolist (frame (or frames (frame-list)))
(when-let ((fbm (frame-parameter frame 'bufferlo-bookmark-frame-name)))
(when (or (null type) (eq type 'fbm))
- (push (list fbm `((type . fbm) (frame . ,frame))) abms)))
+ (push (list fbm `((type . fbm)
+ (frame . ,frame))) abms)))
(dolist (tab (funcall tab-bar-tabs-function frame))
(when-let ((tbm (alist-get 'bufferlo-bookmark-tab-name tab)))
(when (or (null type) (eq type 'tbm))
- (push (list tbm `((type . tbm) (frame . ,frame) (tab . ,tab)))
abms)))))
+ (push (list tbm `((type . tbm)
+ (frame . ,frame)
+ (tab-number . ,(1+ (tab-bar--tab-index tab nil
frame))))) abms)))))
abms))
(defun bufferlo-bookmarks-save-all-p (_bookmark-name)
@@ -1932,12 +1935,11 @@ Specify NO-MESSAGE to inhibit the bookmark save status
message."
((eq abm-type 'fbm)
(bufferlo-bookmark-frame-save abm-name nil t))
((eq abm-type 'tbm)
- (let ((orig-tab (1+ (tab-bar--current-tab-index))))
- (tab-bar-select-tab
- (1+ (tab-bar--tab-index
- (alist-get 'tab (cadr abm)))))
+ (let ((orig-tab-number (1+ (tab-bar--current-tab-index))))
+ (tab-bar-select-tab (alist-get 'tab-number (cadr abm)))
(bufferlo-bookmark-tab-save abm-name nil t)
- (tab-bar-select-tab orig-tab))))
+ (tab-bar-select-tab orig-tab-number)
+ )))
(push abm-name bookmarks-saved)))))
(cond
(bookmarks-saved
@@ -2185,13 +2187,12 @@ transient work."
(lambda (x) (eq 'fbm (alist-get 'type (cadr x))))
abms))
(orig-frame (selected-frame))
- (orig-tab-name (alist-get 'name (bufferlo--current-tab))))
+ (orig-tab-name (alist-get 'name (bufferlo--current-tab)))) ; can't
rely on index, it might disappear
(dolist (abm tbms)
(let ((abm-frame (alist-get 'frame (cadr abm)))
- (abm-tab (alist-get 'tab (cadr abm))))
+ (abm-tab-number (alist-get 'tab-number (cadr abm))))
(with-selected-frame abm-frame
- (tab-bar-select-tab
- (1+ (tab-bar--tab-index abm-tab)))
+ (tab-bar-select-tab abm-tab-number)
(let ((bufferlo-close-tab-kill-buffers-save-bookmark-prompt nil)
(bufferlo-close-tab-kill-buffers-prompt nil))
(bufferlo-tab-close-kill-buffers)))))
@@ -2201,7 +2202,7 @@ transient work."
(let ((bufferlo-delete-frame-kill-buffers-save-bookmark-prompt nil)
(bufferlo-delete-frame-kill-buffers-prompt nil))
(bufferlo-delete-frame-kill-buffers)))))
- ;; Best effort to get back to where we started. Frame and/or tab could now
be gone.
+ ;; Frame and/or tab could now be gone.
(when (frame-live-p orig-frame)
(select-frame orig-frame)
(let ((tab-index (tab-bar--tab-index-by-name orig-tab-name)))
@@ -2244,8 +2245,7 @@ all unless a prefix argument is specified."
(raise-frame)
(when (eq abm-type 'tbm)
(tab-bar-select-tab
- (1+ (tab-bar--tab-index
- (alist-get 'tab (cadr abm)))))))))
+ (alist-get 'tab-number (cadr abm)))))))
(defun bufferlo-bookmark-raise ()
"Raise the selected bookmarked frame or tab.