From 942f58a42e065c4c8751a181b3f7e9bf0696f643 Mon Sep 17 00:00:00 2001 From: Matt Kosarek Date: Mon, 26 Jan 2026 15:34:16 -0500 Subject: featrue: automatically clocking in and out on todos and done tasks --- lisp/org-custom.el | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'lisp/org-custom.el') diff --git a/lisp/org-custom.el b/lisp/org-custom.el index d999a83..a6c31c3 100644 --- a/lisp/org-custom.el +++ b/lisp/org-custom.el @@ -62,8 +62,7 @@ (setq org-default-notes-file (concat org-directory "/inbox.org")) (setq org-todo-keywords - '((sequence "TODO" "PROGRESS" "VERIFY" "|" "DONE" "ABANDONED") - (sequence "IDEA(i)" "QUESTION(q)" "|" "RESOLVED"))) + '((sequence "TODO" "PROGRESS" "|" "DONE"))) (setq org-return-follows-link t) @@ -159,5 +158,24 @@ (setq org-log-repeat nil) +(defun mk/org-clock-active-p () + "Return non-nil if a clock is currently running." + (and (boundp 'org-clock-current-task) + org-clock-current-task)) + +(defun mk/org-auto-clock-based-on-state () + "Automatically clock in/out based on TODO state changes." + (when (derived-mode-p 'org-mode) + (pcase org-state + ("PROGRESS" + (unless (mk/org-clock-active-p) + (org-clock-in))) + ("DONE" + (when (mk/org-clock-active-p) + (org-clock-out)))))) + +(add-hook 'org-after-todo-state-change-hook #'mk/org-auto-clock-based-on-state) +(setq org-clock-history-length 0) + (provide 'org-custom) ;;; org-custom.el ends here -- cgit v1.2.1