Skip to content

Commit 4402e05

Browse files
authored
Merge pull request #458 from bcc32/reconcile-fixes
Some small cleanups and improvements to ledger-reconcile
2 parents 1c77506 + 6c4c4d2 commit 4402e05

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

ledger-reconcile.el

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)