Function: web-mode-fontify-block
web-mode-fontify-block is a natively compiled function defined in
web-mode.el.
Signature
(web-mode-fontify-block REG-BEG REG-END)
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-fontify-block (reg-beg reg-end)
(when web-mode-trace
(message "fontify-block: reg-beg(%S) reg-end(%S) engine(%S) keywords(%S)"
reg-beg reg-end web-mode-engine (not (null web-mode-engine-font-lock-keywords))))
(let (sub1 sub2 sub3 continue char keywords token-type face beg end (buffer (current-buffer)))
;; NOTE: required for blocks inside tag attrs
;; NOTE: ajout de face dans la liste pour sucharger la couleur définie par
;; un prealable web-mode-fontity-part (2022-12-25 #1230)
(remove-list-of-text-properties reg-beg reg-end '(font-lock-face face))
;;(message "reg-beg=%S reg-end=%S" reg-beg reg-end)
(goto-char reg-beg)
(when (null web-mode-engine-font-lock-keywords)
(setq sub1 (buffer-substring-no-properties
reg-beg (+ reg-beg 1))
sub2 (buffer-substring-no-properties
reg-beg (+ reg-beg 2))
sub3 (buffer-substring-no-properties
reg-beg (+ reg-beg (if (>= (point-max) (+ reg-beg 3)) 3 2))))
)
(cond
((and (get-text-property reg-beg 'block-beg)
(eq (get-text-property reg-beg 'block-token) 'comment))
(put-text-property reg-beg reg-end 'font-lock-face 'web-mode-comment-face)
) ;comment block
(web-mode-engine-font-lock-keywords
(setq keywords web-mode-engine-font-lock-keywords))
((string= web-mode-engine "django")
(cond
((string= sub2 "{{")
(setq keywords web-mode-django-expr-font-lock-keywords))
((string= sub2 "{%")
(setq keywords web-mode-django-code-font-lock-keywords))
((string= sub1 "#")
(setq keywords web-mode-django-code-font-lock-keywords))
)) ;django
((string= web-mode-engine "mako")
(cond
((member sub3 '("<% " "<%\n" "<%!"))
(setq keywords web-mode-mako-block-font-lock-keywords))
((eq (aref sub2 0) ?\%)
(setq keywords web-mode-mako-block-font-lock-keywords))
((member sub2 '("<%" "</"))
(setq keywords web-mode-mako-tag-font-lock-keywords))
((member sub2 '("${"))
(setq keywords web-mode-uel-font-lock-keywords))
)) ;mako
((string= web-mode-engine "mason")
;;(message "%S %S" sub2 sub3)
(cond
((member sub3 '("<% " "<%\n" "<&|"))
(setq keywords web-mode-mason-code-font-lock-keywords))
((eq (aref sub2 0) ?\%)
(setq keywords web-mode-mason-code-font-lock-keywords))
((and (or (string= sub2 "<%") (string= sub3 "</%"))
(not (member sub3 '("<%c" "<%i" "<%p"))))
(setq keywords web-mode-mason-block-font-lock-keywords))
(t
(setq keywords web-mode-mason-code-font-lock-keywords))
)) ;mason
((string= web-mode-engine "jsp")
(cond
((string= sub3 "<%@")
(setq keywords web-mode-directive-font-lock-keywords))
((member sub2 '("${" "#{"))
(setq keywords web-mode-uel-font-lock-keywords))
((string= sub2 "<%")
(setq keywords web-mode-jsp-font-lock-keywords))
)) ;jsp
((string= web-mode-engine "asp")
(cond
((or (string= sub2 "<%")
(not (string= sub1 "<")))
(setq keywords web-mode-asp-font-lock-keywords))
(t
(setq keywords web-mode-engine-tag-font-lock-keywords))
)) ;asp
((string= web-mode-engine "clip")
(setq keywords web-mode-engine-tag-font-lock-keywords)
) ;clip
((string= web-mode-engine "perl")
(setq keywords web-mode-engine-tag-font-lock-keywords)
) ;perl
((string= web-mode-engine "aspx")
(cond
((string= sub3 "<%@")
(setq keywords web-mode-directive-font-lock-keywords))
((string= sub3 "<%$")
(setq keywords web-mode-expression-font-lock-keywords))
(t
(setq keywords web-mode-aspx-font-lock-keywords))
)) ;aspx
((string= web-mode-engine "freemarker")
(cond
((member sub2 '("${" "#{"))
(setq keywords web-mode-uel-font-lock-keywords))
((or (member sub2 '("<@" "[@" "<#" "[#"))
(member sub3 '("</@" "[/@" "</#" "[/#")))
(setq keywords (if (eq ?\[ (aref sub2 0))
web-mode-freemarker-square-font-lock-keywords
web-mode-freemarker-font-lock-keywords)))
(t
(setq keywords web-mode-engine-tag-font-lock-keywords))
)) ;freemarker
) ;cond
(when keywords
(web-mode-fontify-region reg-beg reg-end keywords)
(setq continue t)
(setq end reg-beg)
(while continue
(if (get-text-property end 'block-token)
(setq beg end)
(setq beg (next-single-property-change end 'block-token buffer reg-end)))
(setq end nil)
(when beg (setq char (char-after beg)))
(if (and beg (< beg reg-end))
(progn
(setq token-type (get-text-property beg 'block-token))
(setq face (cond
((eq token-type 'string) 'web-mode-block-string-face)
((eq token-type 'comment) 'web-mode-block-comment-face)
((eq token-type 'symbol) 'web-mode-symbol-face)
(t 'web-mode-block-delimiter-face)))
(setq end (next-single-property-change beg 'block-token buffer reg-end))
;; (message "end=%S" end)
(if (and end (<= end reg-end))
(progn
;;(message "%S > %S face(%S)" beg end face)
(remove-list-of-text-properties beg end '(face))
(put-text-property beg end 'font-lock-face face)
)
(setq continue nil
end nil)
) ;if end
) ;progn beg
(setq continue nil
end nil)
) ;if beg
(when (and beg end)
(save-match-data
(when (and web-mode-enable-heredoc-fontification
(eq char ?\<)
(> (- end beg) 8)
(string-match-p "JS\\|JAVASCRIPT\\|HTM\\|CSS" (buffer-substring-no-properties beg end)))
(setq keywords
(cond
((string-match-p "H" (buffer-substring-no-properties beg (+ beg 8)))
web-mode-html-font-lock-keywords)
(t
web-mode-javascript-font-lock-keywords)
))
(web-mode-fontify-region beg end keywords)
)
) ;save-match-data
(when (and web-mode-enable-string-interpolation
(member char '(?\" ?\<))
(member web-mode-engine '("php" "erb"))
(> (- end beg) 4))
(web-mode-interpolate-block-string beg end)
) ;when
(when (and web-mode-enable-comment-interpolation
(eq token-type 'comment)
(> (- end beg) 3))
(web-mode-interpolate-comment beg end t)
) ;when
(when (and web-mode-enable-comment-annotation
(eq token-type 'comment)
(> (- end beg) 3))
(web-mode-annotate-comment beg end)
) ;when
(when (and web-mode-enable-sql-detection
(eq token-type 'string)
(> (- end beg) 6)
(web-mode-looking-at-p (concat "\\(.\\|<<<[[:alnum:]]+\\)[ \n]*" web-mode-sql-queries) beg)
)
(web-mode-interpolate-sql-string beg end)
) ;when
) ;when beg end
) ;while continue
) ;when keywords
(when (and (member web-mode-engine '("mako"))
(> (- reg-end reg-beg) 12)
(eq ?\< (char-after reg-beg)))
(web-mode-interpolate-block-tag reg-beg reg-end))
(when web-mode-enable-block-face
(font-lock-append-text-property reg-beg reg-end 'face 'web-mode-block-face))
))