(treesit-font-lock-rules
:language 'javascript
:override t
- :feature 'minimal
- `(
- ((identifier) @font-lock-constant-face
+ :feature 'comment
+ `((comment) @font-lock-comment-face)
+ :language 'javascript
+ :override t
+ :feature 'constant
+ `(((identifier) @font-lock-constant-face
(:match "^[A-Z_][A-Z_\\d]*$" @font-lock-constant-face))
- [(this) (super)] @font-lock-keyword-face
-
[(true) (false) (null)] @font-lock-constant-face
- (regex pattern: (regex_pattern)) @font-lock-string-face
- (number) @font-lock-constant-face
-
+ (number) @font-lock-constant-face)
+ :language 'javascript
+ :override t
+ :feature 'keyword
+ `([,@js--treesit-keywords] @font-lock-keyword-face
+ [(this) (super)] @font-lock-keyword-face)
+ :language 'javascript
+ :override t
+ :feature 'string
+ `((regex pattern: (regex_pattern)) @font-lock-string-face
(string) @font-lock-string-face
- (comment) @font-lock-comment-face
- [,@js--treesit-keywords] @font-lock-keyword-face
-
(template_string) @js--fontify-template-string
- (template_substitution ["${" "}"] @font-lock-constant-face))
+ (template_substitution ["${" "}"] @font-lock-builtin-face))
:language 'javascript
:override t
- :feature 'moderate
- `(
- (function
+ :feature 'declaration
+ `((function
name: (identifier) @font-lock-function-name-face)
(class_declaration
(variable_declarator
name: (identifier) @font-lock-variable-name-face)
- (new_expression
- constructor: (identifier) @font-lock-type-face)
-
- (for_in_statement
- left: (identifier) @font-lock-variable-name-face)
-
- (arrow_function
- parameter: (identifier) @font-lock-variable-name-face))
- :language 'javascript
- :override t
- :feature 'full
- `(
(variable_declarator
name: (identifier) @font-lock-function-name-face
value: [(function) (arrow_function)])
(identifier)
(identifier)
@font-lock-function-name-face)
- value: (array (number) (function)))
+ value: (array (number) (function))))
+ :language 'javascript
+ :override t
+ :feature 'identifier
+ `((new_expression
+ constructor: (identifier) @font-lock-type-face)
- (assignment_expression
+ (for_in_statement
+ left: (identifier) @font-lock-variable-name-face)
+
+ (arrow_function
+ parameter: (identifier) @font-lock-variable-name-face))
+ :language 'javascript
+ :override t
+ :feature 'expression
+ `((assignment_expression
left: [(identifier) @font-lock-function-name-face
(member_expression property: (property_identifier)
@font-lock-function-name-face)]
(assignment_expression
left: [(identifier) @font-lock-variable-name-face
(member_expression
- property: (property_identifier) @font-lock-variable-name-face)])
-
- (pair key: (property_identifier) @font-lock-variable-name-face)
+ property: (property_identifier) @font-lock-variable-name-face)]))
+ :language 'javascript
+ :override t
+ :feature 'property
+ `((pair key: (property_identifier) @font-lock-variable-name-face)
(pair value: (identifier) @font-lock-variable-name-face)
((shorthand_property_identifier) @font-lock-variable-name-face)
- (pair_pattern key: (property_identifier) @font-lock-variable-name-face)
-
- ((shorthand_property_identifier_pattern) @font-lock-variable-name-face)
-
- (array_pattern (identifier) @font-lock-variable-name-face)
-
+ ((shorthand_property_identifier_pattern) @font-lock-variable-name-face))
+ :language 'javascript
+ :override t
+ :feature 'pattern
+ `((pair_pattern key: (property_identifier) @font-lock-variable-name-face)
+ (array_pattern (identifier) @font-lock-variable-name-face))
+ :language 'javascript
+ :override t
+ :feature 'jsx
+ `(
(jsx_opening_element
[(nested_identifier (identifier)) (identifier)]
@font-lock-function-name-face)
"lexical_declaration")))
;; Fontification.
(setq-local treesit-font-lock-settings js--treesit-font-lock-settings)
- (setq-local treesit-font-lock-feature-list '((minimal) (moderate) (full)))
+ (setq-local treesit-font-lock-feature-list
+ '((comment declaration)
+ (string keyword identifier expression constant)
+ (property pattern jsx )))
;; Imenu
(setq-local imenu-create-index-function
#'js--treesit-imenu)
(add-hook 'syntax-propertize-extend-region-functions
#'syntax-propertize-multiline 'append 'local)
(add-hook 'syntax-propertize-extend-region-functions
- #'js--syntax-propertize-extend-region 'append 'local)
- )))
+ #'js--syntax-propertize-extend-region 'append 'local))))
(defvar js-json--treesit-font-lock-settings
(treesit-font-lock-rules
((node-is ")") parent-bol 0)
((node-is "]") parent-bol 0)
((node-is ">") parent-bol 0)
- ((node-is ".")
- parent-bol ,ts-mode-indent-offset)
((parent-is "ternary_expression")
parent-bol ,ts-mode-indent-offset)
((parent-is "member_expression")
(treesit-font-lock-rules
:language 'tsx
:override t
- :feature 'minimal
- `(
- ((identifier) @font-lock-constant-face
+ :feature 'comment
+ `((comment) @font-lock-comment-face)
+ :language 'tsx
+ :override t
+ :feature 'constant
+ `(((identifier) @font-lock-constant-face
(:match "^[A-Z_][A-Z_\\d]*$" @font-lock-constant-face))
- [,@ts-mode--keywords] @font-lock-keyword-face
- [(this) (super)] @font-lock-keyword-face
-
[(true) (false) (null)] @font-lock-constant-face
- (regex pattern: (regex_pattern)) @font-lock-string-face
- (number) @font-lock-constant-face
-
+ (number) @font-lock-constant-face)
+ :language 'tsx
+ :override t
+ :feature 'keyword
+ `([,@ts-mode--keywords] @font-lock-keyword-face
+ [(this) (super)] @font-lock-keyword-face)
+ :language 'tsx
+ :override t
+ :feature 'string
+ `((regex pattern: (regex_pattern)) @font-lock-string-face
(string) @font-lock-string-face
-
(template_string) @js--fontify-template-string
- (template_substitution ["${" "}"] @font-lock-builtin-face)
-
- (comment) @font-lock-comment-face)
+ (template_substitution ["${" "}"] @font-lock-builtin-face))
:language 'tsx
:override t
- :feature 'moderate
- '(
- (nested_type_identifier
- module: (identifier) @font-lock-type-face)
-
- (type_identifier) @font-lock-type-face
-
- (predefined_type) @font-lock-type-face
-
- (new_expression
- constructor: (identifier) @font-lock-type-face)
-
- (function
+ :feature 'declaration
+ `((function
name: (identifier) @font-lock-function-name-face)
(function_declaration
(enum_declaration (identifier) @font-lock-type-face)
+ (arrow_function
+ parameter: (identifier) @font-lock-variable-name-face)
+
+ (variable_declarator
+ name: (identifier) @font-lock-function-name-face
+ value: [(function) (arrow_function)])
+
+ (variable_declarator
+ name: (array_pattern
+ (identifier)
+ (identifier) @font-lock-function-name-face)
+ value: (array (number) (function))))
+ :language 'tsx
+ :override t
+ :feature 'identifier
+ `((nested_type_identifier
+ module: (identifier) @font-lock-type-face)
+
+ (type_identifier) @font-lock-type-face
+
+ (predefined_type) @font-lock-type-face
+
+ (new_expression
+ constructor: (identifier) @font-lock-type-face)
+
(enum_body (property_identifier) @font-lock-type-face)
(enum_assignment name: (property_identifier) @font-lock-type-face)
left: (identifier) @font-lock-variable-name-face)
(arrow_function
- parameter: (identifier) @font-lock-variable-name-face))
+ parameters:
+ [(_ (identifier) @font-lock-variable-name-face)
+ (_ (_ (identifier) @font-lock-variable-name-face))
+ (_ (_ (_ (identifier) @font-lock-variable-name-face)))]))
:language 'tsx
:override t
- :feature 'full
- '(
- (variable_declarator
- name: (identifier) @font-lock-function-name-face
- value: [(function) (arrow_function)])
-
- (variable_declarator
- name: (array_pattern
- (identifier)
- (identifier) @font-lock-function-name-face)
- value: (array (number) (function)))
-
- (assignment_expression
+ :feature 'expression
+ '((assignment_expression
left: [(identifier) @font-lock-function-name-face
(member_expression
property: (property_identifier) @font-lock-function-name-face)]
function:
[(identifier) @font-lock-function-name-face
(member_expression
- property: (property_identifier) @font-lock-function-name-face)])
-
- (arrow_function
- parameters:
- [(_ (identifier) @font-lock-variable-name-face)
- (_ (_ (identifier) @font-lock-variable-name-face))
- (_ (_ (_ (identifier) @font-lock-variable-name-face)))])
-
- (pair key: (property_identifier) @font-lock-variable-name-face)
+ property: (property_identifier) @font-lock-function-name-face)]))
+ :language 'tsx
+ :override t
+ :feature 'property
+ `((pair key: (property_identifier) @font-lock-variable-name-face)
(pair value: (identifier) @font-lock-variable-name-face)
((shorthand_property_identifier) @font-lock-variable-name-face)
- (pair_pattern
- key: (property_identifier) @font-lock-variable-name-face)
-
((shorthand_property_identifier_pattern)
- @font-lock-variable-name-face)
-
- (array_pattern (identifier) @font-lock-variable-name-face)
+ @font-lock-variable-name-face))
+ :language 'tsx
+ :override t
+ :feature 'pattern
+ `((pair_pattern
+ key: (property_identifier) @font-lock-variable-name-face)
- (jsx_opening_element
+ (array_pattern (identifier) @font-lock-variable-name-face))
+ :language 'tsx
+ :override t
+ :feature 'jsx
+ `((jsx_opening_element
[(nested_identifier (identifier)) (identifier)]
@font-lock-function-name-face)
"lexical_declaration")))
;; Font-lock.
(setq-local treesit-font-lock-settings ts-mode--font-lock-settings)
- (setq-local treesit-font-lock-feature-list '((minimal) (moderate) (full)))
+ (setq-local treesit-font-lock-feature-list
+ '((comment declaration)
+ (string keyword identifier expression constant)
+ (property pattern jsx)))
;; Imenu.
(setq-local imenu-create-index-function #'js--treesit-imenu)
;; Which-func (use imenu).