Added "a" and "d" commands to *Reconcile* mode.

This commit is contained in:
John Wiegley 2005-02-09 22:27:54 +00:00
parent 073652f464
commit 69abac7512

View file

@ -143,14 +143,15 @@ Return the difference in the format of a time value."
(insert
(with-temp-buffer
(setq exit-code
(ledger-run-ledger
ledger-buf "entry"
(with-temp-buffer
(insert entry-text)
(goto-char (point-min))
(while (re-search-forward "\\([&$]\\)" nil t)
(replace-match "\\\\\\1"))
(buffer-string))))
(apply #'ledger-run-ledger
ledger-buf "entry"
(split-string
(with-temp-buffer
(insert entry-text)
(goto-char (point-min))
(while (re-search-forward "\\([&$]\\)" nil t)
(replace-match "\\\\\\1"))
(buffer-string)))))
(if (= 0 exit-code)
(if insert-year
(buffer-substring 2 (point-max))
@ -158,6 +159,17 @@ Return the difference in the format of a time value."
(concat (if insert-year entry-text
(substring entry-text 6)) "\n"))) "\n"))))
(defun ledger-delete-current-entry ()
(interactive)
(save-excursion
(when (or (looking-at "^[0-9]")
(re-search-backward "^[0-9]" nil t))
(let ((beg (point)))
(while (not (eolp))
(forward-line))
(delete-blank-lines)
(delete-region beg (point))))))
(defun ledger-toggle-current ()
(interactive)
(let (clear)
@ -184,6 +196,7 @@ Return the difference in the format of a time value."
'(ledger-font-lock-keywords nil t)))
(let ((map (current-local-map)))
(define-key map [(control ?c) (control ?a)] 'ledger-add-entry)
(define-key map [(control ?c) (control ?d)] 'ledger-delete-current-entry)
(define-key map [(control ?c) (control ?y)] 'ledger-set-year)
(define-key map [(control ?c) (control ?m)] 'ledger-set-month)
(define-key map [(control ?c) (control ?c)] 'ledger-toggle-current)
@ -261,6 +274,26 @@ Return the difference in the format of a time value."
(ledger-reconcile-toggle))))
(goto-char (point-min))))
(defun ledger-reconcile-add ()
(interactive)
(with-current-buffer ledger-buf
(call-interactively #'ledger-add-entry))
(let ((inhibit-read-only t))
(erase-buffer)
(ledger-do-reconcile)
(set-buffer-modified-p t)))
(defun ledger-reconcile-delete ()
(interactive)
(let ((where (get-text-property (point) 'where)))
(with-current-buffer ledger-buf
(goto-char where)
(ledger-delete-current-entry))
(let ((inhibit-read-only t))
(goto-char (line-beginning-position))
(delete-region (point) (1+ (line-end-position)))
(set-buffer-modified-p t))))
(defun ledger-reconcile-save ()
(interactive)
(with-current-buffer ledger-buf
@ -269,9 +302,9 @@ Return the difference in the format of a time value."
(set-buffer-modified-p nil)
(ledger-display-balance))
(defun ledger-reconcile (account &optional arg)
(interactive "sAccount to reconcile: \nP")
(let* ((buf (current-buffer))
(defun ledger-do-reconcile ()
(let* ((buf ledger-buf)
(account ledger-acct)
(items
(with-temp-buffer
(let ((exit-code
@ -281,26 +314,31 @@ Return the difference in the format of a time value."
(unless (looking-at "(")
(error (buffer-string)))
(read (current-buffer)))))))
(dolist (item items)
(dolist (xact (nthcdr 5 item))
(let ((beg (point)))
(insert (format "%s %-30s %-25s %15s\n"
(format-time-string "%m/%d" (nth 2 item))
(nth 4 item) (nth 0 xact) (nth 1 xact)))
(if (nth 1 item)
(set-text-properties beg (1- (point))
(list 'face 'bold
'where (nth 0 item)))
(set-text-properties beg (1- (point))
(list 'where (nth 0 item)))))))
(goto-char (point-min))
(set-buffer-modified-p nil)
(toggle-read-only t)))
(defun ledger-reconcile (account &optional arg)
(interactive "sAccount to reconcile: \nP")
(let ((buf (current-buffer)))
(with-current-buffer
(pop-to-buffer (generate-new-buffer "*Reconcile*"))
(ledger-reconcile-mode)
(set (make-local-variable 'ledger-buf) buf)
(set (make-local-variable 'ledger-acct) account)
(dolist (item items)
(dolist (xact (nthcdr 5 item))
(let ((beg (point)))
(insert (format "%s %-30s %-25s %15s\n"
(format-time-string "%m/%d" (nth 2 item))
(nth 4 item) (nth 0 xact) (nth 1 xact)))
(if (nth 1 item)
(set-text-properties beg (1- (point))
(list 'face 'bold
'where (nth 0 item)))
(set-text-properties beg (1- (point))
(list 'where (nth 0 item)))))))
(goto-char (point-min))
(set-buffer-modified-p nil)
(toggle-read-only t)
(ledger-do-reconcile)
(when arg
(sit-for 0 0)
(call-interactively #'ledger-auto-reconcile)))))
@ -313,6 +351,8 @@ Return the difference in the format of a time value."
(define-key map [(control ?c) (control ?r)] 'ledger-auto-reconcile)
(define-key map [(control ?x) (control ?s)] 'ledger-reconcile-save)
(define-key map [? ] 'ledger-reconcile-toggle)
(define-key map [?a] 'ledger-reconcile-add)
(define-key map [?d] 'ledger-reconcile-delete)
(define-key map [?r] 'ledger-auto-reconcile)
(define-key map [?s] 'ledger-reconcile-save)
(define-key map [?q]