From a6325388f49cbf6114e14c9596aad55957f345ae Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Tue, 16 Jun 2009 18:10:39 +0100 Subject: [PATCH] Improved how transactions are cleared in Emacs If C-c C-c is used on a transaction, it now clears or unclears it, clearing all marks on individual postings when doing so. Fixes 863C0EE8-C193-46EE-9BAA-3A37DE73E4DB --- lisp/ledger.el | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/lisp/ledger.el b/lisp/ledger.el index 7ff8bc7f..ed69af80 100644 --- a/lisp/ledger.el +++ b/lisp/ledger.el @@ -413,8 +413,20 @@ dropped." (defun ledger-toggle-current (&optional style) (interactive) - (if ledger-clear-whole-entries - (ledger-toggle-current-entry style) + (if (or ledger-clear-whole-entries + (eq 'entry (ledger-thing-at-point))) + (progn + (save-excursion + (forward-line) + (goto-char (line-beginning-position)) + (while (and (not (eolp)) + (save-excursion + (not (eq 'entry (ledger-thing-at-point))))) + (if (looking-at "\\s-+[*!]") + (ledger-toggle-current-transaction nil)) + (forward-line) + (goto-char (line-beginning-position)))) + (ledger-toggle-current-entry style)) (ledger-toggle-current-transaction style))) (defvar ledger-mode-abbrev-table)