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"