emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/rust-mode 32718d4b16 1/2: Highlight the (optional) type su


From: ELPA Syncer
Subject: [nongnu] elpa/rust-mode 32718d4b16 1/2: Highlight the (optional) type suffix of numbers with the type face
Date: Thu, 3 Feb 2022 04:58:31 -0500 (EST)

branch: elpa/rust-mode
commit 32718d4b166e9ee439e2b15b5e4d8e4fa783a4c5
Author: Christophe Troestler <Christophe.Troestler@umons.ac.be>
Commit: Christophe Troestler <Christophe.Troestler@umons.ac.be>

    Highlight the (optional) type suffix of numbers with the type face
---
 rust-mode-tests.el | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
 rust-mode.el       | 12 ++++++++++++
 2 files changed, 62 insertions(+)

diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index 0d9f06b46f..8e3ee45f2b 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -1304,6 +1304,56 @@ list of substrings of `STR' each followed by its face."
    '("/* " font-lock-comment-delimiter-face
      "#[foo] */" font-lock-comment-face)))
 
+(ert-deftest font-lock-number-with-type ()
+  (rust-test-font-lock
+   "-123i32"
+   '("i32" font-lock-type-face))
+  (rust-test-font-lock
+   "123u32"
+   '("u32" font-lock-type-face))
+  (rust-test-font-lock
+   "123_123_u32"
+   '("u32" font-lock-type-face))
+  (rust-test-font-lock
+   "0xff_u8"
+   '("u8" font-lock-type-face))
+  (rust-test-font-lock
+   "0b1111_1111_1001_0000i64"
+   '("i64" font-lock-type-face))
+  (rust-test-font-lock
+   "0usize"
+   '("usize" font-lock-type-face))
+  (rust-test-font-lock
+   "123.0f64 + 1."
+   '("f64" font-lock-type-face))
+  (rust-test-font-lock
+   "0.1f32"
+   '("f32" font-lock-type-face))
+  (rust-test-font-lock
+   "12E+99_f64"
+   '("f64" font-lock-type-face))
+  (rust-test-font-lock
+   "5f32"
+   '("f32" font-lock-type-face))
+  (rust-test-font-lock
+   "0x5i32"
+   '("i32" font-lock-type-face))
+  (rust-test-font-lock
+   "1x5i32"
+   '())
+  (rust-test-font-lock
+   "0x5i321"
+   '())
+  (rust-test-font-lock
+   "fname5f32"
+   '())
+  (rust-test-font-lock
+   "0x5i32+1"
+   '("i32" font-lock-type-face))
+  (rust-test-font-lock
+   "f(0xFFi32)"
+   '("i32" font-lock-type-face)))
+
 (ert-deftest font-lock-double-quote-character-literal ()
   (rust-test-font-lock
    "'\"'; let"
diff --git a/rust-mode.el b/rust-mode.el
index 6da7db552e..09eefed081 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -361,6 +361,16 @@ See `prettify-symbols-compose-predicate'."
     "bool"
     "str" "char"))
 
+(defconst rust-number-with-type
+  (eval-when-compile
+    (concat
+     
"\\_<\\(?:0[box]?\\|[1-9]\\)[[:digit:]a-fA-F_.]*\\(?:[eE][+-]?[[:digit:]_]\\)?"
+     (regexp-opt '("u8" "i8" "u16" "i16" "u32" "i32" "u64" "i64"
+                   "u128" "i128" "usize" "isize" "f32" "f64")
+                 t)
+     "\\_>"))
+  "Regular expression matching a number with a type suffix.")
+
 (defvar rust-builtin-formatting-macros
   '("eprint"
     "eprintln"
@@ -470,6 +480,8 @@ Does not match type annotations of the form \"foo::<\"."
      ("\\?" . 'rust-question-mark)
      ("\\(&+\\)\\(?:'\\(?:\\<\\|_\\)\\|\\<\\|[[({:*_|]\\)"
       1 'rust-ampersand-face)
+     ;; Numbers with type suffix
+     (,rust-number-with-type 1 font-lock-type-face)
      )
 
    ;; Ensure we highlight `Foo` in `struct Foo` as a type.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]