Function: markdown-calculate-list-levels
markdown-calculate-list-levels is a byte-compiled function defined in
markdown-mode.el.
Signature
(markdown-calculate-list-levels)
Documentation
Calculate list levels at point.
Return a list of the form (n1 n2 n3 ...) where n1 is the
indentation of the deepest nested list item in the branch of
the list at the point, n2 is the indentation of the parent
list item, and so on. The depth of the list item is therefore
the length of the returned list. If the point is not at or
immediately after a list item, return nil.
Source Code
;; Defined in ~/.emacs.d/elpa/markdown-mode-20260321.143/markdown-mode.el
(defun markdown-calculate-list-levels ()
"Calculate list levels at point.
Return a list of the form (n1 n2 n3 ...) where n1 is the
indentation of the deepest nested list item in the branch of
the list at the point, n2 is the indentation of the parent
list item, and so on. The depth of the list item is therefore
the length of the returned list. If the point is not at or
immediately after a list item, return nil."
(save-excursion
(let ((first (point)) levels indent pre-regexp)
;; Find a baseline point with zero list indentation
(markdown-search-backward-baseline)
;; Search for all list items between baseline and LOC
(while (and (< (point) first)
(re-search-forward markdown-regex-list first t))
(setq pre-regexp (format "^\\( \\|\t\\)\\{%d\\}" (1+ (length levels))))
(beginning-of-line)
(cond
;; Make sure this is not a header or hr
((markdown-new-baseline) (setq levels nil))
;; Make sure this is not a line from a pre block
((looking-at-p pre-regexp))
;; If not, then update levels
(t
(setq indent (current-indentation))
(setq levels (markdown-update-list-levels (match-string 2)
indent levels))))
(end-of-line))
levels)))