Browse Source

Search backward from a footnote definition to find reference.

With multiple definitions of a footnote with the same label in a
buffer, this has a higher chance to find the right one.

Request by Samuel Wales
Carsten Dominik 15 years ago
parent
commit
a74a748d0f
2 changed files with 12 additions and 9 deletions
  1. 3 0
      lisp/ChangeLog
  2. 9 9
      lisp/org-footnote.el

+ 3 - 0
lisp/ChangeLog

@@ -1,5 +1,8 @@
 2010-04-14  Carsten Dominik  <carsten.dominik@gmail.com>
 
+	* org-footnote.el (org-footnote-goto-previous-reference): Renamed
+	from `org-footnote-goto-next-reference'.
+
 	* org.el (org-auto-repeat-maybe): Only record LAST_REPEAT if
 	org-log-repeat is non-nil, or if there is clocking data in the
 	entry.

+ 9 - 9
lisp/org-footnote.el

@@ -182,25 +182,25 @@ with start and label of the footnote if there is a definition at point."
       (org-show-context 'link-search)
       (message "Edit definition and go back with `C-c &' or, if unique, with `C-c C-c'."))))
 
-(defun org-footnote-goto-next-reference (label)
-  "Find the next reference of the footnote with label LABEL."
+(defun org-footnote-goto-previous-reference (label)
+  "Find the next previous of the footnote with label LABEL."
   (interactive "sLabel: ")
   (org-mark-ring-push)
   (setq label (org-footnote-normalize-label label))
   (let ((re (format ".\\[%s[]:]" label))
 	(p0 (point)) pos)
     (save-excursion
-      (setq pos (or (re-search-forward re nil t)
-		    (and (goto-char (point-min))
-			 (re-search-forward re nil t))
+      (setq pos (or (re-search-backward re nil t)
+		    (and (goto-char (point-max))
+			 (re-search-backward re nil t))
 		    (and (progn (widen) t)
 			 (goto-char p0)
-			 (re-search-forward re nil t))
-		    (and (goto-char (point-min))
+			 (re-search-backward re nil t))
+		    (and (goto-char (point-max))
 			 (re-search-forward re nil t)))))
     (if pos
 	(progn
-	  (goto-char pos)
+	  (goto-char (match-end 0))
 	  (org-show-context 'link-search))
       (error "Cannot find reference of footnote %s" label))))
 
@@ -339,7 +339,7 @@ With prefix arg SPECIAL, offer additional commands in a menu."
 	  (org-footnote-goto-definition (nth 1 tmp))
 	(goto-char (match-beginning 4))))
      ((setq tmp (org-footnote-at-definition-p))
-      (org-footnote-goto-next-reference (nth 1 tmp)))
+      (org-footnote-goto-previous-reference (nth 1 tmp)))
      (t (org-footnote-new)))))
 
 ;;;###autoload