summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Kettleborough <g.kettleborough@member.fsf.org>2013-04-16 16:45:01 +0100
committerGeorge Kettleborough <g.kettleborough@member.fsf.org>2013-04-16 16:45:01 +0100
commit03b3ef5f0b56286f7ee8498588f5d07c19d8b6f6 (patch)
tree72d04693a23f500c8839c6e6d3450a1a33b60937
parenta052898b601da0e09fe3e45e2f2938221c7265bd (diff)
downloadfork-ledger-03b3ef5f0b56286f7ee8498588f5d07c19d8b6f6.tar.gz
fork-ledger-03b3ef5f0b56286f7ee8498588f5d07c19d8b6f6.tar.bz2
fork-ledger-03b3ef5f0b56286f7ee8498588f5d07c19d8b6f6.zip
Make union of regexps at compile time
-rw-r--r--lisp/ldg-mode.el7
-rw-r--r--lisp/ldg-regex.el6
2 files changed, 8 insertions, 5 deletions
diff --git a/lisp/ldg-mode.el b/lisp/ldg-mode.el
index 6bad10d2..2b707e26 100644
--- a/lisp/ldg-mode.el
+++ b/lisp/ldg-mode.el
@@ -76,10 +76,9 @@ Can indent, complete or align depending on context."
(indent-to ledger-post-account-alignment-column)
(save-excursion
(re-search-backward
- (macroexpand
- `(rx (or (regex ,ledger-account-any-status-regex)
- (regex ,ledger-metadata-regex)
- (regex ,ledger-payee-any-status-regex))))
+ (rx-static-or ledger-account-any-status-regex
+ ledger-metadata-regex
+ ledger-payee-any-status-regex)
(line-beginning-position) t))
(when (= (point) (match-end 0))
(ledger-pcomplete interactively))))
diff --git a/lisp/ldg-regex.el b/lisp/ldg-regex.el
index bf7e6c95..c9e60e71 100644
--- a/lisp/ldg-regex.el
+++ b/lisp/ldg-regex.el
@@ -78,7 +78,11 @@
"\\|"
ledger-metadata-regex))
-
+(defmacro rx-static-or (&rest rx-strs)
+ "Returns rx union of regexps which can be symbols that eval to strings."
+ `(rx (or ,@(mapcar #'(lambda (rx-str)
+ `(regexp ,(eval rx-str)))
+ rx-strs))))
(defmacro ledger-define-regexp (name regex docs &rest args)
"Simplify the creation of a Ledger regex and helper functions."