diff options
| author | Raúl Benencia <id@rbenencia.name> | 2025-12-23 09:57:27 -0800 |
|---|---|---|
| committer | Raúl Benencia <id@rbenencia.name> | 2025-12-23 09:57:27 -0800 |
| commit | 2a5a15f37657fa864cea65e6219bcf5dcdf36b2c (patch) | |
| tree | 3897d27cd927641b25026f1e79cb28b757924289 /org-tempus.el | |
| parent | 1e54a8ba57eb26ac86b2fdf4f4c499986d16ec63 (diff) | |
disable stock org clock when org-tempus is enabled
Diffstat (limited to 'org-tempus.el')
| -rw-r--r-- | org-tempus.el | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/org-tempus.el b/org-tempus.el index 2ef8ab8..5d98ddd 100644 --- a/org-tempus.el +++ b/org-tempus.el @@ -86,12 +86,29 @@ (defvar org-tempus--timer nil "Timer used to refresh the Org Tempus mode line.") +(defvar org-tempus--saved-org-mode-line-string nil + "Saved value of `org-mode-line-string' when `org-tempus-mode' is enabled.") + +(defvar org-tempus--saved-org-mode-line-string-present nil + "Non-nil when `org-mode-line-string' was in `global-mode-string'.") + +(defvar org-tempus--saved-org-clock-clocked-in-display nil + "Saved value of `org-clock-clocked-in-display' while Org Tempus is enabled.") + (defvar org-tempus--session-start-time nil "Internal session start time as a value returned by `current-time'.") (defvar org-tempus--session-threshold-notified nil "Internal flag indicating the session threshold notification was sent.") +(defun org-tempus--hide-org-mode-line () + "Hide the stock Org mode line indicator while Org Tempus is active." + (setq org-mode-line-string nil) + (when (memq 'org-mode-line-string global-mode-string) + (setq org-tempus--saved-org-mode-line-string-present t) + (setq global-mode-string + (remove 'org-mode-line-string global-mode-string)))) + (defun org-tempus--notify (msg) "Notify user with MSG using desktop notifications when available." (let ((sent nil)) @@ -206,13 +223,19 @@ A session does not reset when switching tasks within #'org-tempus--update-mode-line)) (add-hook 'org-clock-in-hook #'org-tempus--update-session-start) (add-hook 'org-clock-in-hook #'org-tempus--update-mode-line t) + (add-hook 'org-clock-in-hook #'org-tempus--hide-org-mode-line t) (add-hook 'org-clock-out-hook #'org-tempus--update-mode-line) + (add-hook 'org-clock-out-hook #'org-tempus--hide-org-mode-line) (when org-tempus-add-to-global-mode-string (or global-mode-string (setq global-mode-string '(""))) (or (memq org-tempus--mode-line-format global-mode-string) (setq global-mode-string (append global-mode-string (list org-tempus--mode-line-format))))) + (setq org-tempus--saved-org-clock-clocked-in-display org-clock-clocked-in-display) (setq org-clock-clocked-in-display nil) + (setq org-tempus--saved-org-mode-line-string org-mode-line-string) + (setq org-tempus--saved-org-mode-line-string-present nil) + (org-tempus--hide-org-mode-line) (when (org-clock-is-active) (org-tempus--update-session-start)) (org-tempus--update-mode-line)) @@ -222,11 +245,20 @@ A session does not reset when switching tasks within (setq global-mode-string (remove org-tempus--mode-line-format global-mode-string)) (force-mode-line-update)) + (setq org-clock-clocked-in-display org-tempus--saved-org-clock-clocked-in-display) + (setq org-mode-line-string org-tempus--saved-org-mode-line-string) + (when org-tempus--saved-org-mode-line-string-present + (or global-mode-string (setq global-mode-string '(""))) + (unless (memq 'org-mode-line-string global-mode-string) + (setq global-mode-string + (append global-mode-string (list 'org-mode-line-string))))) (when (timerp org-tempus--timer) (cancel-timer org-tempus--timer)) (setq org-tempus--timer nil) (remove-hook 'org-clock-in-hook #'org-tempus--update-session-start) (remove-hook 'org-clock-in-hook #'org-tempus--update-mode-line) + (remove-hook 'org-clock-in-hook #'org-tempus--hide-org-mode-line) + (remove-hook 'org-clock-out-hook #'org-tempus--hide-org-mode-line) (remove-hook 'org-clock-out-hook #'org-tempus--update-mode-line))) (provide 'org-tempus) |
