aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaúl Benencia <id@rbenencia.name>2025-12-23 10:56:47 -0800
committerRaúl Benencia <id@rbenencia.name>2025-12-23 10:56:47 -0800
commitecf0356d87cc6adfa099d65cb46a90c3d20d3924 (patch)
tree72c5ac54b1ee5b44829ccc050ae856ee218b89b3
parent2fa7525557f854fbb65215d79b827ac45662d30c (diff)
Restore stock org mode-line when disabling org-tempus
-rw-r--r--org-tempus.el34
1 files changed, 25 insertions, 9 deletions
diff --git a/org-tempus.el b/org-tempus.el
index f5fa1b5..28bd5f2 100644
--- a/org-tempus.el
+++ b/org-tempus.el
@@ -117,9 +117,15 @@
(when org-tempus-hide-org-mode-line-string
(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)))))
+ (setq org-tempus--saved-org-mode-line-string-present t))
+ (setq global-mode-string
+ (delq 'org-mode-line-string global-mode-string))
+ (force-mode-line-update)))
+
+(defun org-tempus--maybe-hide-org-mode-line (&rest _)
+ "Hide Org's mode line string when Org Tempus is active."
+ (when (and org-tempus-mode org-tempus-hide-org-mode-line-string)
+ (org-tempus--hide-org-mode-line)))
(defun org-tempus--notify (msg)
"Notify user with MSG using desktop notifications when available."
@@ -253,6 +259,7 @@ A session does not reset when switching tasks within
(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)
+ (advice-add 'org-clock-update-mode-line :after #'org-tempus--maybe-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)
@@ -276,11 +283,19 @@ A session does not reset when switching tasks within
(setq org-clock-clocked-in-display org-tempus--saved-org-clock-clocked-in-display)
(when org-tempus-hide-org-mode-line-string
(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))))))
+ (if (org-clock-is-active)
+ (progn
+ (when (or org-tempus--saved-org-mode-line-string-present
+ (memq org-clock-clocked-in-display '(mode-line both)))
+ (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)))))
+ (org-clock-update-mode-line))
+ (setq global-mode-string
+ (delq 'org-mode-line-string global-mode-string))
+ (setq org-mode-line-string "")
+ (force-mode-line-update)))
(when (timerp org-tempus--timer)
(cancel-timer org-tempus--timer))
(setq org-tempus--timer nil)
@@ -288,7 +303,8 @@ A session does not reset when switching tasks within
(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)))
+ (remove-hook 'org-clock-out-hook #'org-tempus--update-mode-line)
+ (advice-remove 'org-clock-update-mode-line #'org-tempus--maybe-hide-org-mode-line)))
(provide 'org-tempus)
;;; org-tempus.el ends here
nihil fit ex nihilo