From ebb9641fb29728e9fbba70cb27f2d42679e32de7 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 14 Apr 2010 11:07:53 -0400 Subject: [PATCH] Add a new field `location' to bookmarks for non-file bookmarks. * bookmark.el (bookmark-location): Use the new field, if present. (bookmark-insert-location): Undo last change, not needed any more. * man.el (Man-bookmark-make-record): * woman.el (woman-bookmark-make-record): * gnus-sum.el (gnus-summary-bookmark-make-record): Add `location' field. --- lisp/ChangeLog | 8 ++++++++ lisp/bookmark.el | 14 +++++++++----- lisp/gnus/ChangeLog | 4 ++++ lisp/gnus/gnus-sum.el | 5 +++-- lisp/man.el | 5 +++-- lisp/woman.el | 1 + 6 files changed, 28 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 89d56ffd323..b9e8ea511e6 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2010-04-14 Stefan Monnier + + Add a new field `location' to bookmarks for non-file bookmarks. + * bookmark.el (bookmark-location): Use the new field, if present. + (bookmark-insert-location): Undo last change, not needed any more. + * man.el (Man-bookmark-make-record): + * woman.el (woman-bookmark-make-record): Add `location' field. + 2010-04-14 Juri Linkov * simple.el (scroll-error-top-bottom): New defcustom. diff --git a/lisp/bookmark.el b/lisp/bookmark.el index 12ac760580c..cfc7d7af5c8 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el @@ -1176,9 +1176,7 @@ minibuffer history list `bookmark-history'." (or no-history (bookmark-maybe-historicize-string bookmark)) (let ((start (point))) (prog1 - ;; FIXME: Each bookmark should come with a `location' method - ;; rather than just say "-- no file --". - (insert (or (bookmark-location bookmark) " -- no file --")) + (insert (bookmark-location bookmark)) (if (display-mouse-p) (add-text-properties start @@ -1193,10 +1191,16 @@ minibuffer history list `bookmark-history'." (defalias 'bookmark-locate 'bookmark-insert-location) (defun bookmark-location (bookmark) - "Return the name of the file associated with BOOKMARK, or nil if none. + "Return a description of the location of BOOKMARK. BOOKMARK may be a bookmark name (a string) or a bookmark record." (bookmark-maybe-load-default-file) - (bookmark-get-filename bookmark)) + ;; We could call the `handler' and ask for it to construct a description + ;; dynamically: it would open up several new possibilities, but it + ;; would have the major disadvantage of forcing to load each and + ;; every handler when the user calls bookmark-menu. + (or (bookmark-prop-get bookmark 'location) + (bookmark-get-filename bookmark) + "-- Unknown location --")) ;;;###autoload diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 52de639c813..b0b3cd11b6a 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,7 @@ +2010-04-14 Stefan Monnier + + * gnus-sum.el (gnus-summary-bookmark-make-record): Add `location' field. + 2010-04-12 Stefan Monnier * gnus-sum.el: Add bookmark declarations to silence the compiler. diff --git a/lisp/gnus/gnus-sum.el b/lisp/gnus/gnus-sum.el index ba74e3baeb8..d8a36dd77db 100644 --- a/lisp/gnus/gnus-sum.el +++ b/lisp/gnus/gnus-sum.el @@ -12657,8 +12657,9 @@ If ALL is a number, fetch this number of articles." (id (mail-header-id head))) `(,subject ,@(bookmark-make-record-default 'point-only) - (group . ,grp) (article . ,art) - (message-id . ,id) (handler . gnus-summary-bookmark-jump)))) + (location . ,(format "Gnus %s:%d:%s" grp art id)) + (group . ,grp) (article . ,art) + (message-id . ,id) (handler . gnus-summary-bookmark-jump)))) ;;;###autoload (defun gnus-summary-bookmark-jump (bookmark) diff --git a/lisp/man.el b/lisp/man.el index 67bdcbea4e6..df5f4807cec 100644 --- a/lisp/man.el +++ b/lisp/man.el @@ -1689,8 +1689,9 @@ Uses `Man-name-local-regexp'." "Make a bookmark entry for a Man buffer." `(,(Man-default-bookmark-title) ,@(bookmark-make-record-default 'point-only) - (man-args . ,Man-arguments) - (handler . Man-bookmark-jump))) + (location . ,(concat "man " Man-arguments)) + (man-args . ,Man-arguments) + (handler . Man-bookmark-jump))) ;;;###autoload (defun Man-bookmark-jump (bookmark) diff --git a/lisp/woman.el b/lisp/woman.el index 603b7917064..fa7ea1836ae 100644 --- a/lisp/woman.el +++ b/lisp/woman.el @@ -4533,6 +4533,7 @@ logging the message." "Make a bookmark entry for a Woman buffer." `(,(Man-default-bookmark-title) ,@(bookmark-make-record-default 'point-only) + (location . ,(concat "woman " woman-last-file-name)) ;; Use the same form as man's bookmarks, as much as possible. (man-args . ,woman-last-file-name) (handler . woman-bookmark-jump))) -- 2.39.5