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

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

[nongnu] elpa/d-mode 3f34028 185/346: Fix imenu with AtAttributes


From: ELPA Syncer
Subject: [nongnu] elpa/d-mode 3f34028 185/346: Fix imenu with AtAttributes
Date: Sun, 29 Aug 2021 11:00:27 -0400 (EDT)

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

    Fix imenu with AtAttributes
---
 d-mode.el     | 84 ++++++++++++++++++++++++++++++++---------------------------
 tests/imenu.d |  5 +++-
 2 files changed, 50 insertions(+), 39 deletions(-)

diff --git a/d-mode.el b/d-mode.el
index 9c2af8e..96ea1b9 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:  201908262322
+;; Version:  201908262327
 ;; Keywords:  D programming language emacs cc-mode
 ;; Package-Requires: ((emacs "24.3"))
 
@@ -492,40 +492,53 @@ Each list item should be a regexp matching a single 
identifier."
      (zero-or-more space))
 
     (zero-or-more
-     word-start
      (or
-      ;; StorageClass
-      "deprecated"
-      "static"
-      "extern"
-      "abstract"
-      "final"
-      "override"
-      "synchronized"
-      "scope"
-      "nothrow"
-      "pure"
-      "ref"
+      word-start
+      (or
+       ;; StorageClass
+       "deprecated"
+       "static"
+       "extern"
+       "abstract"
+       "final"
+       "override"
+       "synchronized"
+       "scope"
+       "nothrow"
+       "pure"
+       "ref"
+       (seq
+       (or
+        "extern"
+        "deprecated"
+        "package"
+        )
+       (zero-or-more space)
+       "("
+       (zero-or-more space)
+       (one-or-more (not (any "()")))
+       (zero-or-more space)
+       ")")
+
+       ;; VisibilityAttribute
+       "private"
+       "package"
+       "protected"
+       "public"
+       "export"
+       )
+
+      ;; AtAttribute
       (seq
-       (or
-       "extern"
-       "deprecated"
-       "package"
-       )
-       (zero-or-more space)
-       "("
-       (zero-or-more space)
-       (one-or-more (not (any "()")))
-       (zero-or-more space)
-       ")")
-
-      ;; VisibilityAttribute
-      "private"
-      "package"
-      "protected"
-      "public"
-      "export"
-      )
+       "@"
+       (one-or-more (any "a-zA-Z0-9_"))
+       (zero-or-one
+       (zero-or-more space)
+       "("
+       (zero-or-more space)
+       (one-or-more (not (any "()")))
+       (zero-or-more space)
+       ")")))
      (zero-or-more space))
 
     ))
@@ -538,11 +551,6 @@ Each list item should be a regexp matching a single 
identifier."
 
    (eval d--imenu-rx-def-start)
 
-   ;; Qualifiers
-   (zero-or-more
-    (one-or-more (any "a-z_@()C+"))
-    (one-or-more space))
-
    ;; Type
    (group
     (one-or-more (any "a-zA-Z0-9_.*![]()")))
diff --git a/tests/imenu.d b/tests/imenu.d
index 9dcfae1..1aac8fa 100644
--- a/tests/imenu.d
+++ b/tests/imenu.d
@@ -1,5 +1,5 @@
 // #run: (d-test-get-imenu-lines)
-// #out: (4 6 11 14 17 19 22 25 33 34 37 40 43 46 49 52 54 56 67 75 78 81 84)
+// #out: (4 6 11 14 17 19 22 25 33 34 37 40 43 46 49 52 54 56 67 75 78 81 84 
87)
 
 void foo(int x) {}
 
@@ -82,3 +82,6 @@ public alias foo=bar;
 
 // alias template
 public alias Regex(Char) = std.regex.internal.ir.Regex!(Char);
+
+// AtAttribute
+@trusted public struct RegexMatch(R, alias Engine = ThompsonMatcher) {}



reply via email to

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