浏览代码

Change `org-open-at-point' behaviour in footnote definitions

* lisp/org.el (org-open-at-point): In a footnote definition, return to
  footnote reference only when point is on the footnote label.
Nicolas Goaziou 11 年之前
父节点
当前提交
5dd8058c0c
共有 1 个文件被更改,包括 11 次插入6 次删除
  1. 11 6
      lisp/org.el

+ 11 - 6
lisp/org.el

@@ -10598,13 +10598,18 @@ is used internally by `org-open-link-from-string'."
 			(eval cmd))
 			(eval cmd))
 		    (error (progn (widen) (eval cmd)))))))
 		    (error (progn (widen) (eval cmd)))))))
              (t (browse-url-at-point))))))
              (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)
        ((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))
         (org-footnote-action))
        (t (user-error "No link found"))))
        (t (user-error "No link found"))))
     (move-marker org-open-link-marker nil)
     (move-marker org-open-link-marker nil)