* Separate tasks #+begin_src emacs-lisp (use-package doct) (require 'org) (defvar my/custom-task-templates (doct `(("convert [p]aycheck" :keys "p" :file ,(my/agenda-file "puppet.org") :template-file ,(my/org-file "templates/puppet/paycheck.org"))))) (defun my/run-custom-tasks () (interactive) (let ((org-capture-templates my/custom-task-templates)) (call-interactively #'org-capture))) (when my/puppet-p (global-set-key (kbd "") #'my/run-custom-tasks)) #+end_src * Some Extra Bindings #+begin_src emacs-lisp (when my/puppet-p (global-set-key (kbd "") #'org-roam-node-find) (global-set-key (kbd "") #'(lambda () (interactive) (find-file (my/plaintext-file "org/random/things_puppet_should_remember.org"))))) #+end_src * Add Ledger #+begin_src emacs-lisp (defun paycheck->ledger (file) (interactive (list (read-file-name "Paycheck file? "))) (unless (string= "ledger.ledger" (file-name-nondirectory (buffer-file-name (current-buffer)))) (user-error "You're in the wrong file...")) (unless (string= "pdf" (file-name-extension file)) (user-error "Oops, that's not a pdf file...")) (let* ((buf (get-buffer-create "*output*")) (res (save-window-excursion (shell-command (format "ledger-convert.el '%s'" file) buf nil)))) (unless (eq res 0) (user-error "Something went wrong with that file... Maybe ask Lambda?")) (let ((str (with-current-buffer buf (buffer-string)))) (goto-char (point-max)) (insert "\n" str)))) #+end_src * Sending reports to mom #+begin_src emacs-lisp (defun my/run-report-get-file-name (arg) (aprog1 (with-temp-buffer (let ((return-code (--> (format "./mom_report_2.sh %s" (if arg "end" "mid")) (call-process-shell-command it nil (current-buffer))))) (if (not (eq return-code 0)) (error "Script is broken") (string-trim (buffer-string))))) (save-window-excursion (let ((buff (find-buffer-visiting it))) (if (not buff) (find-file it) (switch-to-buffer buff) (revert-buffer nil t))) (when (not (y-or-n-p "Looks good? ")) (user-error "Fix up ledger.ledger and try again"))))) (defun my/run-ledger-report (arg) (interactive "P") (let* ((default-directory (expand-file-name "report_2" (my/plaintext-file "ledger-finance"))) (fname (my/run-report-get-file-name arg))) (mu4e-compose-mail "benedi.chu@hotmail.com" (if arg "Rent" "Finance Report") '(("From" . "bensonchu457@fastmail.com"))) (mml-attach-file fname))) #+end_src