summaryrefslogtreecommitdiff
path: root/tw/home
diff options
context:
space:
mode:
authorTimo Wilken2023-10-28 13:35:11 +0200
committerTimo Wilken2023-10-28 13:35:11 +0200
commit7e5a71994814638c9ef231743af79b97747c381e (patch)
tree76083198050387606d4e46f97c4d7847dd812bf2 /tw/home
parent9f06f893b40862fb75672bf185daaa90f3c43881 (diff)
Reformat Ledger files on save
Diffstat (limited to 'tw/home')
-rw-r--r--tw/home/files/emacs-init.el15
1 files changed, 15 insertions, 0 deletions
diff --git a/tw/home/files/emacs-init.el b/tw/home/files/emacs-init.el
index c5d6b5ca..a3391d83 100644
--- a/tw/home/files/emacs-init.el
+++ b/tw/home/files/emacs-init.el
@@ -399,10 +399,25 @@ If CREATE is true and the resulting directory does not exist, create it."
(seq "aliPublish" (* (not ?/)) ".conf"))
eos))
+(defun tw/ledger-format-on-save ()
+ "Re-indent the entire file."
+ ;; Subset of `ledger-mode-clean-buffer'. That also sorts the buffer, which I don't want.
+ (save-excursion
+ (let ((start (point-min-marker))
+ (end (point-max-marker)))
+ (untabify start end)
+ (ledger-post-align-postings start end)
+ (ledger-mode-remove-extra-lines))))
+
+(defun tw/enable-ledger-format-on-save ()
+ "Enable reformating the open file on save."
+ (add-hook 'before-save-hook #'tw/ledger-format-on-save 0 t))
+
(use-package ledger-mode
:after (evil)
:commands (ledger-mode)
:mode (rx ".journal" eos)
+ :hook (ledger-mode . tw/enable-ledger-format-on-save)
:custom
(ledger-default-date-format ledger-iso-date-format "Use hledger-style dates.")
(ledger-reconcile-default-date-format ledger-iso-date-format "Use hledger-style dates.")