|
@@ -53,15 +53,18 @@
|
|
|
(defvar message-signature-separator) ;; defined in message.el
|
|
|
|
|
|
(defconst org-footnote-re
|
|
|
- ;; Footnotes ain't closed in this regexp, as their definition might
|
|
|
- ;; contain square brackets \(i.e. links\).
|
|
|
+ ;; Only [1]-like footnotes are closed in this regexp, as footnotes
|
|
|
+ ;; from other types might contain square brackets (i.e. links) in
|
|
|
+ ;; their definition.
|
|
|
;;
|
|
|
;; `org-re' is used for regexp compatibility with XEmacs.
|
|
|
(org-re (concat "\\[\\(?:"
|
|
|
;; Match inline footnotes.
|
|
|
"fn:\\([-_[:word:]]+\\)?:\\|"
|
|
|
;; Match other footnotes.
|
|
|
- "\\([0-9]+\\)\\|\\(fn:[-_[:word:]]+\\)\\)"))
|
|
|
+ "\\(?:\\([0-9]+\\)\\]\\)\\|"
|
|
|
+ "\\(fn:[-_[:word:]]+\\)"
|
|
|
+ "\\)"))
|
|
|
"Regular expression for matching footnotes.")
|
|
|
|
|
|
(defconst org-footnote-definition-re
|
|
@@ -244,13 +247,19 @@ If no footnote is found, return nil."
|
|
|
(while t
|
|
|
(unless (re-search-forward org-footnote-re limit t)
|
|
|
(throw 'exit nil))
|
|
|
+ ;; Beware: with [1]-like footnotes point will be just after
|
|
|
+ ;; the closing square bracket.
|
|
|
+ (backward-char)
|
|
|
(cond
|
|
|
((setq ref (org-footnote-at-reference-p))
|
|
|
(throw 'exit ref))
|
|
|
- ;; Definition: also grab the last square bracket, not matched
|
|
|
- ;; in `org-footnote-re'
|
|
|
+ ;; Definition: also grab the last square bracket, only
|
|
|
+ ;; matched in `org-footnote-re' for [1]-like footnotes.
|
|
|
((= (point-at-bol) (match-beginning 0))
|
|
|
- (throw 'exit (list nil (match-beginning 0) (1+ (match-end 0))))))))))
|
|
|
+ (let ((end (match-end 0)))
|
|
|
+ (throw 'exit
|
|
|
+ (list nil (match-beginning 0)
|
|
|
+ (if (eq (char-before end) 93) end (1+ end)))))))))))
|
|
|
|
|
|
(defun org-footnote-get-definition (label)
|
|
|
"Return label, boundaries and definition of the footnote LABEL."
|