43 lines
1.4 KiB
Org Mode
43 lines
1.4 KiB
Org Mode
* Ledger CLI
|
|
|
|
#+begin_src elisp
|
|
(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."))
|
|
#+end_src
|