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
This commit is contained in:
Carsten Dominik 2010-04-14 16:45:45 +02:00
parent 2db83c67a8
commit a74a748d0f
2 changed files with 12 additions and 9 deletions

View File

@ -1,5 +1,8 @@
2010-04-14 Carsten Dominik <carsten.dominik@gmail.com> 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.el (org-auto-repeat-maybe): Only record LAST_REPEAT if
org-log-repeat is non-nil, or if there is clocking data in the org-log-repeat is non-nil, or if there is clocking data in the
entry. entry.

View File

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