Function: org-num--current-numbering

org-num--current-numbering is a byte-compiled function defined in org-num.el.gz.

Signature

(org-num--current-numbering LEVEL SKIP)

Documentation

Return numbering for current headline.

LEVEL is headline's level, and SKIP its skip value. Return nil if headline should be skipped.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-num.el.gz
(defun org-num--current-numbering (level skip)
  "Return numbering for current headline.
LEVEL is headline's level, and SKIP its skip value.  Return nil
if headline should be skipped."
  (cond
   ;; Skipped by inheritance.
   ((and org-num--skip-level (> level org-num--skip-level)) nil)
   ;; Skipped by a non-nil skip value; set `org-num--skip-level'
   ;; to skip the whole sub-tree later on.
   (skip (setq org-num--skip-level level) nil)
   (t
    (setq org-num--skip-level nil)
    ;; Compute next numbering, and update `org-num--numbering'.
    (let ((last-level (length org-num--numbering)))
      (setq org-num--numbering
            (cond
             ;; First headline : nil => (1), or (1 0)...
             ((null org-num--numbering) (cons 1 (make-list (1- level) 0)))
             ;; Sibling: (1 1) => (2 1).
             ((= level last-level)
              (cons (1+ (car org-num--numbering)) (cdr org-num--numbering)))
             ;; Parent: (1 1 1) => (2 1), or (2).
             ((< level last-level)
              (let ((suffix (nthcdr (- last-level level) org-num--numbering)))
                (cons (1+ (car suffix)) (cdr suffix))))
             ;; Child: (1 1) => (1 1 1), or (1 0 1 1)...
             (t
              (append (cons 1 (make-list (- level last-level 1) 0))
                      org-num--numbering))))))))