emacs: initial config for hledger

This commit is contained in:
Payas Relekar 2023-07-02 10:04:33 +05:30
parent f41d915677
commit a544c4b744

View file

@ -175,6 +175,8 @@ Tangle ~packages.el~ from within org-mode.
(package! janet-ts-mode
:recipe (:type git :host github :repo "sogaiu/janet-ts-mode"))
(package! hledger-mode)
#+end_src
* Modus-themes
Customize Modus-themes a little to make it more peppy and vibrant.
@ -1144,3 +1146,94 @@ When Emacs is opened in Windows Subsystem for Linux, open web links in Firefox o
:config
(require 'janet-ts-experiment))
#+end_src
** Hledger
#+begin_src emacs-lisp :lexical t
(use-package! hledger-mode
:after htmlize
:mode ("\\.journal\\'" "\\.hledger\\'")
:commands (hledger-enable-reporting)
:preface
(defun hledger/next-entry ()
"Move to next entry and pulse."
(interactive)
(hledger-next-or-new-entry)
(hledger-pulse-momentary-current-entry))
(defface hledger-warning-face
'((((background dark))
:background "Red" :foreground "White")
(((background light))
:background "Red" :foreground "White")
(t :inverse-video t))
"Face for warning"
:group 'hledger)
(defun hledger/prev-entry ()
"Move to last entry and pulse."
(interactive)
(hledger-backward-entry)
(hledger-pulse-momentary-current-entry))
:bind (("C-c j" . hledger-run-command)
:map hledger-mode-map
("C-c e" . hledger-jentry)
("M-p" . hledger/prev-entry)
("M-n" . hledger/next-entry))
:init
(setq hledger-jfile
(expand-file-name "~/org/fin/.hledger.journal"))
;; hledger-email-secrets-file (expand-file-name "secrets.el"
;; emacs-assets-directory))
;; Expanded account balances in the overall monthly report are
;; mostly noise for me and do not convey any meaningful information.
(setq hledger-show-expanded-report nil)
(when (boundp 'my-hledger-service-fetch-url)
(setq hledger-service-fetch-url
my-hledger-service-fetch-url))
:config
(add-hook 'hledger-view-mode-hook #'hl-line-mode)
(add-hook 'hledger-view-mode-hook #'center-text-for-reading)
(add-hook 'hledger-view-mode-hook
(lambda ()
(run-with-timer 1
nil
(lambda ()
(when (equal hledger-last-run-command
"balancesheet")
;; highlight frequently changing accounts
(highlight-regexp "^.*\\(savings\\|cash\\).*$")
(highlight-regexp "^.*credit-card.*$"
'hledger-warning-face))))))
(add-hook 'hledger-mode-hook
(lambda ()
(make-local-variable 'company-backends)
(add-to-list 'company-backends 'hledger-company))))
;; (use-package hledger-input
;; :load-path "packages/rest/hledger-mode/"
;; :bind (("C-c e" . hledger-capture)
;; :map hledger-input-mode-map
;; ("C-c C-b" . popup-balance-at-point))
;; :preface
;; (defun popup-balance-at-point ()
;; "Show balance for account at point in a popup."
;; (interactive)
;; (if-let ((account (thing-at-point 'hledger-account)))
;; (message (hledger-shell-command-to-string (format " balance -N %s "
;; account)))
;; (message "No account at point")))
;; :config
;; (setq hledger-input-buffer-height 20)
;; (add-hook 'hledger-input-post-commit-hook #'hledger-show-new-balances)
;; (add-hook 'hledger-input-mode-hook #'auto-fill-mode)
;; (add-hook 'hledger-input-mode-hook
;; (lambda ()
;; (make-local-variable 'company-idle-delay)
;; (setq-local company-idle-delay 0.1))))
#+end_src