org-element: Interpret headlines according to `org-odd-levels-only'

* lisp/org-element.el (org-element-headline-interpreter): Take into
  consideration `org-odd-levels-only' value.  Small refactoring.

* testing/lisp/test-org-element.el (test-org-element/headline-interpreter):
  Add test.
This commit is contained in:
Nicolas Goaziou 2014-08-28 11:07:24 +02:00
parent 42271d8c43
commit 2e5b3dede1
2 changed files with 37 additions and 30 deletions

View File

@ -870,38 +870,40 @@ CONTENTS is the contents of the element."
(org-element-property :tags headline)) (org-element-property :tags headline))
(org-element-property :tags headline)))) (org-element-property :tags headline))))
(and tag-list (and tag-list
(format ":%s:" (mapconcat 'identity tag-list ":"))))) (format ":%s:" (mapconcat #'identity tag-list ":")))))
(commentedp (org-element-property :commentedp headline)) (commentedp (org-element-property :commentedp headline))
(quotedp (org-element-property :quotedp headline)) (quotedp (org-element-property :quotedp headline))
(pre-blank (or (org-element-property :pre-blank headline) 0)) (pre-blank (or (org-element-property :pre-blank headline) 0))
(heading (concat (make-string (org-reduced-level level) ?*) (heading
(and todo (concat " " todo)) (concat (make-string (if org-odd-levels-only (1- (* level 2)) level)
(and quotedp (concat " " org-quote-string)) ?*)
(and commentedp (concat " " org-comment-string)) (and todo (concat " " todo))
(and priority (and quotedp (concat " " org-quote-string))
(format " [#%s]" (char-to-string priority))) (and commentedp (concat " " org-comment-string))
(cond ((and org-footnote-section (and priority (format " [#%s]" (char-to-string priority)))
(org-element-property " "
:footnote-section-p headline)) (if (and org-footnote-section
(concat " " org-footnote-section)) (org-element-property :footnote-section-p headline))
(title (concat " " title)))))) org-footnote-section
(concat heading title))))
;; Align tags. (concat
(when tags heading
(cond ;; Align tags.
((zerop org-tags-column) (format " %s" tags)) (when tags
((< org-tags-column 0) (cond
(concat ((zerop org-tags-column) (format " %s" tags))
(make-string ((< org-tags-column 0)
(max (- (+ org-tags-column (length heading) (length tags))) 1) (concat
? ) (make-string
tags)) (max (- (+ org-tags-column (length heading) (length tags))) 1)
(t ?\s)
(concat tags))
(make-string (max (- org-tags-column (length heading)) 1) ? ) (t
tags)))) (concat
(make-string (1+ pre-blank) 10) (make-string (max (- org-tags-column (length heading)) 1) ?\s)
contents))) tags))))
(make-string (1+ pre-blank) ?\n)
contents)))
;;;; Inlinetask ;;;; Inlinetask

View File

@ -2209,7 +2209,12 @@ Outside list"
(should (should
(equal (org-test-parse-and-interpret (equal (org-test-parse-and-interpret
"* Headline\n\n\nText after two blank lines.") "* Headline\n\n\nText after two blank lines.")
"* Headline\n\n\nText after two blank lines.\n"))) "* Headline\n\n\nText after two blank lines.\n"))
;; 8. Preserve `org-odd-levels-only' state.
(should
(equal "* H\n*** H2\n"
(let ((org-odd-levels-only t))
(org-test-parse-and-interpret "* H\n*** H2")))))
(ert-deftest test-org-element/inlinetask-interpreter () (ert-deftest test-org-element/inlinetask-interpreter ()
"Test inlinetask interpretation." "Test inlinetask interpretation."