Function: web-mode-attr-skip
web-mode-attr-skip is a natively compiled function defined in
web-mode.el.
Signature
(web-mode-attr-skip LIMIT)
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-skip (limit)
(let ((tag-flags 0) (attr-flags 0) (continue t) (attrs 0) (brace-depth 0)
(state 0) (equal-offset 0) (go-back nil)
(is-jsx (or (string= web-mode-content-type "jsx") (eq (get-text-property (point) 'part-type) 'jsx)))
attr name-beg name-end val-beg char pos mem step escaped spaced quoted)
(while continue
(setq pos (point)
char (char-after)
mem state
;;spaced (eq char ?\s)
spaced (member char '(?\s ?\n))
step nil)
(ignore mem step) ;; Only used in debug print
(when quoted (setq quoted (1+ quoted)))
(cond
((>= pos limit)
(setq continue nil)
(setq go-back t)
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
)
((and (or (= state 0) (= state 1)) (get-text-property pos 'block-side))
)
((or (and (= state 8) (not (member char '(?\" ?\\))))
(and (= state 7) (not (member char '(?\' ?\\))))
(and (= state 9) (not (member char '(?} ?\\))))
)
(when (and (= state 9) (eq char ?\{))
(setq brace-depth (1+ brace-depth)))
)
((and (= state 9) (eq char ?\}) (> brace-depth 1))
(setq brace-depth (1- brace-depth)))
;; #1233
;;((get-text-property pos 'block-side)
;; (when (= state 2)
;; (setq name-end pos))
;; )
((and (= state 2) is-jsx (eq char ?\}) (eq attr-flags 4))
(setq name-end pos)
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
(setq state 0
attr-flags 0
equal-offset 0
name-beg nil
name-end nil
val-beg nil)
)
((or (and (= state 8) (eq ?\" char) (not escaped))
(and (= state 7) (eq ?\' char) (not escaped))
(and (= state 9) (eq ?\} char) (= brace-depth 1))
(and (= state 10) (get-text-property pos 'block-end))
)
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
(setq state 0
attr-flags 0
equal-offset 0
name-beg nil
name-end nil
val-beg nil)
)
((and (member state '(4 5)) (get-text-property pos 'block-beg))
(setq val-beg pos)
(setq state 10))
((and (member state '(4 5)) (member char '(?\' ?\" ?\{)))
(setq val-beg pos)
(setq quoted 1)
(setq state (cond ((eq ?\' char) 7)
((eq ?\" char) 8)
(t 9)))
(setq step 100)
(when (= state 9) (setq brace-depth 1))
)
((and (eq ?\= char) (member state '(2 3)))
(setq equal-offset (- pos name-beg)
name-end (1- pos))
(setq state 4)
(setq attr (buffer-substring-no-properties name-beg (1+ name-end)))
(when (and web-mode-indentless-attributes (web-mode--indentless-attribute-p (downcase attr)))
(setq attr-flags (logior attr-flags 8)))
)
((and spaced (= state 0))
(setq state 1)
)
((and (eq char ?\<) (not (member state '(7 8 9))))
(setq continue nil)
(setq go-back t)
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
)
((and (eq char ?\>) (not (member state '(7 8 9))))
(setq tag-flags (logior tag-flags 16))
(when (eq (char-before) ?\/)
(setq tag-flags (logior tag-flags 8))
)
(setq continue nil)
(when name-beg
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags))))
)
((and spaced (member state '(1 3 5)))
)
((and spaced (= state 2))
(setq state 3)
)
((and (eq char ?\/) (member state '(4 5)))
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
(setq state 1
attr-flags 0
equal-offset 0
name-beg nil
name-end nil
val-beg nil)
)
((and (eq char ?\/) (member state '(0 1)))
)
((and spaced (= state 4))
(setq state 5)
)
((and (= state 3)
(or (and (>= char 97) (<= char 122)) ;a - z
(and (>= char 65) (<= char 90)) ;A - Z
(eq char ?\-)))
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
(setq state 2
attr-flags 0
equal-offset 0
name-beg pos
name-end pos
val-beg nil)
)
((and (eq char ?\n) (not (member state '(7 8 9))))
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
(setq state 1
attr-flags 0
equal-offset 0
name-beg nil
name-end nil
val-beg nil)
)
((and (= state 6) (member char '(?\s ?\n))) ;#1150
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
(setq state 1
attr-flags 0
equal-offset 0
name-beg nil
name-end nil
val-beg nil)
)
((and quoted (= quoted 2) (member char '(?\s ?\n ?\>)))
(when (eq char ?\>)
(setq tag-flags (logior tag-flags 16))
(setq continue nil))
(setq state 6)
(setq attrs (+ attrs (web-mode-attr-scan pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)))
(setq state 1
attr-flags 0
equal-offset 0
name-beg nil
name-end nil
val-beg nil)
)
((and (not spaced) (= state 1))
(when (and is-jsx (eq char ?\{))
(setq attr-flags 4))
(setq state 2)
(setq name-beg pos
name-end pos)
)
((member state '(4 5))
(setq val-beg pos)
(setq state 6)
)
((= state 1)
(setq state 2)
)
((= state 2)
(setq name-end pos)
(when (and nil (= attr-flags 0) (member char '(?\- ?\:)))
(let (attr)
(setq attr (buffer-substring-no-properties name-beg (1+ name-end)))
(cond
((member attr '("http-equiv"))
(setq attr-flags (1- attr-flags))
)
((and (eq char ?\-) (not (string= attr "http-")))
(setq attr-flags (logior attr-flags 1)))
) ;cond
) ;let
) ;when attr-flags = 1
) ;state=2
) ;cond
;;(message "point(%S) state(%S) c(%S) name-beg(%S) name-end(%S) val-beg(%S) attr-flags(%S) equal-offset(%S)" pos state char name-beg name-end val-beg attr-flags equal-offset tag-flags)
(when (and quoted (>= quoted 2))
(setq quoted nil))
(setq escaped (eq ?\\ char))
(when (null go-back)
(forward-char))
;;(when (not (= mem state)) (message "pos=%S before=%S after=%S step=%S" pos mem state step))
) ;while
(when (> attrs 0) (setq tag-flags (logior tag-flags 1)))
tag-flags))