 (defun ledger-reconcile-quit ()
   (interactive)
   (let ((buf ledger-buf))
+    (with-current-buffer ledger-buf
+      (remove-hook 'after-save-hook 'ledger-reconcile-refresh-after-save t))
+
     ;Make sure you delete the window before you delete the buffer,
     ;otherwise, madness ensues
     (delete-window (get-buffer-window (current-buffer)))

		(error (buffer-string)))
	      (read (current-buffer))))))
    (if (> (length items) 0)
	(dolist (item items)
	  (let ((index 1))
	    (dolist (xact (nthcdr 5 item))
	      (let ((beg (point))  
		    (where (ledger-marker-where-xact-is item)))
		(insert (format "%s %-4s %-30s %-30s %15s\n"
				(format-time-string "%Y/%m/%d" (nth 2 item))
				(if (nth 3 item)
				    (nth 3 item)
				    "")
				(nth 4 item) (nth 1 xact) (nth 2 xact)))
		(if (nth 3 xact)
		    (set-text-properties beg (1- (point))
					 (list 'face 'ledger-font-reconciler-cleared-face 
					       'where where))
		    (set-text-properties beg (1- (point))
					 (list 'face 'ledger-font-reconciler-uncleared-face 
					       'where where))))
	      (setq index (1+ index)))))
	(insert (concat "There are no uncleared entries for " account)))
    (goto-char (point-min))
    (set-buffer-modified-p nil)

        (delete-region (point) (1+ (line-end-position)))
        (set-buffer-modified-p t)))))

(defun ledger-reconcile-visit (&optional come-back)
  (progn
    (beginning-of-line)
    (let* ((where (get-text-property (1+ (point)) 'where))
	   (target-buffer (ledger-reconcile-get-buffer 
			   where))
	   (cur-buf (current-buffer)))
      (when target-buffer
	(switch-to-buffer-other-window target-buffer)
	(goto-char (cdr where))
	(recenter)
	(if come-back
	    (switch-to-buffer-other-window cur-buf))))))

(defun ledger-reconcile-save ()
  (interactive)
