diff options
author | Craig Earls <enderw88@gmail.com> | 2013-06-03 17:14:19 -0700 |
---|---|---|
committer | Craig Earls <enderw88@gmail.com> | 2013-06-03 17:14:19 -0700 |
commit | e0b02afd60e2e4e33ad370a6354a89db506798ce (patch) | |
tree | 1efa8f88513263fe9977a594251b786eb29dddca /lisp | |
parent | c23c994b2204d52ee5b2a947556045be79607239 (diff) | |
download | fork-ledger-e0b02afd60e2e4e33ad370a6354a89db506798ce.tar.gz fork-ledger-e0b02afd60e2e4e33ad370a6354a89db506798ce.tar.bz2 fork-ledger-e0b02afd60e2e4e33ad370a6354a89db506798ce.zip |
Implemented different sorting function on the reconcile buffer.
C-c C-a for amount
C-c C-p for payee
C-c C-d for date
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/ldg-reconcile.el | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/lisp/ldg-reconcile.el b/lisp/ldg-reconcile.el index c08dc4dd..24168061 100644 --- a/lisp/ldg-reconcile.el +++ b/lisp/ldg-reconcile.el @@ -72,6 +72,8 @@ reconcile-finish will mark all pending posting cleared." :type 'string :group 'ledger-reconcile) +(defvar ledger-reconcile-sort-key "(date)" + "Default key for sorting reconcile buffer") (defun ledger-reconcile-get-cleared-or-pending-balance (buffer account) "Calculate the cleared or pending balance of the account." @@ -157,7 +159,7 @@ Return the number of uncleared xacts found." (let ((inhibit-read-only t)) (erase-buffer) (prog1 - (ledger-do-reconcile) + (ledger-do-reconcile ledger-reconcile-sort-key) (set-buffer-modified-p t)))) (defun ledger-reconcile-refresh-after-save () @@ -284,15 +286,18 @@ POSTING is used in `ledger-clear-whole-transactions' is nil." (nth 1 emacs-xact) ;; return line-no of xact (nth 0 posting))))) ;; return line-no of posting -(defun ledger-do-reconcile () +(defun ledger-do-reconcile (&optional sort) "Return the number of uncleared transactions in the account and display them in the *Reconcile* buffer." (let* ((buf ledger-buf) (account ledger-acct) (ledger-success nil) + (sort-by (if sort + sort + "(date)")) (xacts (with-temp-buffer (when (ledger-exec-ledger buf (current-buffer) - "--uncleared" "--real" "emacs" account) + "--uncleared" "--real" "emacs" "--sort" sort-by account) (setq ledger-success t) (goto-char (point-min)) (unless (eobp) @@ -419,6 +424,13 @@ moved and recentered. If they aren't strange things happen." (interactive) (setq ledger-target (ledger-read-commodity-string ledger-reconcile-target-prompt-string))) +(defmacro ledger-reconcile-change-sort-key-and-refresh (sort-by) + `(lambda () + (interactive) + + (setq ledger-reconcile-sort-key ,sort-by) + (ledger-reconcile-refresh))) + (define-derived-mode ledger-reconcile-mode text-mode "Reconcile" "A mode for reconciling ledger entries." (let ((map (make-sparse-keymap))) @@ -437,6 +449,12 @@ moved and recentered. If they aren't strange things happen." (define-key map [?q] 'ledger-reconcile-quit) (define-key map [?b] 'ledger-display-balance) + (define-key map [(control ?c) (control ?a)] (ledger-reconcile-change-sort-key-and-refresh "(amount)")) + + (define-key map [(control ?c) (control ?d)] (ledger-reconcile-change-sort-key-and-refresh "(date)")) + + (define-key map [(control ?c) (control ?p)] (ledger-reconcile-change-sort-key-and-refresh "(payee)")) + (define-key map [menu-bar] (make-sparse-keymap "ldg-recon-menu")) (define-key map [menu-bar ldg-recon-menu] (cons "Reconcile" map)) (define-key map [menu-bar ldg-recon-menu qui] '("Quit" . ledger-reconcile-quit)) @@ -449,11 +467,15 @@ moved and recentered. If they aren't strange things happen." (define-key map [menu-bar ldg-recon-menu add] '("Add Entry" . ledger-reconcile-add)) (define-key map [menu-bar ldg-recon-menu tog] '("Toggle Entry" . ledger-reconcile-toggle)) (define-key map [menu-bar ldg-recon-menu sep3] '("--")) + (define-key map [menu-bar ldg-recon-menu sort-amt] `("Sort by amount" . ,(ledger-reconcile-change-sort-key-and-refresh "(amount)"))) + (define-key map [menu-bar ldg-recon-menu sort-pay] `("Sort by date" . ,(ledger-reconcile-change-sort-key-and-refresh "(date)"))) + (define-key map [menu-bar ldg-recon-menu sort-dat] `("Sort by payee" . ,(ledger-reconcile-change-sort-key-and-refresh "(payee)"))) + (define-key map [menu-bar ldg-recon-menu sep4] '("--")) (define-key map [menu-bar ldg-recon-menu bal] '("Show Cleared Balance" . ledger-display-balance)) (define-key map [menu-bar ldg-recon-menu tgt] '("Change Target Balance" . ledger-reconcile-change-target)) - (define-key map [menu-bar ldg-recon-menu sep4] '("--")) - (define-key map [menu-bar ldg-recon-menu rna] '("Reconcile New Account" . ledger-reconcile)) (define-key map [menu-bar ldg-recon-menu sep5] '("--")) + (define-key map [menu-bar ldg-recon-menu rna] '("Reconcile New Account" . ledger-reconcile)) + (define-key map [menu-bar ldg-recon-menu sep6] '("--")) (define-key map [menu-bar ldg-recon-menu fin] '("Finish" . ledger-reconcile-finish)) (define-key map [menu-bar ldg-recon-menu ref] '("Refresh" . ledger-reconcile-refresh)) (define-key map [menu-bar ldg-recon-menu sav] '("Save" . ledger-reconcile-save)) |