Mostly went through and clarified variable names. Rather than "entry" for everything, use "transaction" and "posting" as appropriate to improve readability.
87 lines
3.1 KiB
EmacsLisp
87 lines
3.1 KiB
EmacsLisp
;;; ldg-register.el --- Helper code for use with the "ledger" command-line tool
|
|
|
|
;; Copyright (C) 2003-2013 John Wiegley (johnw AT gnu DOT org)
|
|
|
|
;; This file is not part of GNU Emacs.
|
|
|
|
;; This is free software; you can redistribute it and/or modify it under
|
|
;; the terms of the GNU General Public License as published by the Free
|
|
;; Software Foundation; either version 2, or (at your option) any later
|
|
;; version.
|
|
;;
|
|
;; This is distributed in the hope that it will be useful, but WITHOUT
|
|
;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
;; for more details.
|
|
;;
|
|
;; You should have received a copy of the GNU General Public License
|
|
;; along with GNU Emacs; see the file COPYING. If not, write to the
|
|
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
|
|
;; MA 02111-1307, USA.
|
|
|
|
(require 'ldg-post)
|
|
(require 'ldg-state)
|
|
|
|
(defgroup ledger-register nil
|
|
""
|
|
:group 'ledger)
|
|
|
|
(defcustom ledger-register-date-format "%m/%d/%y"
|
|
"*The date format used for ledger register reports."
|
|
:type 'string
|
|
:group 'ledger-register)
|
|
|
|
(defcustom ledger-register-line-format "%s %-30.30s %-25.25s %15s\n"
|
|
"*The date format used for ledger register reports."
|
|
:type 'string
|
|
:group 'ledger-register)
|
|
|
|
(defface ledger-register-pending-face
|
|
'((((background light)) (:weight bold))
|
|
(((background dark)) (:weight bold)))
|
|
"Face used to highlight pending entries in a register report."
|
|
:group 'ledger-register)
|
|
|
|
(defun ledger-register-render (data-buffer posts)
|
|
(dolist (post posts)
|
|
(let ((index 1))
|
|
(dolist (xact (nthcdr 5 post))
|
|
(let ((beg (point))
|
|
(where
|
|
(with-current-buffer data-buffer
|
|
(cons
|
|
(nth 0 post)
|
|
(if ledger-clear-whole-transactions
|
|
(save-excursion
|
|
(goto-line (nth 1 post))
|
|
(point-marker))
|
|
(save-excursion
|
|
(goto-line (nth 0 xact))
|
|
(point-marker)))))))
|
|
(insert (format ledger-register-line-format
|
|
(format-time-string ledger-register-date-format
|
|
(nth 2 post))
|
|
(nth 4 post) (nth 1 xact) (nth 2 xact)))
|
|
(if (nth 3 xact)
|
|
(set-text-properties beg (1- (point))
|
|
(list 'face 'ledger-register-pending-face
|
|
'where where))
|
|
(set-text-properties beg (1- (point))
|
|
(list 'where where))))
|
|
(setq index (1+ index)))))
|
|
(goto-char (point-min))
|
|
)
|
|
|
|
(defun ledger-register-generate (&optional data-buffer &rest args)
|
|
(let ((buf (or data-buffer (current-buffer))))
|
|
(with-current-buffer (get-buffer-create "*ledger-register*")
|
|
(let ((pos (point))
|
|
(inhibit-read-only t))
|
|
(erase-buffer)
|
|
(ledger-register-render buf (apply #'ledger-exec-read buf args))
|
|
(goto-char pos))
|
|
(set-buffer-modified-p nil)
|
|
(toggle-read-only t)
|
|
(display-buffer (current-buffer) t))))
|
|
|
|
(provide 'ldg-register)
|