branch: externals/bufferlo
commit 512723ec4138013f844a2b1dfb172fffc7c1634c
Author: shipmints <shipmi...@gmail.com>
Commit: Flo Rommel <m...@florommel.de>

    Wrap bookmark--jump-via to ignore display-func for bufferlo bookmarks
    
    This solves for bookmark interfering with window actions.
---
 bufferlo.el | 31 ++++++++++++++++++++++---------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/bufferlo.el b/bufferlo.el
index a01b3ac2ba..7c0efef919 100644
--- a/bufferlo.el
+++ b/bufferlo.el
@@ -933,8 +933,9 @@ string, FACE is the face for STR."
         (add-hook 'delete-frame-functions
                   #'bufferlo-bookmark--frame-save-on-delete)
         ;; bookmark advice
-        (advice-add 'bookmark-rename :around 
#'bufferlo--bookmark-rename-advice)
-        (advice-add 'bookmark-delete :around 
#'bufferlo--bookmark-delete-advice)
+        (advice-add #'bookmark--jump-via :around 
#'bufferlo--bookmark--jump-via-advice)
+        (advice-add #'bookmark-rename :around 
#'bufferlo--bookmark-rename-advice)
+        (advice-add #'bookmark-delete :around 
#'bufferlo--bookmark-delete-advice)
         ;; mode line
         (setq mode-line-misc-info (cons bufferlo-mode-line 
mode-line-misc-info)))
     ;; Prefer local buffers
@@ -982,8 +983,9 @@ string, FACE is the face for STR."
     (remove-hook 'delete-frame-functions
                  #'bufferlo-bookmark--frame-save-on-delete)
     ;; bookmark advice
-    (advice-remove 'bookmark-rename #'bufferlo--bookmark-rename-advice)
-    (advice-remove 'bookmark-delete #'bufferlo--bookmark-delete-advice)))
+    (advice-remove #'bookmark--jump-via #'bufferlo--bookmark--jump-via-advice)
+    (advice-remove #'bookmark-rename #'bufferlo--bookmark-rename-advice)
+    (advice-remove #'bookmark-delete #'bufferlo--bookmark-delete-advice)))
 
 (defun bufferlo--current-bookmark-name ()
   "Current bufferlo bookmark name, where frame beats tab."
@@ -4128,13 +4130,24 @@ exist."
 ;; (defun bookmark-set-no-overwrite (&optional name push-bookmark)
 ;; Leave these alone for now. They warn about duplicate bookmarks.
 
+;; (defun bookmark--jump-via (bookmark-name-or-record display-function)
+(defun bufferlo--bookmark--jump-via-advice (oldfn bookmark-name-or-record 
display-function)
+  "`bookmark--jump-via' advice to nullify `display-function'.
+OLDFN BOOKMARK-NAME-OR-RECORD DISPLAY-FUNCTION"
+  (when-let* ((bookmark-record (bookmark-get-bookmark bookmark-name-or-record 
'noerror)))
+    (if (rassoc (bookmark-type-from-full-record bookmark-record)
+                bufferlo--bookmark-type-names)
+        (let ((bookmark-fringe-mark nil))
+          (funcall oldfn bookmark-record #'ignore))
+      (funcall oldfn bookmark-record display-function))))
+
 ;; (defun bookmark-rename (old-name &optional new-name)
 (defun bufferlo--bookmark-rename-advice (oldfn &optional old-name new-name)
   "`bookmark-rename' advice to prevent renaming active bufferlo bookmarks.
 OLDFN OLD-NAME NEW-NAME"
   (interactive)
-  (if (called-interactively-p 'interactive)
-      (setq old-name (bookmark-completing-read "Old bookmark name")))
+  (when (called-interactively-p 'interactive)
+    (setq old-name (bookmark-completing-read "Old bookmark name")))
   (if-let* ((abm (assoc old-name (bufferlo--active-bookmarks))))
       (user-error
        "%s is an active bufferlo bookmark--close its frame/tab, or clear it 
before renaming"
@@ -4148,9 +4161,9 @@ OLDFN OLD-NAME NEW-NAME"
   "`bookmark-delete' advice to prevent deleting active bufferlo bookmarks.
 OLDFN BOOKMARK-NAME BATCH"
   (interactive)
-  (if (called-interactively-p 'interactive)
-      (setq bookmark-name (bookmark-completing-read "Delete bookmark"
-                                                    
bookmark-current-bookmark)))
+  (when (called-interactively-p 'interactive)
+    (setq bookmark-name (bookmark-completing-read "Delete bookmark"
+                                                  bookmark-current-bookmark)))
   (if-let* ((abm (assoc bookmark-name (bufferlo--active-bookmarks))))
       (user-error
        "%s is an active bufferlo bookmark--close its frame/tab, or clear it 
before deleting"

Reply via email to