Change `org-open-at-point' behaviour in footnote definitions
authorNicolas Goaziou <n.goaziou@gmail.com>
Thu, 27 Feb 2014 17:29:23 +0000 (27 18:29 +0100)
committerNicolas Goaziou <n.goaziou@gmail.com>
Thu, 27 Feb 2014 17:38:49 +0000 (27 18:38 +0100)
* lisp/org.el (org-open-at-point): In a footnote definition, return to
  footnote reference only when point is on the footnote label.

lisp/org.el

index 836935f..eb65d08 100644 (file)
@@ -10598,13 +10598,18 @@ is used internally by `org-open-link-from-string'."
                        (eval cmd))
                    (error (progn (widen) (eval cmd)))))))
              (t (browse-url-at-point))))))
-       ;; On a footnote reference or in a footnote definition.
+       ;; On a footnote reference or at a footnote definition's label.
        ((or (eq type 'footnote-reference)
-            (let ((parent context))
-              (while (and (setq parent (org-element-property :parent parent))
-                          (not (eq (org-element-type parent)
-                                   'footnote-definition))))
-              parent))
+           (and (eq type 'footnote-definition)
+                (save-excursion
+                  ;; Do not validate action when point is on the
+                  ;; spaces right after the footnote label, in order
+                  ;; to be on par with behaviour on links.
+                  (skip-chars-forward " \t")
+                  (let ((begin (org-element-property :contents-begin context)))
+                    (if begin (< (point) begin)
+                      (= (line-beginning-position)
+                         (org-element-property :post-affiliated context)))))))
         (org-footnote-action))
        (t (user-error "No link found"))))
     (move-marker org-open-link-marker nil)