Browse Source

org-footnote: Fix 5954f6aa25b51a3a9a8f258fb0f15ef51be31366

* lisp/org-footnote.el (org-footnote-goto-definition): Better check
  for narrowed scope.
* testing/lisp/test-org-footnote.el (test-org-footnote/goto-definition):
  Add test.
Nicolas Goaziou 10 years ago
parent
commit
510fc3761b
2 changed files with 10 additions and 4 deletions
  1. 6 4
      lisp/org-footnote.el
  2. 4 0
      testing/lisp/test-org-footnote.el

+ 6 - 4
lisp/org-footnote.el

@@ -360,14 +360,16 @@ If no footnote is found, return nil."
   "Move point to the definition of the footnote LABEL.
 Return a non-nil value when a definition has been found."
   (interactive "sLabel: ")
-  (let ((def (org-footnote-get-definition label)))
+  (let ((def-start (nth 1 (org-footnote-get-definition label))))
     (cond
-     ((not def) (user-error "Cannot find definition of footnote %s" label))
-     ((> (nth 1 def) (point-max))
+     ((not def-start)
+      (user-error "Cannot find definition of footnote %s" label))
+     ((or (> def-start (point-max))
+	  (< def-start (point-min)))
       (user-error "Footnote definition outside of narrowed part of buffer"))
      (t
       (org-mark-ring-push)
-      (goto-char (nth 1 def))
+      (goto-char def-start)
       (looking-at (format "\\[%s[]:]" label))
       (goto-char (match-end 0))
       (org-show-context 'link-search)

+ 4 - 0
testing/lisp/test-org-footnote.el

@@ -164,6 +164,10 @@
    (org-test-with-temp-text "Some text<point>\n[fn:1] Definition."
      (narrow-to-region (point-min) (point))
      (org-footnote-goto-definition "fn:1")))
+  (should-error
+   (org-test-with-temp-text "[fn:1] Definition.\n<point>Some text"
+     (narrow-to-region (point) (point-max))
+     (org-footnote-goto-definition "fn:1")))
   ;; Otherwise, move at the beginning of the definition, including
   ;; anonymous footnotes.
   (should