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

View File

@ -2209,7 +2209,12 @@ Outside list"
(should
(equal (org-test-parse-and-interpret
"* 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 ()
"Test inlinetask interpretation."