Function: js-syntax-propertize
js-syntax-propertize is a byte-compiled function defined in js.el.gz.
Signature
(js-syntax-propertize START END)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/js.el.gz
(defun js-syntax-propertize (start end)
;; JavaScript allows immediate regular expression objects, written /.../.
(goto-char start)
(if js-jsx-syntax (remove-text-properties start end js-jsx--text-properties))
(js-syntax-propertize-regexp end)
(funcall
(syntax-propertize-rules
;; Distinguish /-division from /-regexp chars (and from /-comment-starter).
;; FIXME: Allow regexps after infix ops like + ...
;; https://developer.mozilla.org/en/JavaScript/Reference/Operators
;; We can probably just add +, -, <, >, %, ^, ~, ?, : at which
;; point I think only * and / would be missing which could also be added,
;; but need care to avoid affecting the // and */ comment markers.
("\\(?:^\\|[=([{,:;|&!]\\|\\_<return\\_>\\)\\(?:[ \t]\\)*\\(/\\)[^/*]"
(1 (ignore
(forward-char -1)
(when (or (not (memq (char-after (match-beginning 0)) '(?\s ?\t)))
;; If the / is at the beginning of line, we have to check
;; the end of the previous text.
(save-excursion
(goto-char (match-beginning 0))
(forward-comment (- (point)))
(memq (char-before)
(eval-when-compile (append "=({[,:;" '(nil))))))
(put-text-property (match-beginning 1) (match-end 1)
'syntax-table (string-to-syntax "\"/"))
(js-syntax-propertize-regexp end)))))
("\\`\\(#\\)!" (1 "< b"))
("<" (0 (ignore
(when js-jsx-syntax
;; Not inside a comment or string.
(unless (nth 8 (save-excursion (syntax-ppss (match-beginning 0))))
(js-jsx--syntax-propertize-tag end)))))))
(point) end))