emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 7c99526435 1/3: Extend bookmark menu with with handler type colum


From: Lars Ingebrigtsen
Subject: master 7c99526435 1/3: Extend bookmark menu with with handler type column
Date: Thu, 17 Feb 2022 06:58:19 -0500 (EST)

branch: master
commit 7c995264359824cc1aca40ca37201db5ed44e659
Author: Matthias Meulien <orontee@gmail.com>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Extend bookmark menu with with handler type column
    
    * lisp/bookmark.el (bookmark-bmenu--revert): Extend table entries with
    handler type.
    (bookmark-bmenu-mode): Add handler type column.
    * lisp/doc-view.el (doc-view-bookmark-jump): Set bookmark handler type.
    * lisp/help-mode.el (help-bookmark-jump): Set bookmark handler type.
    * lisp/image-dired.el (image-dired-bookmark-jump): Set bookmark handler 
type.
    * lisp/info.el (Info-bookmark-jump): Set bookmark handler type.
    * lisp/net/eww.el (eww-bookmark-jump): Set bookmark handler type.
    * lisp/vc/vc-dir.el (vc-dir-bookmark-jump): Set bookmark handler type.
    * lisp/woman.el (woman-bookmark-jump): Set bookmark handler type.
---
 lisp/bookmark.el    | 19 ++++++++++++++++++-
 lisp/doc-view.el    |  2 ++
 lisp/help-mode.el   |  1 +
 lisp/image-dired.el |  1 +
 lisp/info.el        |  1 +
 lisp/net/eww.el     |  2 ++
 lisp/vc/vc-dir.el   |  2 ++
 lisp/woman.el       |  2 ++
 8 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 8753326881..61c532c1f3 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -344,6 +344,17 @@ This point is in `bookmark-current-buffer'.")
 BOOKMARK-RECORD is, e.g., one element from `bookmark-alist'."
   (car bookmark-record))
 
