# HG changeset patch # User Karl Fogel # Date 1199260144 0 # Node ID 0140d3ebb2621a62309efb5a5337ae4587cfb61c # Parent f5ab33e0dc01046dbea9352efbb2a3dff692a223 Change a return type, for greater extensibility. See http://lists.gnu.org/archive/html/emacs-devel/2007-12/msg01077.html and its thread for discussion leading to this change. * emacs-cvs/lisp/bookmark.el: (bookmark-jump-noselect): Return an alist instead of a dotted pair. (bookmark-jump, bookmark-jump-other-window, bookmark-insert) (bookmark-bmenu-2-window, bookmark-bmenu-other-window) (bookmark-bmenu-switch-other-window): Adjust accordingly. (bookmark-make-cell-function): Adjust documentation accordingly. * emacs-cvs/lisp/image-mode.el (image-bookmark-jump): Adjust return type accordingly; document. * emacs-cvs/lisp/doc-view.el (doc-view-bookmark-jump): Adjust return type accordingly; document. diff -r f5ab33e0dc01 -r 0140d3ebb262 lisp/ChangeLog --- a/lisp/ChangeLog Wed Jan 02 02:20:56 2008 +0000 +++ b/lisp/ChangeLog Wed Jan 02 07:49:04 2008 +0000 @@ -1,3 +1,22 @@ +2008-01-02 Karl Fogel + + Change a return type, for greater extensibility. See + http://lists.gnu.org/archive/html/emacs-devel/2007-12/msg01077.html + and its thread for discussion leading to this change. + + * emacs-cvs/lisp/bookmark.el: + (bookmark-jump-noselect): Return an alist instead of a dotted pair. + (bookmark-jump, bookmark-jump-other-window, bookmark-insert) + (bookmark-bmenu-2-window, bookmark-bmenu-other-window) + (bookmark-bmenu-switch-other-window): Adjust accordingly. + (bookmark-make-cell-function): Adjust documentation accordingly. + + * emacs-cvs/lisp/image-mode.el + (image-bookmark-jump): Adjust return type accordingly; document. + + * emacs-cvs/lisp/doc-view.el + (doc-view-bookmark-jump): Adjust return type accordingly; document. + 2008-01-02 Miles Bader > * net/rcirc.el (rcirc-log-filename-function): New variable. diff -r f5ab33e0dc01 -r 0140d3ebb262 lisp/bookmark.el --- a/lisp/bookmark.el Wed Jan 02 02:20:56 2008 +0000 +++ b/lisp/bookmark.el Wed Jan 02 07:49:04 2008 +0000 @@ -491,13 +491,11 @@ INFO-NODE. See `bookmark-make-cell-for-text-file' for a description. -The returned record may contain a special cons (handler -. some-function) which sets the handler function that should be -used to open this bookmark instead of `bookmark-jump-noselect'. -It should return a cons (BUFFER . POINT) indicating buffer -showing the bookmarked location and the value of point in that -buffer. Like `bookmark-jump-noselect' the buffer shouldn't be -selected by the handler.") +The returned record may contain a special cons (handler . SOME-FUNCTION) +which sets the handler function that should be used to open this +bookmark instead of `bookmark-jump-noselect'. The handler should +return an alist like the one that function returns, and (of course) +should likewise not select the buffer.") (defun bookmark-make (name &optional annotation overwrite info-node) "Make a bookmark named NAME. @@ -1084,10 +1082,10 @@ (unless bookmark (error "No bookmark specified")) (bookmark-maybe-historicize-string bookmark) - (let ((cell (bookmark-jump-internal bookmark))) - (and cell - (switch-to-buffer (car cell)) - (goto-char (cdr cell)) + (let ((alist (bookmark-jump-internal bookmark))) + (and alist + (switch-to-buffer (cadr (assq 'buffer alist))) + (goto-char (cadr (assq 'position alist))) (progn (run-hooks 'bookmark-after-jump-hook) t) (if bookmark-automatically-show-annotations ;; if there is an annotation for this bookmark, @@ -1106,10 +1104,10 @@ (list bkm) bkm))) (when bookmark (bookmark-maybe-historicize-string bookmark) - (let ((cell (bookmark-jump-internal bookmark))) - (and cell - (switch-to-buffer-other-window (car cell)) - (goto-char (cdr cell)) + (let ((alist (bookmark-jump-internal bookmark))) + (and alist + (switch-to-buffer-other-window (cadr (assq 'buffer alist))) + (goto-char (cadr (assq 'position alist))) (if bookmark-automatically-show-annotations ;; if there is an annotation for this bookmark, ;; show it in a buffer. @@ -1143,8 +1141,12 @@ bookmark)) (defun bookmark-jump-noselect (str) - ;; a leetle helper for bookmark-jump :-) - ;; returns (BUFFER . POINT) + ;; Helper for bookmark-jump. STR is a bookmark name, of the sort + ;; accepted by `bookmark-get-bookmark'. + ;; + ;; Return an alist '((buffer BUFFER) (position POSITION) ...) + ;; indicating the bookmarked point within the specied buffer. Any + ;; elements not documented here should be ignored. (bookmark-maybe-load-default-file) (let* ((file (expand-file-name (bookmark-get-filename str))) (forward-str (bookmark-get-front-context-string str)) @@ -1179,7 +1181,7 @@ (goto-char (match-end 0)))) ;; added by db (setq bookmark-current-bookmark str) - (cons (current-buffer) (point)))) + `((buffer ,(current-buffer)) (position ,(point))))) ;; Else unable to find the marked file, so ask if user wants to ;; relocate the bookmark, else remind them to consider deletion. @@ -1296,7 +1298,7 @@ (let ((orig-point (point)) (str-to-insert (save-excursion - (set-buffer (car (bookmark-jump-internal bookmark))) + (set-buffer (cadr (assq 'buffer (bookmark-jump-internal bookmark)))) (buffer-string)))) (insert str-to-insert) (push-mark) @@ -1925,9 +1927,9 @@ (pop-up-windows t)) (delete-other-windows) (switch-to-buffer (other-buffer)) - (let* ((pair (bookmark-jump-internal bmrk)) - (buff (car pair)) - (pos (cdr pair))) + (let* ((alist (bookmark-jump-internal bmrk)) + (buff (cadr (assq 'buffer alist))) + (pos (cadr (assq 'position alist)))) (pop-to-buffer buff) (goto-char pos)) (bury-buffer menu)))) @@ -1945,9 +1947,9 @@ (interactive) (let ((bookmark (bookmark-bmenu-bookmark))) (if (bookmark-bmenu-check-position) - (let* ((pair (bookmark-jump-internal bookmark)) - (buff (car pair)) - (pos (cdr pair))) + (let* ((alist (bookmark-jump-internal bookmark)) + (buff (cadr (assq 'buffer alist))) + (pos (cadr (assq 'position alist)))) (switch-to-buffer-other-window buff) (goto-char pos) (set-window-point (get-buffer-window buff) pos) @@ -1963,9 +1965,9 @@ same-window-buffer-names same-window-regexps) (if (bookmark-bmenu-check-position) - (let* ((pair (bookmark-jump-internal bookmark)) - (buff (car pair)) - (pos (cdr pair))) + (let* ((alist (bookmark-jump-internal bookmark)) + (buff (cadr (assq 'buffer alist))) + (pos (cadr (assq 'position alist)))) (display-buffer buff) (let ((o-buffer (current-buffer))) ;; save-excursion won't do diff -r f5ab33e0dc01 -r 0140d3ebb262 lisp/doc-view.el --- a/lisp/doc-view.el Wed Jan 02 02:20:56 2008 +0000 +++ b/lisp/doc-view.el Wed Jan 02 07:49:04 2008 +0000 @@ -1017,6 +1017,8 @@ ;;;###autoload (defun doc-view-bookmark-jump (bmk) + ;; This implements the `handler' function interface for record type + ;; returned by `bookmark-make-cell-function', which see. (save-window-excursion (let ((filename (bookmark-get-filename bmk)) (page (cdr (assq 'page (bookmark-get-bookmark-record bmk))))) @@ -1024,6 +1026,6 @@ (when (not (eq major-mode 'doc-view-mode)) (doc-view-toggle-display)) (doc-view-goto-page page) - (cons (current-buffer) 1)))) + `((buffer ,(current-buffer)) (position ,1))))) ;;; doc-view.el ends here diff -r f5ab33e0dc01 -r 0140d3ebb262 lisp/image-mode.el --- a/lisp/image-mode.el Wed Jan 02 02:20:56 2008 +0000 +++ b/lisp/image-mode.el Wed Jan 02 07:49:04 2008 +0000 @@ -375,6 +375,8 @@ ;;;###autoload (defun image-bookmark-jump (bmk) + ;; This implements the `handler' function interface for record type + ;; returned by `bookmark-make-cell-function', which see. (save-window-excursion (let ((filename (bookmark-get-filename bmk)) (type (cdr (assq 'image-type (bookmark-get-bookmark-record bmk)))) @@ -384,7 +386,7 @@ (image-toggle-display)) (when (string= image-type "text") (goto-char pos)) - (cons (current-buffer) pos)))) + `((buffer ,(current-buffer)) (position ,(point)))))) (provide 'image-mode)