branch: externals/bufferlo commit c8ec15776a85c7e1c08672148f627980a0c00964 Author: Stéphane Marks <shipmi...@gmail.com> Commit: Flo Rommel <m...@florommel.de>
Add option to persist frame names in their bookmarks - New user option 'bufferlo-bookmark-frame-persist-frame-name' defaulting to nil. - Update 'bufferlo--bookmark-frame-make' to store frame name. - Update 'bufferlo--bookmark-frame-handler' to restore frame name. --- README.org | 6 ++++++ bufferlo.el | 25 ++++++++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/README.org b/README.org index 3451398829..e5c6dc641b 100644 --- a/README.org +++ b/README.org @@ -552,6 +552,11 @@ settings. #+end_src Note: 'raise is considered to act as 'clear by bookmark set loading. +#+begin_src emacs-lisp + ;; store frame names in their bookmarks, and restore them when loading + (setq bufferlo-bookmark-frame-persist-frame-name t) ; default nil +#+end_src + *** Tab bookmark options Refine these options to suit your workflow as you gain experience with @@ -1105,6 +1110,7 @@ remain in force until they are saved if this policy is set to t. (setq bufferlo-bookmark-frame-load-make-frame 'restore-geometry) (setq bufferlo-bookmark-frame-load-policy 'prompt) (setq bufferlo-bookmark-frame-duplicate-policy 'prompt) + (setq bufferlo-bookmark-frame-persist-frame-name nil) (setq bufferlo-bookmark-tab-replace-policy 'new) (setq bufferlo-bookmark-tab-duplicate-policy 'prompt) (setq bufferlo-bookmark-tab-in-bookmarked-frame-policy 'prompt) diff --git a/bufferlo.el b/bufferlo.el index 29c8c8cb91..9064e4f05a 100644 --- a/bufferlo.el +++ b/bufferlo.el @@ -322,6 +322,11 @@ Note: \\='raise is considered \\='clear during `bookmark-set' loading." (const :tag "Ignore" ignore) (const :tag "Raise" raise))) +(defcustom bufferlo-bookmark-frame-persist-frame-name nil + "If non-nil, store frame's name in its bookmark, restore when loading." + :package-version '(bufferlo . "1.2") + :type 'boolean) + (defcustom bufferlo-bookmarks-load-tabs-make-frame nil "If non-nil, make a new frame for tabs loaded by `bufferlo-bookmarks-load'. If nil, tab bookmarks are loaded into the current frame." @@ -2862,6 +2867,8 @@ Returns nil on success, non-nil on abort." (tab-bar-select-tab orig-tab) `((tabs . ,(reverse tabs-to-bookmark)) (current . ,orig-tab) + (bufferlo--frame-name . ,(when bufferlo-bookmark-frame-persist-frame-name + (frame-parameter nil 'name))) (bufferlo--frame-geometry . ,(funcall bufferlo-frame-geometry-function (selected-frame))) (handler . ,#'bufferlo--bookmark-frame-handler)))) @@ -2961,13 +2968,17 @@ Returns nil on success, non-nil on abort." 'restore-geometry)) (selected-frame)))) (with-selected-frame frame - ;; Restore geometry - (when (and new-frame-p - (display-graphic-p) - (eq bufferlo-bookmark-frame-load-make-frame - 'restore-geometry)) - (when-let* ((fg (alist-get 'bufferlo--frame-geometry bookmark))) - (funcall bufferlo-set-frame-geometry-function fg))) + (when new-frame-p + ;; Restore name + (when bufferlo-bookmark-frame-persist-frame-name + (when-let* ((frame-name (alist-get 'bufferlo--frame-name bookmark))) + (set-frame-name frame-name))) + ;; Restore geometry + (when (and (display-graphic-p) + (eq bufferlo-bookmark-frame-load-make-frame + 'restore-geometry)) + (when-let* ((fg (alist-get 'bufferlo--frame-geometry bookmark))) + (funcall bufferlo-set-frame-geometry-function fg)))) ;; Clear existing tabs unless merging (unless (eq load-policy 'merge)