Function: web-mode-token-html-indentation
web-mode-token-html-indentation is a natively compiled function
defined in web-mode.el.
Signature
(web-mode-token-html-indentation POS)
Source Code
;; Defined in /nix/store/2qgnz1rp30nzfz6w0apx4kdm14if1bbs-emacs-packages-deps/share/emacs/site-lisp/elpa/web-mode-20260831.219/web-mode.el
(defun web-mode-token-html-indentation (pos)
(save-excursion
(let (beg (continue t) end level map offset regexp tag val void (css-beg 0))
(goto-char pos)
;;(message "pos=%S" pos)
(setq beg (web-mode-part-token-beginning-position pos))
(save-excursion
(when (and (> (- pos beg) 5)
(re-search-backward "</?[a-zA-Z0-9]+" beg t)
(string= "<style" (downcase (match-string-no-properties 0))))
(setq css-beg (point))
)
)
;;(message "beg=%S" beg)
(cond
((eq (char-after pos) ?\`)
(setq offset (web-mode-indentation-at-pos beg)))
((web-mode-looking-back "`[ \n\t]*" pos)
(setq offset (+ (web-mode-indentation-at-pos beg) web-mode-markup-indent-offset)))
((looking-at "</\\([a-zA-Z0-9]+\\)")
(setq tag (match-string-no-properties 1)
regexp (concat "</?" tag)
level -1)
(while (and continue (re-search-backward regexp beg t))
(cond
((eq (aref (match-string-no-properties 0) 1) ?\/)
(setq level (1- level)))
(t
(setq level (1+ level)))
) ;cond
(when (= level 0)
(setq continue nil
offset (current-indentation)))
) ;while
)
((> css-beg 0)
;;(message "CSS")
(cond
((member (char-after) '(?\) ?\} ?\]))
(web-mode-go (web-mode-token-opening-paren-position pos (+ css-beg 8) ""))
(setq offset (current-indentation))
)
((setq level (web-mode-bracket-level pos (+ css-beg 8)))
(setq offset (+ level web-mode-css-indent-offset))
)
(t
(setq offset (+ (web-mode-indentation-at-pos css-beg) web-mode-style-padding))
) ;t
)
)
((looking-at "[a-zA-Z-]+[ ]?=")
(re-search-backward "<[a-zA-Z]+[ ]*" beg t)
(setq offset (+ (current-column) (length (match-string-no-properties 0))))
)
((looking-at-p "/>")
(search-backward "<" beg t)
(setq offset (current-column))
)
(t
(setq regexp "</?\\([a-zA-Z0-9]+\\)")
;;(message "point=%S" (point))
(while (and continue (re-search-backward regexp beg t))
(setq tag (downcase (match-string-no-properties 1))
end nil
void nil)
(cond
((eq (aref (match-string-no-properties 0) 1) ?/)
(setq end t))
((web-mode-element-is-void tag)
(setq void t))
(t
(save-excursion
(when (and (search-forward ">" pos t) (eq (char-before (1- (point))) ?\/))
(setq void t))
) ;save-excursion
) ;t
) ;cond
(unless void
(setq val (or (lax-plist-get map tag) 0))
(setq val (if end (1- val) (1+ val)))
(setq map (lax-plist-put map tag val))
;;(message "val=%S tag=%S end=%S | %S" val tag end (plist-get map tag))
(setq continue (not (> val 0)))
) ;unless
;(message "pos=%S tag=%S val=%S end=%S void=%S" (point) tag val end void)
) ;while
(cond
((> val 0)
;;(message "point=%S" (point))
;;(goto-char (1+ beg))
;;(forward-char)
;;(re-search-forward "[[:space:]]*")
(setq offset (+ (current-indentation) web-mode-markup-indent-offset)))
(t
(setq offset (current-indentation)))
)
) ;t
) ;cond
offset)))