Files
dot-emacs/.emacs.d/ledger.org
2026-04-19 10:23:44 -04:00

1.4 KiB

Ledger CLI

(defun jm/get-ledger-file ()
  (let* ((year (format-time-string "%Y"))
         (month (format-time-string "%m"))
         (ledger-file (expand-file-name
                       (format "Ledger/%s/%s-%s.ledger" year year month)
                       jm/cloud-root)))
    ledger-file))

(defun jm/open-ledger-file ()
  (interactive)
  (find-file (jm/get-ledger-file)))

(defun jm/get-ledger-master-file ()
  (expand-file-name "Ledger/main.ledger" jm/cloud-root))


(use-package ledger-mode
  :mode ("\\.ledger\\'")
  :config
  (add-to-list 'ledger-report-format-specifiers
               '("master-file" . (jm/get-ledger-master-file)))
  :custom
  (ledger-binary-path "hledger")
  (ledger-master-file (jm/get-ledger-master-file))
  (ledger-accounts-file (expand-file-name "Ledger/accounts.ledger" jm/cloud-root))
  (ledger-mode-should-check-version nil)
  (ledger-report-auto-width nil)
  (ledger-report-use-native-highlighting nil)
  (ledger-reports
   '(("bal" "%(binary) -f %(master-file) bal")
     ("monthly balance" "%(binary) -f %(master-file) bal -p 'this month'")
     ("daily balance" "%(binary) -f %(master-file) bal -p 'today'")
     ("budget" "%(binary) -f %(master-file) -p %(month) bal --budget")
     ("reg" "%(binary) -f %(master-file) reg")
     ("account" "%(binary) -f %(master-file) reg %(account)"))))

(jm/leader-keys
  "ol" '(jm/open-ledger-file :which-key "Open ledger file for current month."))