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
This commit is contained in:
parent
2c69aa1ff5
commit
21cdc04ab3
1 changed files with 12 additions and 13 deletions
|
|
@ -228,23 +228,23 @@ and exit reconcile mode"
|
||||||
|
|
||||||
|
|
||||||
(defun ledger-reconcile-quit ()
|
(defun ledger-reconcile-quit ()
|
||||||
"Quite the reconcile window without saving ledger buffer."
|
"Quit the reconcile window without saving ledger buffer."
|
||||||
(interactive)
|
(interactive)
|
||||||
(ledger-reconcile-quit-cleanup)
|
(let ((recon-buf (get-buffer ledger-recon-buffer-name))
|
||||||
(let ((buf ledger-buf)
|
buf)
|
||||||
(recon-buf (get-buffer ledger-recon-buffer-name)))
|
|
||||||
;; Make sure you delete the window before you delete the buffer,
|
|
||||||
;; otherwise, madness ensues
|
|
||||||
(with-current-buffer recon-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))
|
(delete-window (get-buffer-window recon-buf))
|
||||||
(kill-buffer recon-buf))
|
(kill-buffer recon-buf)
|
||||||
(set-window-buffer (selected-window) buf)))
|
(set-window-buffer (selected-window) buf))))
|
||||||
|
|
||||||
(defun ledger-reconcile-quit-cleanup ()
|
(defun ledger-reconcile-quit-cleanup ()
|
||||||
"Cleanup all hooks established by reconcile mode."
|
"Cleanup all hooks established by reconcile mode."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((buf ledger-buf)
|
(let ((buf ledger-buf))
|
||||||
(reconcile-buf (get-buffer ledger-recon-buffer-name)))
|
|
||||||
(with-current-buffer buf
|
(with-current-buffer buf
|
||||||
(remove-hook 'after-save-hook 'ledger-reconcile-refresh-after-save t)
|
(remove-hook 'after-save-hook 'ledger-reconcile-refresh-after-save t)
|
||||||
(if ledger-fold-on-reconcile
|
(if ledger-fold-on-reconcile
|
||||||
|
|
@ -315,6 +315,7 @@ POSTING is used in `ledger-clear-whole-transactions' is nil."
|
||||||
(when recon-window
|
(when recon-window
|
||||||
(fit-window-to-buffer recon-window)
|
(fit-window-to-buffer recon-window)
|
||||||
(with-current-buffer buf
|
(with-current-buffer buf
|
||||||
|
(add-hook 'kill-buffer-hook 'ledger-reconcile-quit nil t)
|
||||||
(select-window (get-buffer-window buf))
|
(select-window (get-buffer-window buf))
|
||||||
(goto-char (point-max))
|
(goto-char (point-max))
|
||||||
(recenter -1))
|
(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 ref] '("Refresh" . ledger-reconcile-refresh))
|
||||||
(define-key map [menu-bar ldg-recon-menu sav] '("Save" . ledger-reconcile-save))
|
(define-key map [menu-bar ldg-recon-menu sav] '("Save" . ledger-reconcile-save))
|
||||||
|
|
||||||
(use-local-map map)
|
(use-local-map map)))
|
||||||
|
|
||||||
(add-hook 'kill-buffer-hook 'ledger-reconcile-quit-cleanup nil t)))
|
|
||||||
|
|
||||||
(provide 'ldg-reconcile)
|
(provide 'ldg-reconcile)
|
||||||
(provide 'ldg-reconcile)
|
(provide 'ldg-reconcile)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue