[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.")