changeset 73804:ad5c0d302d05

(reftex-pop-to-bibtex-entry): Preserve point when displaying a bibtex cross reference in the echo area.
author Carsten Dominik <dominik@science.uva.nl>
date Tue, 07 Nov 2006 08:27:16 +0000
parents bc8833df1896
children 6bca57b7534e
files lisp/textmodes/reftex-cite.el
diffstat 1 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/textmodes/reftex-cite.el	Tue Nov 07 08:26:49 2006 +0000
+++ b/lisp/textmodes/reftex-cite.el	Tue Nov 07 08:27:16 2006 +0000
@@ -125,7 +125,7 @@
   ;; If MARK-TO-KILL is non-nil, mark new buffer to kill.
   ;; If HIGHLIGHT is non-nil, highlight the match.
   ;; If ITEM in non-nil, search for bibitem instead of database entry.
-  ;; If RETURN is non-nil, just return the entry.
+  ;; If RETURN is non-nil, just return the entry and restore point.
 
   (let* ((re
           (if item 
@@ -133,7 +133,7 @@
             (concat "@[a-zA-Z]+[ \t\n\r]*[{(][ \t\n\r]*" (regexp-quote key)
                     "[, \t\r\n}]")))
          (buffer-conf (current-buffer))
-         file buf pos)
+         file buf pos oldpos)
 
     (catch 'exit
       (while file-list
@@ -142,9 +142,11 @@
         (unless (setq buf (reftex-get-file-buffer-force file mark-to-kill))
           (error "No such file %s" file))
         (set-buffer buf)
+	(setq oldpos (point))
         (widen)
         (goto-char (point-min))
-        (when (re-search-forward re nil t)
+        (if (not (re-search-forward re nil t))
+	    (goto-char oldpos) ;; restore previous position of point
           (goto-char (match-beginning 0))
           (setq pos (point))
           (when return
@@ -152,6 +154,7 @@
             (if item (goto-char (match-end 0)))
             (setq return (buffer-substring 
                           (point) (reftex-end-of-bib-entry item)))
+	    (goto-char oldpos) ;; restore point.
             (set-buffer buffer-conf)
             (throw 'exit return))
           (switch-to-buffer-other-window buf)