Function: web-mode-attr-scan
web-mode-attr-scan is a natively compiled function defined in
web-mode.el.
Signature
(web-mode-attr-scan POS STATE CHAR NAME-BEG NAME-END VAL-BEG ATTR-FLAGS EQUAL-OFFSET TAG-FLAGS)
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-attr-scan (pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)
;;(message "point(%S) state(%S) c(%c) name-beg(%S) name-end(%S) val-beg(%S) attr-flags(%S) equal-offset(%S) tag-flags(%S)" pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)
(when (null attr-flags) (setq attr-flags 0))
(when (and name-beg name-end web-mode-engine-attr-regexp)
(let (name)
(setq name (buffer-substring-no-properties name-beg (1+ name-end)))
(cond
((string-match-p "^data[-]" name)
(setq attr-flags (logior attr-flags 1))
)
((string-match-p web-mode-engine-attr-regexp name)
(setq attr-flags (logior attr-flags 2))
)
)
) ;name
)
;;(message "%S" name)
(cond
((null name-beg)
0)
((or (and (= state 8) (not (eq ?\" char)))
(and (= state 7) (not (eq ?\' char))))
(put-text-property name-beg (1+ name-beg) 'tag-attr-beg attr-flags)
(put-text-property name-beg val-beg 'tag-attr t)
(put-text-property (1- val-beg) val-beg 'tag-attr-end equal-offset)
1)
((and (member state '(4 5)) (null val-beg))
(put-text-property name-beg (1+ name-beg) 'tag-attr-beg attr-flags)
(put-text-property name-beg (+ name-beg equal-offset 1) 'tag-attr t)
(put-text-property (+ name-beg equal-offset) (+ name-beg equal-offset 1) 'tag-attr-end equal-offset)
1)
(t
(let (val-end)
(if (null val-beg)
(setq val-end name-end)
(setq val-end pos)
(cond
((null char)
(setq val-end (1- val-end)))
((member char '(?\s ?\n ?\/))
(setq val-end (1- val-end)))
((eq char ?\>)
(if (= (logand tag-flags 8) 8)
(progn
;;(message "tag-flags=%S %S" tag-flags (logand tag-flags 8))
(setq val-end (- val-end 2)))
(setq val-end (- val-end 1)))
;; (message "val-end=%S" val-end)
)
)
)
(put-text-property name-beg (1+ name-beg) 'tag-attr-beg attr-flags)
(put-text-property name-beg (1+ val-end) 'tag-attr t)
(put-text-property val-end (1+ val-end) 'tag-attr-end equal-offset)
) ;let
1) ;t
) ;cond
)