summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2013-09-11 17:07:09 +0200
committerNicolas Goaziou <n.goaziou@gmail.com>2013-09-11 17:12:26 +0200
commit7b4d8bb614552ff4665825ed6aa36905c4a48514 (patch)
treefa7cc3d434bc5ca3e565718e2d9af83e6eeab6d3
parentaf9c0fbf9143883ce31478a137a60cc69428d4d4 (diff)
downloadorg-mode-7b4d8bb614552ff4665825ed6aa36905c4a48514.tar.gz
org-element: Fix footnote definition parsing
* lisp/org-element.el (org-element-footnote-definition-parser): Fix value for :contents-begin when first line of footnote definition is empty besides the label. * testing/lisp/test-org-element.el (test-org-element/footnote-definition-parser): Add test.
-rw-r--r--lisp/org-element.el9
-rw-r--r--testing/lisp/test-org-element.el17
2 files changed, 17 insertions, 9 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el
index 0037f03..e078d9f 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -683,9 +683,12 @@ Assume point is at the beginning of the footnote definition."
"^\\([ \t]*\n\\)\\{2,\\}") limit 'move))
(match-beginning 0)
(point))))
- (contents-begin (progn (search-forward "]")
- (skip-chars-forward " \r\t\n" ending)
- (and (/= (point) ending) (point))))
+ (contents-begin (progn
+ (search-forward "]")
+ (skip-chars-forward " \r\t\n" ending)
+ (cond ((= (point) ending) nil)
+ ((= (line-beginning-position) begin) (point))
+ (t (line-beginning-position)))))
(contents-end (and contents-begin ending))
(end (progn (goto-char ending)
(skip-chars-forward " \r\t\n" limit)
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index bc2b5aa..76cdfda 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -760,21 +760,26 @@ Some other text
"Test `footnote-definition' parser."
(should
(org-test-with-temp-text "[fn:1] Definition"
- (org-element-map
- (org-element-parse-buffer) 'footnote-definition 'identity nil t)))
+ (org-element-map (org-element-parse-buffer) 'footnote-definition
+ 'identity nil t)))
;; Footnote with more contents
(should
(= 29
(org-element-property
:end
(org-test-with-temp-text "[fn:1] Definition\n\n| a | b |"
- (org-element-map
- (org-element-parse-buffer)
- 'footnote-definition 'identity nil t)))))
+ (org-element-map (org-element-parse-buffer) 'footnote-definition
+ 'identity nil t)))))
;; Footnote starting with special syntax.
(should-not
(org-test-with-temp-text "[fn:1] - no item"
- (org-element-map (org-element-parse-buffer) 'item 'identity))))
+ (org-element-map (org-element-parse-buffer) 'item 'identity)))
+ ;; Correctly handle footnote starting with an empty line.
+ (should
+ (= 9
+ (org-test-with-temp-text "[fn:1]\n\n Body"
+ (org-element-property :contents-begin
+ (org-element-at-point))))))
;;;; Footnotes Reference.