branch: elpa/zig-mode
commit 8df4efd316ac94ceb9be08dd09f3655b585c40d3
Merge: ffaffb7 859a4dc
Author: Andrea Orru <[email protected]>
Commit: GitHub <[email protected]>
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)