branch: externals/bufferlo
commit 3e485f5633149bb58bffb9371c428ace8b9e9478
Author: shipmints <shipmi...@gmail.com>
Commit: shipmints <shipmi...@gmail.com>

    bufferlo-bookmarks-load skip already loaded bookmarks
    
    If one loads a session that contains bookmarks that are also indicated
    to load, the bookmarks will be loaded preferentially by the session.
---
 bufferlo.el | 29 ++++++++++++++++-------------
 1 file changed, 16 insertions(+), 13 deletions(-)

diff --git a/bufferlo.el b/bufferlo.el
index bf2194911c..04c38be1e3 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -3208,28 +3208,31 @@ current or new frame according to
          (current-prefix-arg nil))
     ;; load session bookmarks
     (dolist (bookmark-name (bufferlo--bookmark-get-names 
#'bufferlo--bookmark-session-handler))
-      (when (run-hook-with-args-until-success 
'bufferlo-bookmarks-load-predicate-functions bookmark-name)
-        (if (bufferlo--bookmark-jump bookmark-name)
-            (push bookmark-name bookmarks-loaded)
-          (push bookmark-name bookmarks-failed))))
+      (unless (assoc bookmark-name bufferlo--active-sessions)
+        (when (run-hook-with-args-until-success 
'bufferlo-bookmarks-load-predicate-functions bookmark-name)
+          (if (bufferlo--bookmark-jump bookmark-name)
+              (push bookmark-name bookmarks-loaded)
+            (push bookmark-name bookmarks-failed)))))
     ;; load tab bookmarks, making a new frame if required
     (let ((bufferlo-bookmark-tab-replace-policy 'replace) ; we handle making 
tabs in this loop
           (tab-bar-new-tab-choice t)
           (new-tab-frame nil))
       (dolist (bookmark-name (bufferlo--bookmark-get-names 
#'bufferlo--bookmark-tab-handler))
+        (unless (assoc bookmark-name (bufferlo--active-bookmarks))
+          (when (run-hook-with-args-until-success 
'bufferlo-bookmarks-load-predicate-functions bookmark-name)
+            (if (and bufferlo-bookmarks-load-tabs-make-frame (not 
new-tab-frame))
+                (select-frame (setq new-tab-frame (make-frame)))
+              (tab-bar-new-tab-to))
+            (if (bufferlo--bookmark-jump bookmark-name)
+                (push bookmark-name bookmarks-loaded)
+              (push bookmark-name bookmarks-failed))))))
+    ;; load frame bookmarks
+    (dolist (bookmark-name (bufferlo--bookmark-get-names 
#'bufferlo--bookmark-frame-handler))
+      (unless (assoc bookmark-name (bufferlo--active-bookmarks))
         (when (run-hook-with-args-until-success 
'bufferlo-bookmarks-load-predicate-functions bookmark-name)
-          (if (and bufferlo-bookmarks-load-tabs-make-frame (not new-tab-frame))
-              (select-frame (setq new-tab-frame (make-frame)))
-            (tab-bar-new-tab-to))
           (if (bufferlo--bookmark-jump bookmark-name)
               (push bookmark-name bookmarks-loaded)
             (push bookmark-name bookmarks-failed)))))
-    ;; load frame bookmarks
-    (dolist (bookmark-name (bufferlo--bookmark-get-names 
#'bufferlo--bookmark-frame-handler))
-      (when (run-hook-with-args-until-success 
'bufferlo-bookmarks-load-predicate-functions bookmark-name)
-        (if (bufferlo--bookmark-jump bookmark-name)
-            (push bookmark-name bookmarks-loaded)
-          (push bookmark-name bookmarks-failed))))
     (select-frame orig-frame)
     (when bookmarks-loaded
       (message "Loaded bufferlo bookmarks: %s, in %.2f seconds%s"

Reply via email to