summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Earls <enderw88@gmail.com>2013-03-04 09:36:34 -0700
committerCraig Earls <enderw88@gmail.com>2013-03-04 09:36:34 -0700
commitefce6c89362abed1276cd060cec8077777a038e4 (patch)
tree79096adb2a9323e154172c23ae12892b9afe4318
parent4810da9398809fc090c7f044d3545050a465d2bb (diff)
downloadfork-ledger-efce6c89362abed1276cd060cec8077777a038e4.tar.gz
fork-ledger-efce6c89362abed1276cd060cec8077777a038e4.tar.bz2
fork-ledger-efce6c89362abed1276cd060cec8077777a038e4.zip
Add acct under point to reconcile prompt. Fix reconcile balance display of empty accounts
-rw-r--r--lisp/ldg-commodities.el46
-rw-r--r--lisp/ldg-post.el12
-rw-r--r--lisp/ldg-reconcile.el9
-rw-r--r--lisp/ldg-report.el11
4 files changed, 44 insertions, 34 deletions
diff --git a/lisp/ldg-commodities.el b/lisp/ldg-commodities.el
index a3cc8951..9291136f 100644
--- a/lisp/ldg-commodities.el
+++ b/lisp/ldg-commodities.el
@@ -33,28 +33,30 @@
(defun ledger-split-commodity-string (str)
"Split a commoditized amount into two parts"
- (let (val
- comm)
- (with-temp-buffer
- (insert str)
- (goto-char (point-min))
- (cond ((re-search-forward "-?[1-9][0-9]*[.,][0-9]*" nil t)
- ;; found a decimal number
- (setq val
- (string-to-number
- (ledger-commodity-string-number-decimalize
- (delete-and-extract-region (match-beginning 0) (match-end 0)) :from-user)))
- (goto-char (point-min))
- (re-search-forward "[^[:space:]]" nil t)
- (setq comm
- (delete-and-extract-region (match-beginning 0) (match-end 0)))
- (list val comm))
- ((re-search-forward "0" nil t)
- ;; couldn't find a decimal number, look for a single 0,
- ;; indicating account with zero balance
- (list 0 ledger-reconcile-default-commodity))
- (t
- (error "split-commodity-string: cannot parse commodity string: %S" str))))))
+ (if (> (length str) 0)
+ (let (val
+ comm)
+ (with-temp-buffer
+ (insert str)
+ (goto-char (point-min))
+ (cond ((re-search-forward "-?[1-9][0-9]*[.,][0-9]*" nil t)
+ ;; found a decimal number
+ (setq val
+ (string-to-number
+ (ledger-commodity-string-number-decimalize
+ (delete-and-extract-region (match-beginning 0) (match-end 0)) :from-user)))
+ (goto-char (point-min))
+ (re-search-forward "[^[:space:]]" nil t)
+ (setq comm
+ (delete-and-extract-region (match-beginning 0) (match-end 0)))
+ (list val comm))
+ ((re-search-forward "0" nil t)
+ ;; couldn't find a decimal number, look for a single 0,
+ ;; indicating account with zero balance
+ (list 0 ledger-reconcile-default-commodity))
+ (t
+ (error "split-commodity-string: cannot parse commodity string: %S" str)))))
+ (list 0 ledger-reconcile-default-commodity)))
(defun ledger-string-balance-to-commoditized-amount (str)
diff --git a/lisp/ldg-post.el b/lisp/ldg-post.el
index 7105ef7a..6cba305b 100644
--- a/lisp/ldg-post.el
+++ b/lisp/ldg-post.el
@@ -229,6 +229,18 @@ BEG, END, and LEN control how far it can align."
(add-hook 'after-change-functions 'ledger-post-maybe-align t t))
(add-hook 'after-save-hook #'(lambda () (setq ledger-post-current-list nil))))
+
+(defun ledger-post-read-account-with-prompt (prompt)
+ (let* ((context (ledger-context-at-point))
+ (default
+ (if (eq (ledger-context-line-type context) 'acct-transaction)
+ (regexp-quote (ledger-context-field-value context 'account))
+ nil)))
+ (ledger-read-string-with-default prompt default)))
+
+
(provide 'ldg-post)
+
+
;;; ldg-post.el ends here
diff --git a/lisp/ldg-reconcile.el b/lisp/ldg-reconcile.el
index 33c9f06f..e45ab7c3 100644
--- a/lisp/ldg-reconcile.el
+++ b/lisp/ldg-reconcile.el
@@ -351,10 +351,11 @@ POSTING is used in `ledger-clear-whole-transactions' is nil."
(set-window-buffer (split-window (get-buffer-window buf) nil nil) rbuf)
(pop-to-buffer rbuf)))
-(defun ledger-reconcile (account)
- "Start reconciling ACCOUNT."
- (interactive "sAccount to reconcile: ")
- (let ((buf (current-buffer))
+(defun ledger-reconcile ()
+ "Start reconciling, prompt for account."
+ (interactive)
+ (let ((account (ledger-post-read-account-with-prompt "Account to reconcile"))
+ (buf (current-buffer))
(rbuf (get-buffer ledger-recon-buffer-name))) ;; this means
;; only one
;; *Reconcile*
diff --git a/lisp/ldg-report.el b/lisp/ldg-report.el
index 0728495e..ef088f17 100644
--- a/lisp/ldg-report.el
+++ b/lisp/ldg-report.el
@@ -258,12 +258,7 @@ used to generate the buffer, navigating the buffer, etc."
the default."
;; It is intended completion should be available on existing account
;; names, but it remains to be implemented.
- (let* ((context (ledger-context-at-point))
- (default
- (if (eq (ledger-context-line-type context) 'acct-transaction)
- (regexp-quote (ledger-context-field-value context 'account))
- nil)))
- (ledger-read-string-with-default "Account" default)))
+ (ledger-post-read-account-with-prompt "Account"))
(defun ledger-report-expand-format-specifiers (report-cmd)
"Expand %(account) and %(payee) appearing in REPORT-CMD with thing under point."
@@ -437,9 +432,9 @@ Optional EDIT the command."
("^\\(\\([0-9][0-9][0-9][0-9]/\\)?[01]?[0-9]/[0123]?[0-9]\\)[ \t]+\\(\\([!*]\\)[ \t]\\)?[ \t]*\\((\\(.*\\))\\)?[ \t]*\\(.*\\)[ \t]*$"
(date nil status nil nil code payee))))
(acct-transaction
- (("\\(^[ \t]+\\)\\(.*?\\)[ \t]+\\([$]\\)\\(-?[0-9]*\\(\\.[0-9]*\\)?\\)[ \t]*;[ \t]*\\(.*?\\)[ \t]*$"
+ (("\\(^[ \t]+\\)\\(.*?\\)[ \t]+\\([$€£]\\s-?\\)\\(-?[0-9]*\\(\\.[0-9]*\\)?\\)[ \t]*;[ \t]*\\(.*?\\)[ \t]*$"
(indent account commodity amount nil comment))
- ("\\(^[ \t]+\\)\\(.*?\\)[ \t]+\\([$]\\)\\(-?[0-9]*\\(\\.[0-9]*\\)?\\)[ \t]*$"
+ ("\\(^[ \t]+\\)\\(.*?\\)[ \t]+\\([$€£]\\s-?\\)\\(-?[0-9]*\\(\\.[0-9]*\\)?\\)[ \t]*$"
(indent account commodity amount nil))
("\\(^[ \t]+\\)\\(.*?\\)[ \t]+\\(-?[0-9]+\\(\\.[0-9]*\\)?\\)[ \t]+\\(.*?\\)[ \t]*;[ \t]*\\(.*?\\)[ \t]*$"
(indent account amount nil commodity comment))