Merge pull request #285 from purcell/ledger-context-el-macros

Refactor macros in ledger-context.el to byte compile cleanly
This commit is contained in:
Craig Earls 2014-05-09 17:24:37 -07:00
commit dbfbf2bc89

View file

@ -42,43 +42,28 @@
(defconst ledger-code-string "\\((.*)\\)?") (defconst ledger-code-string "\\((.*)\\)?")
(defconst ledger-payee-string "\\(.*\\)") (defconst ledger-payee-string "\\(.*\\)")
(defmacro ledger-line-regex (&rest elements) (defun ledger-get-regex-str (name)
(let (regex-string) (symbol-value (intern (concat "ledger-" (symbol-name name) "-string"))))
(concat (dolist (e elements regex-string)
(setq regex-string
(concat regex-string
(eval
(intern
(concat "ledger-" (symbol-name e) "-string")))))) "[ \t]*$")))
(defmacro ledger-single-line-config2 (&rest elements) (defun ledger-line-regex (elements)
"Take list of ELEMENTS and return regex and element list for use in context-at-point" (concat (apply 'concat (mapcar 'ledger-get-regex-str elements)) "[ \t]*$"))
(let (regex-string)
`'(,(concat (dolist (e elements regex-string)
(setq regex-string
(concat regex-string
(eval
(intern
(concat "ledger-" (symbol-name e) "-string")))))) "[ \t]*$")
,elements)))
(defmacro ledger-single-line-config (&rest elements) (defmacro ledger-single-line-config (&rest elements)
"Take list of ELEMENTS and return regex and element list for use in context-at-point" "Take list of ELEMENTS and return regex and element list for use in context-at-point"
`'(,(eval `(ledger-line-regex ,@elements)) `(list (ledger-line-regex (quote ,elements)) (quote ,elements)))
,elements))
(defconst ledger-line-config (defconst ledger-line-config
(list (list 'xact (list (ledger-single-line-config date nil status nil code nil payee nil comment) (list (list 'xact (list (ledger-single-line-config date nil status nil code nil payee nil comment)
(ledger-single-line-config date nil status nil code nil payee) (ledger-single-line-config date nil status nil code nil payee)
(ledger-single-line-config date nil status nil payee))) (ledger-single-line-config date nil status nil payee)))
(list 'acct-transaction (list (ledger-single-line-config indent comment) (list 'acct-transaction (list (ledger-single-line-config indent comment)
(ledger-single-line-config2 indent status account nil commodity amount nil comment) (ledger-single-line-config indent status account nil commodity amount nil comment)
(ledger-single-line-config2 indent status account nil commodity amount) (ledger-single-line-config indent status account nil commodity amount)
(ledger-single-line-config2 indent status account nil amount nil commodity comment) (ledger-single-line-config indent status account nil amount nil commodity comment)
(ledger-single-line-config2 indent status account nil amount nil commodity) (ledger-single-line-config indent status account nil amount nil commodity)
(ledger-single-line-config2 indent status account nil amount) (ledger-single-line-config indent status account nil amount)
(ledger-single-line-config2 indent status account nil comment) (ledger-single-line-config indent status account nil comment)
(ledger-single-line-config2 indent status account))))) (ledger-single-line-config indent status account)))))
(defun ledger-extract-context-info (line-type pos) (defun ledger-extract-context-info (line-type pos)
"Get context info for current line with LINE-TYPE. "Get context info for current line with LINE-TYPE.