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

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

[nongnu] elpa/d-mode c6e2c9a 129/346: Convert d-imenu-method-name-patter


From: ELPA Syncer
Subject: [nongnu] elpa/d-mode c6e2c9a 129/346: Convert d-imenu-method-name-pattern to rx expression
Date: Sun, 29 Aug 2021 11:00:16 -0400 (EDT)

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

    Convert d-imenu-method-name-pattern to rx expression
    
    Syntax-only, there should be no change in functionality.
---
 d-mode.el | 48 +++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 39 insertions(+), 9 deletions(-)

diff --git a/d-mode.el b/d-mode.el
index 5c955b6..ab1ea71 100644
--- a/d-mode.el
+++ b/d-mode.el
@@ -460,15 +460,45 @@ The expression is added to 
`compilation-error-regexp-alist' and
   (cons "D" (c-lang-const c-mode-menu d)))
 
 (defconst d-imenu-method-name-pattern
-  (concat
-   "^\\s-*"
-   "\\(?:[_a-z@]+\\s-+\\)*"             ; qualifiers
-   "\\([][_a-zA-Z0-9.*!]+\\)\\s-+"      ; type
-   "\\([_a-zA-Z0-9]+\\)\\s-*"           ; function name
-   "\\(?:([^)]*)\\s-*\\)?"              ; type arguments
-   "([^)]*)\\s-*"                       ; arguments
-   "\\(?:[a-z@]+\\s-*\\)?"              ; pure/const etc.
-   "\\(?:;\\|[ \t\n]*\\(?:if\\|{\\)\\)")) ; ';' or 'if' or '{'
+  (rx
+   ;; Whitespace
+   bol
+   (zero-or-more (syntax whitespace))
+
+   ;; Qualifiers
+   (zero-or-more
+    (one-or-more (any "a-z_@"))
+    (one-or-more (syntax whitespace)))
+
+   ;; Type
+   (group
+    (one-or-more (any "a-zA-Z0-9_.*![]")))
+   (one-or-more (syntax whitespace))
+
+   ;; Function name
+   (group
+    (one-or-more (any "a-zA-Z0-9_")))
+   (zero-or-more (syntax whitespace))
+
+   ;; Type arguments
+   (zero-or-one
+    "(" (zero-or-more (not (any ")"))) ")"
+    (zero-or-more (syntax whitespace)))
+
+   ;; Arguments
+   "(" (zero-or-more (not (any ")"))) ")"
+   (zero-or-more (syntax whitespace))
+
+   ;; Pure/const etc.
+   (zero-or-one
+    (one-or-more (any "a-z@"))
+    (zero-or-more (syntax whitespace)))
+
+   ;; ';' or 'if' or '{'
+   (or
+    ";"
+    (and (zero-or-more (any " \t\n")) (or "if" "{")))
+   ))
 
 (defun d-imenu-method-index-function ()
   (and



reply via email to

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