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

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

[nongnu] elpa/d-mode e70d89f 312/346: Fix fontification of catch stateme


From: ELPA Syncer
Subject: [nongnu] elpa/d-mode e70d89f 312/346: Fix fontification of catch statements
Date: Sun, 29 Aug 2021 11:00:51 -0400 (EDT)

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

    Fix fontification of catch statements
---
 d-mode.el                        | 14 ++++++++++----
 tests/fonts_lambda_params.d      |  5 +++++
 tests/fonts_lambda_params.d.html |  5 +++++
 3 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/d-mode.el b/d-mode.el
index 4a62e73..06ec3d5 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:  201911120029
+;; Version:  201911121009
 ;; Keywords:  D programming language emacs cc-mode
 ;; Package-Requires: ((emacs "25.1"))
 
@@ -793,7 +793,8 @@ CONTEXT is as in `c-forward-decl-or-cast-1'."
 (defun d-around--c-get-fontification-context (orig-fun match-pos &rest args)
   ;; checkdoc-params: (orig-fun match-pos args)
   "Advice function for fixing cc-mode handling of D lambda parameter lists."
-  (let ((res (apply orig-fun match-pos args)))
+  (let ((res (apply orig-fun match-pos args))
+       (type 'varlist))
     ;; (message "(c-get-fontification-context %S) @ %S -> %S" args (point) res)
     (when (and
           (c-major-mode-is 'd-mode)
@@ -810,7 +811,12 @@ CONTEXT is as in `c-forward-decl-or-cast-1'."
                 (save-excursion
                   (and
                    (c-backward-token-2)
-                   (looking-at (d-make-keywords-re t '("foreach")))))
+                   (cond
+                    ((looking-at (d-make-keywords-re t '("foreach" 
"foreach_reverse")))
+                     t)
+                    ((looking-at (d-make-keywords-re t '("catch")))
+                     (setq type 'decl)
+                     t))))
                 (progn
                   (c-forward-sexp)
                   (c-forward-syntactic-ws)
@@ -819,7 +825,7 @@ CONTEXT is as in `c-forward-decl-or-cast-1'."
                    (eq (char-after) ?\{)
                    (looking-at "=>"))))))))
 
-      (setq res (cons 'varlist t))
+      (setq res (cons type t))
       ;; (message "   patching -> %S" res)
       )
     res))
diff --git a/tests/fonts_lambda_params.d b/tests/fonts_lambda_params.d
index 45f3902..dc70530 100644
--- a/tests/fonts_lambda_params.d
+++ b/tests/fonts_lambda_params.d
@@ -10,4 +10,9 @@ void fun()
        foreach (a, b; c) foo();
        foreach (a; c) {}
        foreach (a, b; c) {}
+
+       try {} catch (Exception e) {}
+       try {} catch (Exception) {}
+       try {} catch (Exception e) run();
+       try {} catch (Exception) run();
 }
diff --git a/tests/fonts_lambda_params.d.html b/tests/fonts_lambda_params.d.html
index 3bddb49..58100b5 100644
--- a/tests/fonts_lambda_params.d.html
+++ b/tests/fonts_lambda_params.d.html
@@ -10,4 +10,9 @@
        <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) {}
+
+       <span class="keyword">try</span> {} <span class="keyword">catch</span> 
(<span class="type">Exception</span> <span class="variable-name">e</span>) {}
+       <span class="keyword">try</span> {} <span class="keyword">catch</span> 
(<span class="type">Exception</span>) {}
+       <span class="keyword">try</span> {} <span class="keyword">catch</span> 
(<span class="type">Exception</span> <span class="variable-name">e</span>) 
run();
+       <span class="keyword">try</span> {} <span class="keyword">catch</span> 
(<span class="type">Exception</span>) run();
 }



reply via email to

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