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

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

[nongnu] elpa/zig-mode 8df4efd 078/104: Merge pull request #33 from joac


From: ELPA Syncer
Subject: [nongnu] elpa/zig-mode 8df4efd 078/104: Merge pull request #33 from joachimschmidt557/use-rx
Date: Sun, 29 Aug 2021 11:37:06 -0400 (EDT)

branch: elpa/zig-mode
commit 8df4efd316ac94ceb9be08dd09f3655b585c40d3
Merge: ffaffb7 859a4dc
Author: Andrea Orru <andrea@orru.io>
Commit: GitHub <noreply@github.com>

    Merge pull request #33 from joachimschmidt557/use-rx
    
    Use rx macro and add more possibilities for type annotations
---
 zig-mode.el | 31 ++++++++++++++++---------------
 1 file changed, 16 insertions(+), 15 deletions(-)

diff --git a/zig-mode.el b/zig-mode.el
index fbe0b5e..288cb75 100644
--- a/zig-mode.el
+++ b/zig-mode.el
@@ -130,23 +130,24 @@ If given a SOURCE, execute the CMD on it."
                (compilation-mode))
            (revert-buffer :ignore-auto :noconfirm)))))))
 
-(defun zig-re-word (inner)
-  "Construct a regular expression for the word INNER."
-  (concat "\\<" inner "\\>"))
+(defconst zig-re-identifier
+  (rx (any "_" word)
+      (* (any "_" word digit))))
 
-(defun zig-re-grab (inner)
-  "Construct a group regular expression for INNER."
-  (concat "\\(" inner "\\)"))
+(defconst zig-re-type
+  (rx (* (| "?" "[_]" "*" "[]"))
+      (regexp zig-re-identifier)))
 
-(defconst zig-re-identifier "[[:word:]_][[:word:]_[:digit:]]*")
 (defconst zig-re-type-annotation
-  (concat (zig-re-grab zig-re-identifier)
-          "[[:space:]]*:[[:space:]]*"
-          (zig-re-grab zig-re-identifier)))
+  (rx (group (regexp zig-re-identifier))
+      (* (any space)) ":" (* (any space))
+      (group (regexp zig-re-type))))
 
 (defun zig-re-definition (dtype)
   "Construct a regular expression for definitions of type DTYPE."
-  (concat (zig-re-word dtype) "[[:space:]]+" (zig-re-grab zig-re-identifier)))
+  (rx bow (literal dtype) eow
+      (+ (any space))
+      (group (regexp zig-re-identifier))))
 
 (defconst zig-mode-syntax-table
   (let ((table (make-syntax-table)))
@@ -385,10 +386,10 @@ If given a SOURCE, execute the CMD on it."
 ;;; Imenu support
 (defun zig-re-structure-def-imenu (stype)
   "Construct a regular expression for strucutres definitions of type STYPE."
-  (concat (zig-re-word "const") "[[:space:]]+"
-          (zig-re-grab zig-re-identifier)
-          ".*"
-          (zig-re-word stype)))
+  (rx bow "const" eow (+ (any space))
+      (group (regexp zig-re-identifier))
+      (* not-newline)
+      bow (literal stype) eow))
 
 (defvar zig-imenu-generic-expression
   (append (mapcar (lambda (x)



reply via email to

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