+(defun bookmark-type-from-full-record (bookmark-record)
+  "Return then type of BOOKMARK-RECORD.
+BOOKMARK-RECORD is, e.g., one element from `bookmark-alist'. It's
+type is read from the symbol property named
+`bookmark-handler-type' read on the record handler function."
+  (let ((handler (bookmark-get-handler bookmark-record)))
+    (when (autoloadp (symbol-function handler))
+      (autoload-do-load (symbol-function handler)))
+    (if (symbolp handler)
+        (get handler 'bookmark-handler-type)
+     "")))
 
 (defun bookmark-all-names ()
   "Return a list of all current bookmark names."
@@ -1351,7 +1362,6 @@ minibuffer history list `bookmark-history'."
       (bookmark-get-filename bookmark-name-or-record)
       "-- Unknown location --"))
 
-
 ;;;###autoload
 (defun bookmark-rename (old-name &optional new-name)
   "Change the name of OLD-NAME bookmark to NEW-NAME name.
@@ -1790,6 +1800,7 @@ Don't affect the buffer ring order."
   (let (entries)
     (dolist (full-record (bookmark-maybe-sort-alist))
       (let* ((name       (bookmark-name-from-full-record full-record))
+             (type       (bookmark-type-from-full-record full-record))
              (annotation (bookmark-get-annotation full-record))
              (location   (bookmark-location full-record)))
         (push (list
@@ -1803,6 +1814,7 @@ Don't affect the buffer ring order."
                                   'follow-link t
                                   'help-echo "mouse-2: go to this bookmark in 
other window")
                     name)
+                 ,(or type "")
                  ,@(if bookmark-bmenu-toggle-filenames
                        (list location))])
               entries)))
@@ -1891,6 +1903,7 @@ Bookmark names preceded by a \"*\" have annotations.
   (setq tabulated-list-format
         `[("" 1) ;; Space to add "*" for bookmark with annotation
           ("Bookmark" ,bookmark-bmenu-file-column 
bookmark-bmenu--name-predicate)
+          ("Type" 15 bookmark-bmenu--type-predicate)
           ,@(if bookmark-bmenu-toggle-filenames
                 '(("File" 0 bookmark-bmenu--file-predicate)))])
   (setq tabulated-list-padding bookmark-bmenu-marks-width)
@@ -1905,6 +1918,10 @@ Bookmark names preceded by a \"*\" have annotations.
 This is used for `tabulated-list-format' in `bookmark-bmenu-mode'."
   (string< (caar a) (caar b)))
 
+(defun bookmark-bmenu--type-predicate (a b)
+  "Predicate to sort \"*Bookmark List*\" buffer by the type column.
+This is used for `tabulated-list-format' in `bookmark-bmenu-mode'."
+  (string< (elt (cadr a) 2) (elt (cadr b) 2)))
 
 (defun bookmark-bmenu--file-predicate (a b)
   "Predicate to sort \"*Bookmark List*\" buffer by the file column.
diff --git a/lisp/doc-view.el b/lisp/doc-view.el
index 4979a2c0e2..193cf42ea4 100644
--- a/lisp/doc-view.el
+++ b/lisp/doc-view.el
@@ -2247,6 +2247,8 @@ See the command `doc-view-mode' for more information on 
this mode."
     (add-hook 'bookmark-after-jump-hook show-fn-sym)
     (bookmark-default-handler bmk)))
 
+(put 'doc-view-bookmark-jump 'bookmark-handler-type "Docview")
+
 ;; Obsolete.
 
 (defun doc-view-intersection (l1 l2)
diff --git a/lisp/help-mode.el b/lisp/help-mode.el
index 5fb5dcfb19..d1b9357f3c 100644
--- a/lisp/help-mode.el
+++ b/lisp/help-mode.el
@@ -936,6 +936,7 @@ BOOKMARK is a bookmark name or a bookmark record."
     (pop-to-buffer "*Help*")
     (goto-char position)))
 
+(put 'help-bookmark-jump 'bookmark-handler-type "Help")
 
 (provide 'help-mode)
 
diff --git a/lisp/image-dired.el b/lisp/image-dired.el
index 9b0bbb70df..d8bd2937db 100644
--- a/lisp/image-dired.el
+++ b/lisp/image-dired.el
@@ -2792,6 +2792,7 @@ tags to their respective image file.  Internal function 
used by
     ;; (bookmark-prop-get bookmark 'image-dired-file)
     (goto-char (point-min))))
 
+(put 'image-dired-bookmark-jump 'bookmark-handler-type "Image")
 
 ;;; Obsolete
 
diff --git a/lisp/info.el b/lisp/info.el
index bb8cd0d312..0565663c38 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -5449,6 +5449,7 @@ type returned by `Info-bookmark-make-record', which see."
     (bookmark-default-handler
      `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bmk)))))
 
+(put 'Info-bookmark-jump 'bookmark-handler-type "Info")
 
 ;;;###autoload
 (defun info-display-manual (manual)
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index eaa5c11938..9db07b51db 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -2499,6 +2499,8 @@ Otherwise, the restored buffer will contain a prompt to 
do so by using
   "Default bookmark handler for EWW buffers."
   (eww (bookmark-prop-get bookmark 'location)))
 
+(put 'eww-bookmark-jump 'bookmark-handler-type "EWW")
+
 (provide 'eww)
 
 ;;; eww.el ends here
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index ba6e098d98..944b409ea2 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -1560,6 +1560,8 @@ type returned by `vc-dir-bookmark-make-record'."
     (bookmark-default-handler
      `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bmk)))))
 
+(put 'vc-dir-bookmark-jump 'bookmark-handler-type "VC")
+
 
 (provide 'vc-dir)
 
diff --git a/lisp/woman.el b/lisp/woman.el
index e16785329a..c0c8f34348 100644
--- a/lisp/woman.el
+++ b/lisp/woman.el
@@ -4579,6 +4579,8 @@ logging the message."
     (bookmark-default-handler
      `("" (buffer . ,buf) . ,(bookmark-get-bookmark-record bookmark)))))
 
+(put 'woman-bookmark-jump 'bookmark-handler-type "WoMan")
+
 ;; Obsolete.
 
 (defvar woman-version "0.551 (beta)" "WoMan version information.")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]