forked from mirrors/org-mode
org: Improved consistency + tests
* lisp/org.el (org-get-valid-level): The function now returns 1 for parameters level=0, change=1 and `org-odd-levels-only'=t. Before it returned 3.
This commit is contained in:
parent
738d3b4def
commit
69b22b6590
11
lisp/org.el
11
lisp/org.el
|
@ -8262,13 +8262,14 @@ time to headlines when structure editing, based on the value of
|
||||||
(if org-odd-levels-only 2 1))
|
(if org-odd-levels-only 2 1))
|
||||||
|
|
||||||
(defun org-get-valid-level (level &optional change)
|
(defun org-get-valid-level (level &optional change)
|
||||||
"Rectify a level change under the influence of `org-odd-levels-only'
|
"Rectify a level change under the influence of `org-odd-levels-only'.
|
||||||
LEVEL is a current level, CHANGE is by how much the level should be
|
LEVEL is a current level, CHANGE is by how much the level should
|
||||||
modified. Even if CHANGE is nil, LEVEL may be returned modified because
|
be modified. Even if CHANGE is nil, LEVEL may be returned
|
||||||
even level numbers will become the next higher odd number."
|
modified because even level numbers will become the next higher
|
||||||
|
odd number. Returns values greater than 0."
|
||||||
(if org-odd-levels-only
|
(if org-odd-levels-only
|
||||||
(cond ((or (not change) (= 0 change)) (1+ (* 2 (/ level 2))))
|
(cond ((or (not change) (= 0 change)) (1+ (* 2 (/ level 2))))
|
||||||
((> change 0) (1+ (* 2 (/ (+ level (* 2 change)) 2))))
|
((> change 0) (1+ (* 2 (/ (+ (1- level) (* 2 change)) 2))))
|
||||||
((< change 0) (max 1 (1+ (* 2 (/ (+ level (* 2 change)) 2))))))
|
((< change 0) (max 1 (1+ (* 2 (/ (+ level (* 2 change)) 2))))))
|
||||||
(max 1 (+ level (or change 0)))))
|
(max 1 (+ level (or change 0)))))
|
||||||
|
|
||||||
|
|
|
@ -3786,6 +3786,35 @@ Text.
|
||||||
(forward-line)
|
(forward-line)
|
||||||
(org-get-indentation)))))
|
(org-get-indentation)))))
|
||||||
|
|
||||||
|
(ert-deftest test-org/org-get-valid-level ()
|
||||||
|
"Test function `org-get-valid-level' specifications."
|
||||||
|
(let ((org-odd-levels-only nil))
|
||||||
|
(should (equal 1 (org-get-valid-level 0 0)))
|
||||||
|
(should (equal 1 (org-get-valid-level 0 1)))
|
||||||
|
(should (equal 2 (org-get-valid-level 0 2)))
|
||||||
|
(should (equal 3 (org-get-valid-level 0 3)))
|
||||||
|
(should (equal 1 (org-get-valid-level 1 0)))
|
||||||
|
(should (equal 2 (org-get-valid-level 1 1)))
|
||||||
|
(should (equal 23 (org-get-valid-level 1 22)))
|
||||||
|
(should (equal 1 (org-get-valid-level 1 -1)))
|
||||||
|
(should (equal 1 (org-get-valid-level 2 -1))))
|
||||||
|
(let ((org-odd-levels-only t))
|
||||||
|
(should (equal 1 (org-get-valid-level 0 0)))
|
||||||
|
(should (equal 1 (org-get-valid-level 0 1)))
|
||||||
|
(should (equal 3 (org-get-valid-level 0 2)))
|
||||||
|
(should (equal 5 (org-get-valid-level 0 3)))
|
||||||
|
(should (equal 1 (org-get-valid-level 1 0)))
|
||||||
|
(should (equal 3 (org-get-valid-level 1 1)))
|
||||||
|
(should (equal 3 (org-get-valid-level 2 1)))
|
||||||
|
(should (equal 5 (org-get-valid-level 3 1)))
|
||||||
|
(should (equal 5 (org-get-valid-level 4 1)))
|
||||||
|
(should (equal 43 (org-get-valid-level 1 21)))
|
||||||
|
(should (equal 1 (org-get-valid-level 1 -1)))
|
||||||
|
(should (equal 1 (org-get-valid-level 2 -1)))
|
||||||
|
(should (equal 1 (org-get-valid-level 3 -1)))
|
||||||
|
(should (equal 3 (org-get-valid-level 4 -1)))
|
||||||
|
(should (equal 3 (org-get-valid-level 5 -1)))))
|
||||||
|
|
||||||
|
|
||||||
;;; Planning
|
;;; Planning
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue