branch: externals/bufferlo
commit 36da65385ec4699729b731ea335a4da2cb99bfb7
Author: shipmints <[email protected]>
Commit: shipmints <[email protected]>
Remove limitation of no active bookmarks when loading a bookmark set
---
bufferlo.el | 133 ++++++++++++++++++++++++++++++------------------------------
1 file changed, 66 insertions(+), 67 deletions(-)
diff --git a/bufferlo.el b/bufferlo.el
index efca78d6ef..38d706d237 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -2484,73 +2484,72 @@ the message after successfully restoring the bookmark."
(active-bookmark-names (seq-intersection bufferlo-bookmark-names
abm-names)))
(if (assoc bookmark-name bufferlo--active-sets)
(message "Bufferlo set %s is already active" bookmark-name)
- (if (> (length active-bookmark-names) 0)
- (message "Close or clear active bufferlo bookmarks: %s"
active-bookmark-names)
- (let ((tabsets-str (bookmark-prop-get bookmark-record
'bufferlo-tabsets))
- (tabsets))
- (if (not (readablep tabsets-str))
- (message "Bufferlo bookmark set %s: unreadable tabsets"
bookmark-name)
- (setq tabsets (car (read-from-string tabsets-str)))
- (when tabsets ; could be readable and nil
- (let ((first-tab-frame t))
- (dolist (tab-group tabsets)
- (when (or (not first-tab-frame)
- (and first-tab-frame (not
bufferlo-set-restore-tabs-reuse-init-frame)))
- (with-temp-buffer
- (select-frame (make-frame))))
- ;; (lower-frame) ; attempt to reduce visual flashing
- (when-let* ((fg (alist-get 'bufferlo--frame-geometry
tab-group)))
- (when (and
- (display-graphic-p)
- (memq bufferlo-set-restore-geometry-policy '(all
tab-frames))
- (or (not first-tab-frame)
- (and first-tab-frame (eq
bufferlo-set-restore-tabs-reuse-init-frame 'reuse-reset-geometry))))
- (bufferlo--set-frame-geometry fg)))
- (when-let* ((tbm-names (alist-get 'bufferlo--tbms
tab-group)))
- (let ((bufferlo-bookmark-tab-replace-policy 'replace) ; we
handle making tabs in this loop
- (tab-bar-new-tab-choice t)
- (first-tab (or
- (not first-tab-frame)
- (and first-tab-frame (not
bufferlo-set-restore-tabs-reuse-init-frame)))))
- (dolist (tbm-name tbm-names)
- (unless first-tab
- (tab-bar-new-tab-to))
- (bufferlo--bookmark-jump tbm-name)
- (setq first-tab nil))))
- (setq first-tab-frame nil))
- (raise-frame)))))
- (let ((frameset-str (bookmark-prop-get bookmark-record
'bufferlo-frameset))
- (frameset))
- (if (not (readablep frameset-str))
- (message "Bufferlo bookmark set %s: unreadable frameset"
bookmark-name)
- (setq frameset (car (read-from-string frameset-str)))
- (if (and frameset (not (frameset-valid-p frameset)))
- (message "Bufferlo bookmark set %s: invalid frameset"
bookmark-name)
- (when frameset ; could be readable and nil
- (funcall bufferlo-frameset-restore-function frameset)
- (dolist (frame (frame-list))
- (with-selected-frame frame
- (when (frame-parameter nil 'bufferlo--frame-to-restore)
- ;; (lower-frame) ; attempt to reduce visual flashing
- (when-let* ((fbm-name (frame-parameter nil
'bufferlo-bookmark-frame-name)))
- (let ((bufferlo-bookmark-frame-load-make-frame nil)
- (bufferlo-bookmark-frame-duplicate-policy 'allow)
- (bufferlo-bookmark-frame-load-policy
'replace-frame-adopt-loaded-bookmark)
- (bufferlo--bookmark-handler-no-message t))
- (bufferlo--bookmark-jump fbm-name))
- (when (and
- (display-graphic-p frame)
- (memq bufferlo-set-restore-geometry-policy
'(all frames)))
- (when-let* ((fg (frame-parameter nil
'bufferlo--frame-geometry)))
- (bufferlo--set-frame-geometry fg)))
- (set-frame-parameter nil 'bufferlo--frame-to-restore
nil))
- (raise-frame))))))
- (push
- `(,bookmark-name (bufferlo-bookmark-names .
,bufferlo-bookmark-names))
- bufferlo--active-sets)
- (unless (or no-message bufferlo--bookmark-handler-no-message)
- (message "Restored bufferlo bookmark set %s %s"
- bookmark-name bufferlo-bookmark-names))))))))
+ (message "Close or clear active bufferlo bookmarks: %s"
active-bookmark-names)
+ (let ((tabsets-str (bookmark-prop-get bookmark-record 'bufferlo-tabsets))
+ (tabsets))
+ (if (not (readablep tabsets-str))
+ (message "Bufferlo bookmark set %s: unreadable tabsets"
bookmark-name)
+ (setq tabsets (car (read-from-string tabsets-str)))
+ (when tabsets ; could be readable and nil
+ (let ((first-tab-frame t))
+ (dolist (tab-group tabsets)
+ (when (or (not first-tab-frame)
+ (and first-tab-frame (not
bufferlo-set-restore-tabs-reuse-init-frame)))
+ (with-temp-buffer
+ (select-frame (make-frame))))
+ ;; (lower-frame) ; attempt to reduce visual flashing
+ (when-let* ((fg (alist-get 'bufferlo--frame-geometry
tab-group)))
+ (when (and
+ (display-graphic-p)
+ (memq bufferlo-set-restore-geometry-policy '(all
tab-frames))
+ (or (not first-tab-frame)
+ (and first-tab-frame (eq
bufferlo-set-restore-tabs-reuse-init-frame 'reuse-reset-geometry))))
+ (bufferlo--set-frame-geometry fg)))
+ (when-let* ((tbm-names (alist-get 'bufferlo--tbms tab-group)))
+ (let ((bufferlo-bookmark-tab-replace-policy 'replace) ; we
handle making tabs in this loop
+ (tab-bar-new-tab-choice t)
+ (first-tab (or
+ (not first-tab-frame)
+ (and first-tab-frame (not
bufferlo-set-restore-tabs-reuse-init-frame)))))
+ (dolist (tbm-name tbm-names)
+ (unless first-tab
+ (tab-bar-new-tab-to))
+ (bufferlo--bookmark-jump tbm-name)
+ (setq first-tab nil))))
+ (setq first-tab-frame nil))
+ (raise-frame)))))
+ (let ((frameset-str (bookmark-prop-get bookmark-record
'bufferlo-frameset))
+ (frameset))
+ (if (not (readablep frameset-str))
+ (message "Bufferlo bookmark set %s: unreadable frameset"
bookmark-name)
+ (setq frameset (car (read-from-string frameset-str)))
+ (if (and frameset (not (frameset-valid-p frameset)))
+ (message "Bufferlo bookmark set %s: invalid frameset"
bookmark-name)
+ (when frameset ; could be readable and nil
+ (funcall bufferlo-frameset-restore-function frameset)
+ (dolist (frame (frame-list))
+ (with-selected-frame frame
+ (when (frame-parameter nil 'bufferlo--frame-to-restore)
+ ;; (lower-frame) ; attempt to reduce visual flashing
+ (when-let* ((fbm-name (frame-parameter nil
'bufferlo-bookmark-frame-name)))
+ (let ((bufferlo-bookmark-frame-load-make-frame nil)
+ (bufferlo-bookmark-frame-duplicate-policy 'allow)
+ (bufferlo-bookmark-frame-load-policy
'replace-frame-adopt-loaded-bookmark)
+ (bufferlo--bookmark-handler-no-message t))
+ (bufferlo--bookmark-jump fbm-name))
+ (when (and
+ (display-graphic-p frame)
+ (memq bufferlo-set-restore-geometry-policy '(all
frames)))
+ (when-let* ((fg (frame-parameter nil
'bufferlo--frame-geometry)))
+ (bufferlo--set-frame-geometry fg)))
+ (set-frame-parameter nil 'bufferlo--frame-to-restore
nil))
+ (raise-frame))))))
+ (push
+ `(,bookmark-name (bufferlo-bookmark-names .
,bufferlo-bookmark-names))
+ bufferlo--active-sets)
+ (unless (or no-message bufferlo--bookmark-handler-no-message)
+ (message "Restored bufferlo bookmark set %s %s"
+ bookmark-name bufferlo-bookmark-names)))))))
(put #'bufferlo--bookmark-set-handler 'bookmark-handler-type "B-Set") ; short
name here as bookmark-bmenu-list hard codes width of 8 chars