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

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

[nongnu] elpa/d-mode db2c33f 225/346: Fix parsing of D lambda literals'


From: ELPA Syncer
Subject: [nongnu] elpa/d-mode db2c33f 225/346: Fix parsing of D lambda literals' parameter lists
Date: Sun, 29 Aug 2021 11:00:35 -0400 (EDT)

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

    Fix parsing of D lambda literals' parameter lists
    
    Watch me - this might be too relaxed as well.
---
 d-mode.el                        | 19 ++++++++++++++++++-
 tests/fonts_lambda_params.d      |  3 +++
 tests/fonts_lambda_params.d.html |  3 +++
 3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/d-mode.el b/d-mode.el
index 24f081a..f2d4826 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:  201909091520
+;; Version:  201909091656
 ;; Keywords:  D programming language emacs cc-mode
 ;; Package-Requires: ((emacs "25.1"))
 
@@ -902,6 +902,23 @@ Each list item should be a regexp matching a single 
identifier."
 (advice-add 'c-forward-decl-or-cast-1 :around 
#'d-around--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)))
+    (when (and
+          (c-major-mode-is 'd-mode)
+          (eq (car res) nil)
+          (save-excursion
+            (goto-char match-pos )
+            (c-backward-syntactic-ws)
+            (eq (char-before) ?\()))
+      (setq res (cons 'arglist t)))
+    res))
+(advice-add 'c-get-fontification-context :around 
#'d-around--c-get-fontification-context)
+
+;;----------------------------------------------------------------------------
 ;;; Fixes fontification of constructor parameter lists in D code.
 
 (defun d-special-case-looking-at-2 (orig-fun regexp)
diff --git a/tests/fonts_lambda_params.d b/tests/fonts_lambda_params.d
new file mode 100644
index 0000000..a906122
--- /dev/null
+++ b/tests/fonts_lambda_params.d
@@ -0,0 +1,3 @@
+// #run: (d-test-fontification)
+
+auto dg = (Object a, Object b) {};
diff --git a/tests/fonts_lambda_params.d.html b/tests/fonts_lambda_params.d.html
new file mode 100644
index 0000000..d99a24e
--- /dev/null
+++ b/tests/fonts_lambda_params.d.html
@@ -0,0 +1,3 @@
+<span class="comment-delimiter">// </span><span class="comment">#run: 
(d-test-fontification)
+</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>) {};



reply via email to

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