From a879aed3d14b80ea92e7ae8aa8287343eb6b56c4 Mon Sep 17 00:00:00 2001 From: Benson Chu Date: Fri, 11 Oct 2024 07:42:51 -0500 Subject: [PATCH] Make ledger report navigation better --- config-ext.org | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/config-ext.org b/config-ext.org index b2ede02..8db5f9c 100644 --- a/config-ext.org +++ b/config-ext.org @@ -81,6 +81,40 @@ (setq dynamic-reports '(("budgetcal" "%(binary) -f ~/MEGA/org/entries/food.ledger --daily --add-budget reg Expenses"))) + (use-package stripes) + + (add-hook 'ledger-report-after-report-hook + #'(lambda () + (stripes-mode 2))) + + (require 'parse-time) + + (defun ledger-narrow-to-date-range () + (interactive) + (goto-char (line-beginning-position)) + (when (looking-at + (rx (and + (separated-list " - " + (group (= 2 digit)) "-" (group (= 3 alpha)) + "-" (= 2 digit))))) + (let ((year (match-string 1)) + (month-start (cdr (assoc (downcase (match-string 2)) parse-time-months)))) + (setq ledger-report-cmd + (--> ledger-report-cmd + (string-replace " -M" "" it) + (string-replace " -n" "" it) + (string-replace " -A" "" it) + (concat it + " " + (format " -b 20%s-%d" + year + month-start) + (format " -e 20%s-%d" year (1+ month-start))))) + (ledger-report-redo)))) + + (define-key ledger-report-mode-map (kbd "n") + #'ledger-narrow-to-date-range) + (defun ledger-dynamic-report () (interactive) (let* ((ledger-reports dynamic-reports) @@ -101,7 +135,12 @@ (let ((average-string "-A -M -n")) (unless (string-match-p average-string ledger-report-cmd) (setq ledger-report-cmd - (concat ledger-report-cmd " " average-string)) + (--> ledger-report-cmd + (replace-regexp-in-string + (rx " -b " (+ (not " "))) "" it) + (replace-regexp-in-string + (rx " -e " (+ (not " "))) "" it) + (concat it " " average-string))) (ledger-report-redo)))) (setq ledger-amount-regexp