diff options
author | Craig Earls <enderw88@gmail.com> | 2013-02-18 08:45:24 -0700 |
---|---|---|
committer | Craig Earls <enderw88@gmail.com> | 2013-02-18 08:45:24 -0700 |
commit | 21cdc04ab3eaea54c90bf93bd33aedb44cab29fb (patch) | |
tree | 465dbe2ea2a20f2bc3885fc1e815e9d798c66cf8 | |
parent | 2c69aa1ff5759a38f458dda69a7b1f6e49294cd0 (diff) | |
download | ledger-21cdc04ab3eaea54c90bf93bd33aedb44cab29fb.tar.gz ledger-21cdc04ab3eaea54c90bf93bd33aedb44cab29fb.tar.bz2 ledger-21cdc04ab3eaea54c90bf93bd33aedb44cab29fb.zip |
Fixes Bug 900
If the buffer being reconciles was killed with the *Reconcile* buffer still
around their were dirty hooks left around that caused bug problems.
This fix adds a local kill-buffer hook that calls the ledger-quit routines
-rw-r--r-- | lisp/ldg-reconcile.el | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/lisp/ldg-reconcile.el b/lisp/ldg-reconcile.el index 20857127..ebaf7949 100644 --- a/lisp/ldg-reconcile.el +++ b/lisp/ldg-reconcile.el @@ -228,23 +228,23 @@ and exit reconcile mode" (defun ledger-reconcile-quit () - "Quite the reconcile window without saving ledger buffer." + "Quit the reconcile window without saving ledger buffer." (interactive) - (ledger-reconcile-quit-cleanup) - (let ((buf ledger-buf) - (recon-buf (get-buffer ledger-recon-buffer-name))) - ;; Make sure you delete the window before you delete the buffer, - ;; otherwise, madness ensues + (let ((recon-buf (get-buffer ledger-recon-buffer-name)) + buf) (with-current-buffer recon-buf + (ledger-reconcile-quit-cleanup) + (set 'buf ledger-buf) + ;; Make sure you delete the window before you delete the buffer, + ;; otherwise, madness ensues (delete-window (get-buffer-window recon-buf)) - (kill-buffer recon-buf)) - (set-window-buffer (selected-window) buf))) + (kill-buffer recon-buf) + (set-window-buffer (selected-window) buf)))) (defun ledger-reconcile-quit-cleanup () "Cleanup all hooks established by reconcile mode." (interactive) - (let ((buf ledger-buf) - (reconcile-buf (get-buffer ledger-recon-buffer-name))) + (let ((buf ledger-buf)) (with-current-buffer buf (remove-hook 'after-save-hook 'ledger-reconcile-refresh-after-save t) (if ledger-fold-on-reconcile @@ -315,6 +315,7 @@ POSTING is used in `ledger-clear-whole-transactions' is nil." (when recon-window (fit-window-to-buffer recon-window) (with-current-buffer buf + (add-hook 'kill-buffer-hook 'ledger-reconcile-quit nil t) (select-window (get-buffer-window buf)) (goto-char (point-max)) (recenter -1)) @@ -426,9 +427,7 @@ POSTING is used in `ledger-clear-whole-transactions' is nil." (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)) - (use-local-map map) - - (add-hook 'kill-buffer-hook 'ledger-reconcile-quit-cleanup nil t))) + (use-local-map map))) (provide 'ldg-reconcile) (provide 'ldg-reconcile) |