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)

Reply via email to