forked from mirrors/org-mode
org-element: Fix inlinetask parsing
* lisp/org-element.el (org-element-inlinetask-parser): Fix parsing when regular and degenerate inlinetasks are mixed in the section. * testing/lisp/test-org-element.el (test-org-element/inlinetask-parser): Add tests. Thanks to Anders Johansson for reporting it.
This commit is contained in:
parent
d25a2967b9
commit
c5d88fb606
|
@ -972,8 +972,9 @@ Assume point is at beginning of the inline task."
|
|||
plist))))
|
||||
(task-end (save-excursion
|
||||
(end-of-line)
|
||||
(and (re-search-forward "^\\*+ END" limit t)
|
||||
(match-beginning 0))))
|
||||
(and (re-search-forward org-outline-regexp-bol limit t)
|
||||
(org-looking-at-p "END[ \t]*$")
|
||||
(line-beginning-position))))
|
||||
(contents-begin (progn (forward-line)
|
||||
(and task-end (< (point) task-end) (point))))
|
||||
(hidden (and contents-begin (org-invisible-p2)))
|
||||
|
|
|
@ -1021,55 +1021,58 @@ Some other text
|
|||
"Test `inlinetask' parser."
|
||||
(when (featurep 'org-inlinetask)
|
||||
(let ((org-inlinetask-min-level 15))
|
||||
;; 1. Regular inlinetask.
|
||||
;; Regular inlinetask.
|
||||
(should
|
||||
(eq 'inlinetask
|
||||
(org-test-with-temp-text
|
||||
"*************** Task\nTest\n*************** END"
|
||||
(org-element-type (org-element-at-point)))))
|
||||
;; Degenerate inlinetask.
|
||||
(should
|
||||
(eq 'inlinetask
|
||||
(org-test-with-temp-text "*************** Task"
|
||||
(org-element-type (org-element-at-point)))))
|
||||
;; Mixed inlinetasks.
|
||||
(should-not
|
||||
(org-test-with-temp-text
|
||||
"*************** Task\nTest\n*************** END"
|
||||
(org-element-map (org-element-parse-buffer) 'inlinetask 'identity)))
|
||||
;; 2. Degenerate inlinetask.
|
||||
(should
|
||||
(org-test-with-temp-text "*************** Task"
|
||||
(org-element-map (org-element-parse-buffer) 'inlinetask 'identity)))
|
||||
"
|
||||
*************** Task
|
||||
*************** Task2
|
||||
Contents
|
||||
*************** END"
|
||||
(forward-line)
|
||||
(goto-char (org-element-property :end (org-element-at-point)))
|
||||
(eobp)))
|
||||
;; TODO keyword.
|
||||
(should
|
||||
(equal
|
||||
"TODO"
|
||||
(let ((org-todo-keywords '((sequence "TODO" "DONE"))))
|
||||
(org-test-with-temp-text "*************** TODO Task"
|
||||
(org-element-property
|
||||
:todo-keyword
|
||||
(org-element-map (org-element-parse-buffer) 'inlinetask
|
||||
'identity nil t))))))
|
||||
(org-element-property :todo-keyword (org-element-at-point))))))
|
||||
;; Planning info.
|
||||
(should
|
||||
(equal
|
||||
"2012-03-29 thu."
|
||||
(org-test-with-temp-text "
|
||||
(org-test-with-temp-text "
|
||||
*************** Task
|
||||
DEADLINE: <2012-03-29 thu.>"
|
||||
(org-element-property
|
||||
:deadline
|
||||
(org-element-map (org-element-parse-buffer) 'inlinetask 'identity nil t)))))
|
||||
(forward-line)
|
||||
(org-element-property :deadline (org-element-at-point))))
|
||||
;; Priority.
|
||||
(should
|
||||
(equal
|
||||
(eq
|
||||
?A
|
||||
(org-test-with-temp-text "
|
||||
*************** [#A] Task"
|
||||
(org-element-property
|
||||
:priority
|
||||
(org-element-map
|
||||
(org-element-parse-buffer) 'inlinetask 'identity nil t)))))
|
||||
(forward-line)
|
||||
(org-element-property :priority (org-element-at-point)))))
|
||||
;; Tags.
|
||||
(should
|
||||
(equal
|
||||
'("test")
|
||||
(org-test-with-temp-text "
|
||||
*************** Task :test:"
|
||||
(org-element-property
|
||||
:tags
|
||||
(org-element-map
|
||||
(org-element-parse-buffer) 'inlinetask 'identity nil t)))))
|
||||
(forward-line)
|
||||
(org-element-property :tags (org-element-at-point)))))
|
||||
;; Regular properties are accessed through upper case keywords.
|
||||
(should
|
||||
(org-test-with-temp-text "
|
||||
|
|
Loading…
Reference in a new issue