Formatting changes and initial inclusion of ledger-schedule
This commit is contained in:
parent
a6cb179d8a
commit
cf2fa5c32b
11 changed files with 746 additions and 761 deletions
|
|
@ -85,8 +85,10 @@ Returns a list with (value commodity)."
|
|||
(defun -commodity (c1 c2)
|
||||
"Subtract C2 from C1, ensuring their commodities match."
|
||||
(if (string= (cadr c1) (cadr c2))
|
||||
; the scaling below is to get around inexact subtraction results where, for example
|
||||
; 1.23 - 4.56 = -3.3299999999999996 instead of -3.33
|
||||
; the scaling below is to get around inexact
|
||||
; subtraction results where, for example 1.23
|
||||
; - 4.56 = -3.3299999999999996 instead of
|
||||
; -3.33
|
||||
(list (/ (- (* ledger-scale (car c1)) (* ledger-scale (car c2))) ledger-scale) (cadr c1))
|
||||
(error "Can't subtract different commodities %S from %S" c2 c1)))
|
||||
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@
|
|||
(concat (symbol-name e) "-string")))))) "[ \t]*$")))
|
||||
|
||||
(defmacro single-line-config2 (&rest elements)
|
||||
"Take list of ELEMENTS and return regex and element list for use in context-at-point"
|
||||
"Take list of ELEMENTS and return regex and element list for use in context-at-point"
|
||||
(let (regex-string)
|
||||
`'(,(concat (dolist (e elements regex-string)
|
||||
(setq regex-string
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ Can indent, complete or align depending on context."
|
|||
(define-derived-mode ledger-mode text-mode "Ledger"
|
||||
"A mode for editing ledger data files."
|
||||
(ledger-check-version)
|
||||
(ledger-check-schedule-available)
|
||||
(ledger-post-setup)
|
||||
|
||||
(set (make-local-variable 'comment-start) " ; ")
|
||||
|
|
@ -219,6 +220,7 @@ Can indent, complete or align depending on context."
|
|||
(define-key map [delete-xact] '(menu-item "Delete Transaction" ledger-delete-current-transaction))
|
||||
(define-key map [cmp-xact] '(menu-item "Complete Transaction" ledger-fully-complete-xact))
|
||||
(define-key map [add-xact] '(menu-item "Add Transaction (ledger xact)" ledger-add-transaction :enable ledger-works))
|
||||
(define-key map [generate-scheduled] '(menu-item "Show Upcoming Transactions" ledger-schedule-upcoming :enable ledger-schedule-available))
|
||||
(define-key map [sep3] '(menu-item "--"))
|
||||
(define-key map [stats] '(menu-item "Ledger Statistics" ledger-display-ledger-stats :enable ledger-works))
|
||||
(define-key map [fold-buffer] '(menu-item "Narrow to REGEX" ledger-occur))))
|
||||
|
|
|
|||
|
|
@ -49,14 +49,20 @@
|
|||
:type 'integer
|
||||
:group 'ledger-schedule)
|
||||
|
||||
(defcustom ledger-schedule-file "~/FinanceData/ledger-schedule.ledger"
|
||||
(defcustom ledger-schedule-file "~/ledger-schedule.ledger"
|
||||
"File to find scheduled transactions."
|
||||
:type 'file
|
||||
:group 'ledger-schedule)
|
||||
|
||||
(defvar ledger-schedule-available nil)
|
||||
|
||||
(defsubst between (val low high)
|
||||
(and (>= val low) (<= val high)))
|
||||
|
||||
(defun ledger-check-schedule-available ()
|
||||
(setq ledger-schedule-available (and ledger-schedule-file
|
||||
(file-exists-p ledger-schedule-file))))
|
||||
|
||||
(defun ledger-schedule-days-in-month (month year)
|
||||
"Return number of days in the MONTH, MONTH is from 1 to 12.
|
||||
If year is nil, assume it is not a leap year"
|
||||
|
|
@ -291,31 +297,6 @@ returns true if the date meets the requirements"
|
|||
(ledger-mode))
|
||||
(length candidates)))
|
||||
|
||||
|
||||
;;
|
||||
;; Test harnesses for use in ielm
|
||||
;;
|
||||
(defvar auto-items)
|
||||
|
||||
(defun ledger-schedule-test ( early horizon)
|
||||
(ledger-schedule-create-auto-buffer
|
||||
(ledger-schedule-scan-transactions ledger-schedule-file)
|
||||
early
|
||||
horizon
|
||||
(get-buffer "2013.ledger")))
|
||||
|
||||
|
||||
(defun ledger-schedule-test-predict ()
|
||||
(let ((today (current-time))
|
||||
test-date items)
|
||||
|
||||
(loop for day from 0 to ledger-schedule-look-forward by 1 do
|
||||
(setq test-date (time-add today (days-to-time day)))
|
||||
(dolist (item auto-items items)
|
||||
(if (funcall (car item) test-date)
|
||||
(setq items (append items (list (decode-time test-date) (cdr item)))))))
|
||||
items))
|
||||
|
||||
(defun ledger-schedule-upcoming ()
|
||||
(interactive)
|
||||
(ledger-schedule-create-auto-buffer
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue