From 62ca2499a8d645c78e9ae8b4e233577b7ec5b0ae Mon Sep 17 00:00:00 2001 From: Randy Taylor Date: Wed, 8 Feb 2023 21:43:04 -0500 Subject: [PATCH] Fix rust-ts-mode type and module highlighting * lisp/progmodes/rust-ts-mode.el (rust-ts-mode--font-lock-settings): Add new 'module' feature and simplify 'type' feature. (rust-ts-mode): Add 'module' feature. --- lisp/progmodes/rust-ts-mode.el | 66 +++++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 16 deletions(-) diff --git a/lisp/progmodes/rust-ts-mode.el b/lisp/progmodes/rust-ts-mode.el index 5c71a8ad461..6ab786c6c80 100644 --- a/lisp/progmodes/rust-ts-mode.el +++ b/lisp/progmodes/rust-ts-mode.el @@ -204,6 +204,41 @@ rust-ts-mode--font-lock-settings (raw_string_literal) (string_literal)] @font-lock-string-face) + :language 'rust + :feature 'module + `((scoped_identifier path: (crate) + name: (identifier) @font-lock-constant-face) + + (scoped_use_list path: (identifier) @font-lock-constant-face) + (scoped_use_list path: (scoped_identifier + name: (identifier) @font-lock-constant-face)) + + ((use_declaration + argument: (scoped_identifier + path: (_) @font-lock-constant-face + name: (identifier) @font-lock-type-face)) + (:match "^[A-Z]" @font-lock-type-face)) + (use_declaration + argument: (scoped_identifier + name: (identifier) @font-lock-constant-face)) + + (use_declaration + argument: (scoped_identifier + path: (scoped_identifier + path: (_) @font-lock-constant-face + name: (identifier) @font-lock-constant-face) + name: (identifier) @font-lock-constant-face)) + + (use_declaration + argument: (scoped_use_list + path: (scoped_identifier + path: (_) @font-lock-constant-face + name: (identifier) @font-lock-constant-face))) + + ((use_list (identifier) @font-lock-type-face) + (:match "^[A-Z]" @font-lock-type-face)) + (use_list (identifier) @font-lock-constant-face)) + :language 'rust :feature 'type `((enum_variant name: (identifier) @font-lock-type-face) @@ -216,23 +251,21 @@ rust-ts-mode--font-lock-settings (mod_item name: (identifier) @font-lock-constant-face) (primitive_type) @font-lock-type-face (type_identifier) @font-lock-type-face - ((scoped_identifier name: (identifier) @font-lock-type-face) - (:match "^[A-Z]" @font-lock-type-face)) ((scoped_identifier path: (identifier) @font-lock-type-face) - (:match "^[A-Z]" @font-lock-type-face)) - ((scoped_identifier - (scoped_identifier - path: (identifier) @font-lock-type-face)) - (:match "^[A-Z]" @font-lock-type-face)) - ((scoped_identifier - path: [(identifier) @font-lock-type-face - (scoped_identifier - name: (identifier) @font-lock-type-face)]) - (:match "^[A-Z]" @font-lock-type-face)) - (scoped_type_identifier path: (identifier) @font-lock-type-face) + (:match + "^\\(u8\\|u16\\|u32\\|u64\\|u128\\|usize\\|i8\\|i16\\|i32\\|i64\\|i128\\|isize\\|char\\|str\\)$" + @font-lock-type-face)) + (scoped_identifier path: (_) @font-lock-constant-face + name: (identifier) @font-lock-type-face) + (scoped_identifier path: (scoped_identifier + name: (identifier) @font-lock-constant-face)) + (scoped_type_identifier path: (_) @font-lock-constant-face) + (scoped_type_identifier + path: (scoped_identifier + path: (_) @font-lock-constant-face + name: (identifier) @font-lock-constant-face)) (type_identifier) @font-lock-type-face - (use_as_clause alias: (identifier) @font-lock-type-face) - (use_list (identifier) @font-lock-type-face)) + (use_as_clause alias: (identifier) @font-lock-type-face)) :language 'rust :feature 'property @@ -344,7 +377,8 @@ rust-ts-mode ( keyword string) ( attribute builtin constant escape-sequence number type) - ( bracket delimiter error function operator property variable))) + ( bracket delimiter error function module + operator property variable))) ;; Imenu. (setq-local treesit-simple-imenu-settings -- 2.39.1