From 899f79d0324a09bb1b6d9445634f192458ca3613 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Thu, 17 Jul 2008 23:42:19 -0400 Subject: [PATCH] Reconciling using ledger.el is now line-based, instead of character based, due to problems with UTF-8 characters. --- emacs.cc | 6 +++--- ledger.el | 14 ++++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/emacs.cc b/emacs.cc index 823e0367..ed0674a2 100644 --- a/emacs.cc +++ b/emacs.cc @@ -13,9 +13,9 @@ void format_emacs_transactions::write_entry(entry_t& entry) break; } - out << (((unsigned long)entry.beg_pos) + 1) << " "; + out << (((unsigned long)entry.beg_line) + 1) << " "; - std::time_t date = entry.date(); + std::time_t date = entry.date().when; out << "(" << (date / 65536) << " " << (date % 65536) << " 0) "; if (entry.code.empty()) @@ -47,7 +47,7 @@ void format_emacs_transactions::operator()(transaction_t& xact) out << "\n"; } - out << " (" << (((unsigned long)xact.beg_pos) + 1) << " "; + out << " (" << (((unsigned long)xact.beg_line) + 1) << " "; out << "\"" << xact_account(xact)->fullname() << "\" \"" << xact.amount << "\""; diff --git a/ledger.el b/ledger.el index 6f6abbf9..0d58a3e8 100644 --- a/ledger.el +++ b/ledger.el @@ -416,7 +416,7 @@ dropped." ;; attempt to auto-reconcile in the background (with-temp-buffer (let ((exit-code - (ledger-run-ledger buffer "--format" "%xB\\n" + (ledger-run-ledger buffer "--format" "%xb\\n" "--reconcile" balance "--reconcile-date" date "register" account))) (if (/= 0 exit-code) @@ -427,7 +427,9 @@ dropped." (error (buffer-string))) (while (not (eobp)) (setq cleared - (cons (1+ (read (current-buffer))) cleared)) + (cons (save-excursion + (goto-line (1+ (read (current-buffer)))) + (point-marker)) cleared)) (forward-line))))) (goto-char (point-min)) (with-current-buffer ledger-buf @@ -531,8 +533,12 @@ dropped." (cons (nth 0 item) (if ledger-clear-whole-entries - (copy-marker (nth 1 item)) - (copy-marker (nth 0 xact))))))) + (save-excursion + (goto-line (nth 1 item)) + (point-marker)) + (save-excursion + (goto-line (nth 0 xact)) + (point-marker))))))) (insert (format "%s %-30s %-25s %15s\n" (format-time-string "%m/%d" (nth 2 item)) (nth 4 item) (nth 1 xact) (nth 2 xact)))