summaryrefslogtreecommitdiff
path: root/wttrin.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-02-20 07:31:41 -0600
committerCraig Jennings <c@cjennings.net>2026-02-20 07:31:41 -0600
commitec8130cfe1a7390e9939b311c8db39907a3f7f44 (patch)
treef126cd7f52051e91d95035b6b29def437d1cf5b0 /wttrin.el
parent30fe3ab230a66f98dd8ece253bf79c61c2fbf6e1 (diff)
downloademacs-wttrin-ec8130cfe1a7390e9939b311c8db39907a3f7f44.tar.gz
emacs-wttrin-ec8130cfe1a7390e9939b311c8db39907a3f7f44.zip
feat: mode-line: show hourglass placeholder before first weather fetch
Display ⏳ with "Fetching weather..." tooltip immediately when mode-line mode starts, so the user sees wttrin is active before the first API response arrives.
Diffstat (limited to 'wttrin.el')
-rw-r--r--wttrin.el17
1 files changed, 17 insertions, 0 deletions
diff --git a/wttrin.el b/wttrin.el
index d6e9e90..5af7f44 100644
--- a/wttrin.el
+++ b/wttrin.el
@@ -573,6 +573,21 @@ Force-refresh cache and update tooltip without opening buffer."
(let ((wttrin--force-refresh t))
(wttrin--mode-line-fetch-weather))))
+(defun wttrin--mode-line-set-placeholder ()
+ "Set a placeholder icon in the mode-line while waiting for weather data."
+ (let ((icon (if wttrin-mode-line-emoji-font
+ (propertize "⏳"
+ 'face (list :family wttrin-mode-line-emoji-font
+ :height 1.0))
+ "⏳")))
+ (setq wttrin-mode-line-string
+ (propertize (concat " " icon)
+ 'help-echo (format "Fetching weather for %s..."
+ wttrin-favorite-location)
+ 'mouse-face 'mode-line-highlight
+ 'local-map wttrin--mode-line-map)))
+ (force-mode-line-update t))
+
(defun wttrin--mode-line-start ()
"Start mode-line weather display and refresh timer."
(when (featurep 'wttrin-debug)
@@ -580,6 +595,8 @@ Force-refresh cache and update tooltip without opening buffer."
wttrin-favorite-location
wttrin-mode-line-refresh-interval))
(when wttrin-favorite-location
+ ;; Show placeholder immediately so user knows wttrin is active
+ (wttrin--mode-line-set-placeholder)
;; Delay initial fetch to allow network to initialize during startup
(run-at-time wttrin-mode-line-startup-delay nil #'wttrin--mode-line-fetch-weather)
;; Set up refresh timer (starts after the interval from now)