diff options
author | George Kettleborough <g.kettleborough@member.fsf.org> | 2013-04-16 16:45:01 +0100 |
---|---|---|
committer | George Kettleborough <g.kettleborough@member.fsf.org> | 2013-04-16 16:45:01 +0100 |
commit | 03b3ef5f0b56286f7ee8498588f5d07c19d8b6f6 (patch) | |
tree | 72d04693a23f500c8839c6e6d3450a1a33b60937 | |
parent | a052898b601da0e09fe3e45e2f2938221c7265bd (diff) | |
download | fork-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.el | 7 | ||||
-rw-r--r-- | lisp/ldg-regex.el | 6 |
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." |