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

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

[nongnu] elpa/d-mode c22a8c1 309/346: Fontify variables in foreach loops


From: ELPA Syncer
Subject: [nongnu] elpa/d-mode c22a8c1 309/346: Fontify variables in foreach loops
Date: Sun, 29 Aug 2021 11:00:50 -0400 (EDT)

branch: elpa/d-mode
commit c22a8c1f5c4b6042e8673210f45fcd39807af9d2
Author: Vladimir Panteleev <git@thecybershadow.net>
Commit: Vladimir Panteleev <git@thecybershadow.net>

    Fontify variables in foreach loops
---
 d-mode.el                        | 22 ++++++++++++++--------
 tests/fonts_lambda_params.d      |  8 ++++++++
 tests/fonts_lambda_params.d.html |  8 ++++++++
 3 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/d-mode.el b/d-mode.el
index cdd8d79..2752529 100644
--- a/d-mode.el
+++ b/d-mode.el
@@ -7,7 +7,7 @@
 ;; Maintainer:  Russel Winder <russel@winder.org.uk>
 ;;              Vladimir Panteleev <vladimir@thecybershadow.net>
 ;; Created:  March 2007
-;; Version:  201911112314
+;; Version:  201911112326
 ;; Keywords:  D programming language emacs cc-mode
 ;; Package-Requires: ((emacs "25.1"))
 
@@ -619,7 +619,7 @@ Evaluate OLD-FORM if the Emacs version is older than 
MIN-VERSION,
          (setq id-start (point))
          (cond
           ;; Type or name only
-          ((looking-at "[,=)]")
+          ((looking-at "[,=);]")
            (when (eq context 'varlist)
              (setq id-start type-start)
              (setq type-start nil))
@@ -627,7 +627,7 @@ Evaluate OLD-FORM if the Emacs version is older than 
MIN-VERSION,
           ;; Parameter name
           ((d-forward-identifier)
            (c-forward-syntactic-ws)
-           (looking-at "[,=)]")))))
+           (looking-at "[,=);]")))))
 
       ;; Valid declaration, process it.
 
@@ -760,12 +760,18 @@ CONTEXT is as in `c-forward-decl-or-cast-1'."
                (eq (char-before) ?\())
              (progn
                (backward-char)
-               (c-forward-sexp)
-               (c-forward-syntactic-ws)
-               (while (d-forward-attribute-or-storage-class 'top))
                (or
-                (eq (char-after) ?\{)
-                (looking-at "=>"))))))
+                (save-excursion
+                  (and
+                   (c-backward-token-2)
+                   (looking-at (d-make-keywords-re t '("foreach")))))
+                (progn
+                  (c-forward-sexp)
+                  (c-forward-syntactic-ws)
+                  (while (d-forward-attribute-or-storage-class 'top))
+                  (or
+                   (eq (char-after) ?\{)
+                   (looking-at "=>"))))))))
 
       (setq res (cons 'varlist t))
       ;; (message "   patching -> %S" res)
diff --git a/tests/fonts_lambda_params.d b/tests/fonts_lambda_params.d
index bc79b40..45f3902 100644
--- a/tests/fonts_lambda_params.d
+++ b/tests/fonts_lambda_params.d
@@ -3,3 +3,11 @@
 
 auto dg = (Object a, Object b) {};
 alias dg2 = (a, b) {};
+
+void fun()
+{
+       foreach (a; c) foo();
+       foreach (a, b; c) foo();
+       foreach (a; c) {}
+       foreach (a, b; c) {}
+}
diff --git a/tests/fonts_lambda_params.d.html b/tests/fonts_lambda_params.d.html
index cc8e711..3bddb49 100644
--- a/tests/fonts_lambda_params.d.html
+++ b/tests/fonts_lambda_params.d.html
@@ -3,3 +3,11 @@
 </span>
 <span class="keyword">auto</span> <span class="variable-name">dg</span> = 
(<span class="type">Object</span> <span class="variable-name">a</span>, <span 
class="type">Object</span> <span class="variable-name">b</span>) {};
 <span class="keyword">alias</span> <span class="variable-name">dg2</span> = 
(<span class="variable-name">a</span>, <span class="variable-name">b</span>) {};
+
+<span class="type">void</span> <span class="function-name">fun</span>()
+{
+       <span class="keyword">foreach</span> (<span 
class="variable-name">a</span>; c) foo();
+       <span class="keyword">foreach</span> (<span 
class="variable-name">a</span>, <span class="variable-name">b</span>; c) foo();
+       <span class="keyword">foreach</span> (<span 
class="variable-name">a</span>; c) {}
+       <span class="keyword">foreach</span> (<span 
class="variable-name">a</span>, <span class="variable-name">b</span>; c) {}
+}



reply via email to

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