Function: org-list-get-item-number

org-list-get-item-number is a byte-compiled function defined in org-list.el.gz.

Signature

(org-list-get-item-number ITEM STRUCT PREVS PARENTS)

Documentation

Return ITEM's sequence number.

STRUCT is the list structure. PREVS is the alist of previous items, as returned by org-list-prevs-alist. PARENTS is the alist of ancestors, as returned by org-list-parents-alist.

Return value is a list of integers. Counters have an impact on that value.

Source Code

;; Defined in /usr/src/emacs/lisp/org/org-list.el.gz
(defun org-list-get-item-number (item struct prevs parents)
  "Return ITEM's sequence number.

STRUCT is the list structure.  PREVS is the alist of previous
items, as returned by `org-list-prevs-alist'.  PARENTS is the
alist of ancestors, as returned by `org-list-parents-alist'.

Return value is a list of integers.  Counters have an impact on
that value."
  (let ((get-relative-number
	 (lambda (item struct prevs)
	   ;; Return relative sequence number of ITEM in the sub-list
	   ;; it belongs.  STRUCT is the list structure.  PREVS is
	   ;; the alist of previous items.
	   (let ((seq 0) (pos item) counter)
	     (while (and (not (setq counter (org-list-get-counter pos struct)))
			 (setq pos (org-list-get-prev-item pos struct prevs)))
	       (cl-incf seq))
	     (if (not counter) (1+ seq)
	       (cond
		((string-match "[A-Za-z]" counter)
		 (+ (- (string-to-char (upcase (match-string 0 counter))) 64)
		    seq))
		((string-match "[0-9]+" counter)
		 (+ (string-to-number (match-string 0 counter)) seq))
		(t (1+ seq))))))))
    ;; Cons each parent relative number into return value (OUT).
    (let ((out (list (funcall get-relative-number item struct prevs)))
	  (parent item))
      (while (setq parent (org-list-get-parent parent struct parents))
	(push (funcall get-relative-number parent struct prevs) out))
      ;; Return value.
      out)))