@@ -522,7 +522,6 @@ Return a count of the uncleared transactions."
522522 (delete-char -1 )) ; gets rid of the extra line feed at the bottom of the list
523523 (goto-char (point-min ))
524524 (set-buffer-modified-p nil )
525- (setq buffer-read-only t )
526525
527526 (length xacts)))
528527
@@ -617,21 +616,31 @@ reconciliation, otherwise prompt for TARGET."
617616 (ledger-reconcile-change-target target)
618617 (ledger-display-balance))))))
619618
620- (defvar ledger-reconcile-mode-abbrev-table )
621-
622619(defun ledger-reconcile-change-target (&optional target )
623620 " Change the TARGET amount for the reconciliation process."
624621 (interactive )
625622 (setq ledger-reconcile-target (or target (ledger-read-commodity-string ledger-reconcile-target-prompt-string)))
626623 (ledger-display-balance))
627624
628- (defmacro ledger-reconcile-change-sort-key-and-refresh (sort-by )
629- " Set the sort-key to SORT-BY."
630- `(lambda ()
631- (interactive )
625+ (defun ledger-reconcile--change-sort-key-and-refresh (sort-key )
626+ " Set the sort-key to SORT-KEY and refresh the buffer."
627+ (setq ledger-reconcile-sort-key sort-key)
628+ (ledger-reconcile-refresh))
629+
630+ (defmacro ledger-reconcile--define-sort-command (name expr )
631+ " Define a sorting command named ledger-reconcile-sort-by-NAME.
632+
633+ The command will re-sort the reconcile buffer by EXPR."
634+ (let ((command (intern (concat " ledger-reconcile-sort-by-" (symbol-name name)))))
635+ `(defun , command ()
636+ ,(concat " Sort reconcile buffer by " (symbol-name name) " and refresh." )
637+ (interactive )
638+ (ledger-reconcile--change-sort-key-and-refresh , expr ))))
632639
633- (setq ledger-reconcile-sort-key , sort-by )
634- (ledger-reconcile-refresh)))
640+ (ledger-reconcile--define-sort-command file-order " (0)" )
641+ (ledger-reconcile--define-sort-command amount " (amount)" )
642+ (ledger-reconcile--define-sort-command date " (date)" )
643+ (ledger-reconcile--define-sort-command payee " (payee)" )
635644
636645(defvar ledger-reconcile-mode-map
637646 (let ((map (make-sparse-keymap )))
@@ -652,19 +661,16 @@ reconciliation, otherwise prompt for TARGET."
652661 (define-key map (kbd " b" ) #'ledger-display-balance )
653662 (define-key map (kbd " B" ) #'ledger-reconcile-display-balance-in-header-mode )
654663
655- (define-key map (kbd " C-c C-o" ) (ledger-reconcile-change-sort-key-and-refresh " (0)" ))
656-
657- (define-key map (kbd " C-c C-a" ) (ledger-reconcile-change-sort-key-and-refresh " (amount)" ))
658-
659- (define-key map (kbd " C-c C-d" ) (ledger-reconcile-change-sort-key-and-refresh " (date)" ))
660-
661- (define-key map (kbd " C-c C-p" ) (ledger-reconcile-change-sort-key-and-refresh " (payee)" ))
664+ (define-key map (kbd " C-c C-o" ) #'ledger-reconcile-sort-by-file-order )
665+ (define-key map (kbd " C-c C-a" ) #'ledger-reconcile-sort-by-amount )
666+ (define-key map (kbd " C-c C-d" ) #'ledger-reconcile-sort-by-date )
667+ (define-key map (kbd " C-c C-p" ) #'ledger-reconcile-sort-by-payee )
662668 map)
663669 " Keymap for `ledger-reconcile-mode' ." )
664670
665671(easy-menu-define ledger-reconcile-mode-menu ledger-reconcile-mode-map
666- " Ledger reconcile menu"
667- ` (" Reconcile"
672+ " Ledger reconcile menu. "
673+ ' (" Reconcile"
668674 [" Save" ledger-reconcile-save]
669675 [" Refresh" ledger-reconcile-refresh]
670676 [" Finish" ledger-reconcile-finish]
@@ -674,10 +680,10 @@ reconciliation, otherwise prompt for TARGET."
674680 [" Change Target Balance" ledger-reconcile-change-target]
675681 [" Show Cleared Balance" ledger-display-balance]
676682 " ---"
677- [" Sort by payee" ,( ledger-reconcile-change- sort-key-and-refresh " ( payee) " ) ]
678- [" Sort by date" ,( ledger-reconcile-change- sort-key-and-refresh " ( date) " ) ]
679- [" Sort by amount" ,( ledger-reconcile-change- sort-key-and-refresh " ( amount) " ) ]
680- [" Sort by file order" ,( ledger-reconcile-change- sort-key-and-refresh " (0) " ) ]
683+ [" Sort by payee" ledger-reconcile-sort-by- payee]
684+ [" Sort by date" ledger-reconcile-sort-by- date]
685+ [" Sort by amount" ledger-reconcile-sort-by- amount]
686+ [" Sort by file order" ledger-reconcile-sort-by-file-order ]
681687 " ---"
682688 [" Toggle Entry" ledger-reconcile-toggle]
683689 [" Add Entry" ledger-reconcile-add]
@@ -687,10 +693,9 @@ reconciliation, otherwise prompt for TARGET."
687693 [" Visit Source" ledger-reconcile-visit]
688694 [" Previous Entry" previous-line]
689695 " ---"
690- [" Quit" ledger-reconcile-quit]
691- ))
696+ [" Quit" ledger-reconcile-quit]))
692697
693- (define-derived-mode ledger-reconcile-mode text -mode " Reconcile"
698+ (define-derived-mode ledger-reconcile-mode special -mode " Reconcile"
694699 " A mode for reconciling ledger entries." )
695700
696701(define-minor-mode ledger-reconcile-display-balance-in-header-mode
0 commit comments