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

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

[nongnu] elpa/d-mode e809bd1 181/346: Fix imenu with conditional non-fun


From: ELPA Syncer
Subject: [nongnu] elpa/d-mode e809bd1 181/346: Fix imenu with conditional non-function declarations
Date: Sun, 29 Aug 2021 11:00:25 -0400 (EDT)

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

    Fix imenu with conditional non-function declarations
---
 d-mode.el     | 55 +++++++++++++++++++++++++++----------------------------
 tests/imenu.d |  5 ++++-
 2 files changed, 31 insertions(+), 29 deletions(-)

diff --git a/d-mode.el b/d-mode.el
index df72b8d..38ae8f0 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:  201908262243
+;; Version:  201908262253
 ;; Keywords:  D programming language emacs cc-mode
 ;; Package-Requires: ((emacs "24.3"))
 
@@ -475,25 +475,29 @@ Each list item should be a regexp matching a single 
identifier."
 (easy-menu-define d-menu d-mode-map "D Mode Commands"
   (cons "D" (c-lang-const c-mode-menu d)))
 
+(defconst d--imenu-rx-def-start
+  '(seq
+    ;; Whitespace
+    bol
+    (zero-or-more space)
+
+    ;; Conditionals
+    (zero-or-one
+     "else"
+     (zero-or-more space))
+    (zero-or-one
+     "version"
+     (zero-or-more space)
+     "("
+     (zero-or-more space)
+     (one-or-more (any "a-zA-Z0-9_"))
+     (zero-or-more space)
+     ")"
+     (zero-or-more space))))
+
 (defconst d-imenu-method-name-pattern
   (rx
-   ;; Whitespace
-   bol
-   (zero-or-more space)
-
-   ;; Conditionals
-   (zero-or-one
-    "else"
-    (zero-or-more space))
-   (zero-or-one
-    "version"
-    (zero-or-more space)
-    "("
-    (zero-or-more space)
-    (one-or-more (any "a-zA-Z0-9_"))
-    (zero-or-more space)
-    ")"
-    (zero-or-more space))
+   (eval d--imenu-rx-def-start)
 
    ;; Qualifiers
    (zero-or-more
@@ -574,8 +578,7 @@ Each list item should be a regexp matching a single 
identifier."
 (defvar d-imenu-generic-expression
   `(("*Classes*"
      ,(rx
-       line-start
-       (zero-or-more (syntax whitespace))
+       (eval d--imenu-rx-def-start)
        (zero-or-more
        (or "final" "abstract" "private" "package" "protected" "public" 
"export" "static")
        (one-or-more (syntax whitespace)))
@@ -591,8 +594,7 @@ Each list item should be a regexp matching a single 
identifier."
      1)
     ("*Interfaces*"
      ,(rx
-       line-start
-       (zero-or-more (syntax whitespace))
+       (eval d--imenu-rx-def-start)
        word-start
        "interface"
        (one-or-more (syntax whitespace))
@@ -605,8 +607,7 @@ Each list item should be a regexp matching a single 
identifier."
      1)
     ("*Structs*"
      ,(rx
-       line-start
-       (zero-or-more (syntax whitespace))
+       (eval d--imenu-rx-def-start)
        (zero-or-more
        (or "private" "package" "protected" "public" "export" "static")
        (one-or-more (syntax whitespace)))
@@ -622,8 +623,7 @@ Each list item should be a regexp matching a single 
identifier."
      1)
     ("*Templates*"
      ,(rx
-       line-start
-       (zero-or-more (syntax whitespace))
+       (eval d--imenu-rx-def-start)
        (zero-or-one
        "mixin"
        (one-or-more (syntax whitespace)))
@@ -639,8 +639,7 @@ Each list item should be a regexp matching a single 
identifier."
      1)
     ("*Enums*"
      ,(rx
-       line-start
-       (zero-or-more (syntax whitespace))
+       (eval d--imenu-rx-def-start)
        word-start
        "enum"
        (one-or-more (syntax whitespace))
diff --git a/tests/imenu.d b/tests/imenu.d
index 9559331..b61d0f3 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)
+// #out: (4 6 11 14 17 19 22 25 33 34 37 40 43 46 49 52 54 56 67 75)
 
 void foo(int x) {}
 
@@ -70,3 +70,6 @@ Entry getLog()
                return foo(x);
        }
 }
+
+// Conditional declarations
+version(CoreDdoc) enum ClockType {}



reply via email to

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