diff options
author | Matus Goljer <matus.goljer@gmail.com> | 2015-09-28 18:03:32 +0200 |
---|---|---|
committer | Matus Goljer <matus.goljer@gmail.com> | 2015-09-28 18:03:32 +0200 |
commit | 767ab3e39c8dd6024c0904370654e5f0a9e24b2d (patch) | |
tree | dd64c6837cb54ebef6b6de412097eb7646733aa6 /lisp | |
parent | 4dec0e3829e0d5b9da798265cc60a3feedd57f88 (diff) | |
download | fork-ledger-767ab3e39c8dd6024c0904370654e5f0a9e24b2d.tar.gz fork-ledger-767ab3e39c8dd6024c0904370654e5f0a9e24b2d.tar.bz2 fork-ledger-767ab3e39c8dd6024c0904370654e5f0a9e24b2d.zip |
Align amounts on the decimal separator.
That is:
A $10.00
B $5
C -$15.00
Before the numbers aligned at the end of the last digit.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ledger-post.el | 3 | ||||
-rw-r--r-- | lisp/ledger-regex.el | 10 |
2 files changed, 9 insertions, 4 deletions
diff --git a/lisp/ledger-post.el b/lisp/ledger-post.el index 5696d0e4..d741442a 100644 --- a/lisp/ledger-post.el +++ b/lisp/ledger-post.el @@ -79,8 +79,7 @@ point at beginning of the commodity." (when (re-search-forward ledger-amount-regex end t) (goto-char (match-beginning 0)) (skip-syntax-forward " ") - (- (or (match-end 4) - (match-end 3)) (point))))) + (- (match-end 3) (point))))) (defun ledger-next-account (&optional end) "Move to the beginning of the posting, or status marker, limit to END. diff --git a/lisp/ledger-regex.el b/lisp/ledger-regex.el index cf86b2f9..6ced0223 100644 --- a/lisp/ledger-regex.el +++ b/lisp/ledger-regex.el @@ -27,8 +27,14 @@ (defconst ledger-amount-regex (concat "\\( \\|\t\\| \t\\)[ \t]*-?" "\\([A-Z$€£₹_(]+ *\\)?" - "\\(-?[0-9,]+\\)" - "\\(\\.[0-9)]+\\)?" + ;; We either match just a number after the commodity with no + ;; decimal or thousand separators or a number with thousand + ;; separators. If we have a decimal part starting with `,' + ;; or `.', because the match is non-greedy, it must leave at + ;; least one of those symbols for the following capture + ;; group, which then finishes the decimal part. + "\\(-?\\(?:[0-9]+\\|[0-9,.]+?\\)\\)" + "\\([,.][0-9)]+\\)?" "\\( *[[:word:]€£₹_\"]+\\)?" "\\([ \t]*[@={]@?[^\n;]+?\\)?" "\\([ \t]+;.+?\\|[ \t]*\\)?$")) |