branch: externals/bufferlo commit 36da65385ec4699729b731ea335a4da2cb99bfb7 Author: shipmints <shipmi...@gmail.com> Commit: shipmints <shipmi...@gmail.com>
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