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.
This commit is contained in:
Matthias Meulien 2022-02-15 23:39:02 +01:00 committed by Lars Ingebrigtsen
parent c78b3c02a3
commit 7c99526435
8 changed files with 29 additions and 1 deletions

View file

@ -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.

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

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