summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Kharlamov <Hi-Angel@users.noreply.github.com>2019-10-10 11:32:16 +0300
committerNathan Moreau <nathan.moreau@m4x.org>2019-10-10 10:32:16 +0200
commit74c264783e25166055a7871a00e4f68fe0495a0d (patch)
tree7558eac4b51b14b6ad5f779cb6d418bee5feabca
parent897af2444c0f7d8e7059632977402022c9b00ed9 (diff)
downloadrust-mode-74c264783e25166055a7871a00e4f68fe0495a0d.tar.gz
Highlight variable name in a for-loop (#326)
Signed-off-by: Konstantin Kharlamov <Hi-Angel@yandex.ru>
-rw-r--r--rust-mode-tests.el12
-rw-r--r--rust-mode.el2
2 files changed, 13 insertions, 1 deletions
diff --git a/rust-mode-tests.el b/rust-mode-tests.el
index 0c1ad1d..a22e43a 100644
--- a/rust-mode-tests.el
+++ b/rust-mode-tests.el
@@ -3118,6 +3118,18 @@ impl Two<'a> {
"b" font-lock-variable-name-face
"u32" font-lock-type-face)))
+(ert-deftest variable-in-for-loop ()
+ (rust-test-font-lock
+ "for var in iter"
+ '("for" font-lock-keyword-face
+ "var" font-lock-variable-name-face
+ "in" font-lock-keyword-face))
+ (rust-test-font-lock
+ "for Foo{var} in iter"
+ '("for" font-lock-keyword-face
+ "Foo" font-lock-type-face
+ "in" font-lock-keyword-face)))
+
(when (executable-find rust-cargo-bin)
(ert-deftest rust-test-project-located ()
(lexical-let* ((test-dir (expand-file-name "test-project" default-directory))
diff --git a/rust-mode.el b/rust-mode.el
index cdc44e5..ec4f1c9 100644
--- a/rust-mode.el
+++ b/rust-mode.el
@@ -700,7 +700,7 @@ Returns nil if the point is not within a Rust string."
(,rust-re-type-or-constructor 1 font-lock-type-face)
;; Type-inferred binding
- (,(concat "\\_<\\(?:let\\s-+ref\\|let\\|ref\\)\\s-+\\(?:mut\\s-+\\)?" (rust-re-grab rust-re-ident) "\\_>") 1 font-lock-variable-name-face)
+ (,(concat "\\_<\\(?:let\\s-+ref\\|let\\|ref\\|for\\)\\s-+\\(?:mut\\s-+\\)?" (rust-re-grab rust-re-ident) "\\_>") 1 font-lock-variable-name-face)
;; Type names like `Foo::`, highlight excluding the ::
(,(rust-path-font-lock-matcher rust-re-uc-ident) 1 font-lock-type-face)