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.
This commit is contained in:
Nicolas Goaziou 2014-02-27 18:29:23 +01:00
parent 8b2d3645ac
commit 5dd8058c0c
1 changed files with 11 additions and 6 deletions

View 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)