Damit habe ich in der Moduszeile eine Org-Timer-Anzeige eingerichtet.
(setq-default
mode-line-format
(quote
(
;; org-timer
(:eval
(unless (not org-timer-countdown-timer)
(propertize (let* ((rtime (decode-time
(time-subtract
(timer--time org-timer-countdown-timer)
(current-time))))
(rmins (nth 1 rtime))
(rsecs (nth 0 rtime)))
(format "🕔 %d:%d" rmins rsecs))
'face '(:foreground "cyan" :weight bold)
'help-echo "org-timer")))
)))
Ich möchte, dass diese Org-Timer-Anzeige nur in der aktiven Moduszeile anstelle aller Moduszeilen angezeigt wird. Wie es geht?
redisplay
Engine kann unter bestimmten Umständen jedes Fenster überprüfen (z. B. wenn die Moduszeile auf natürliche Weise aktualisiert wird oder wenn sie zum Aktualisieren gezwungen wird). Wenn das mode-line-format
die Funktion enthält (selected-window)
, wird ein anderes Fenster zurückgegeben, wenn Redisplay die verschiedenen Fenster besucht. Dieser Wert kann mit einem zuvor aufgezeichneten Wert verglichen werden - z. B. kann der Wert post-command-hook
verwendet werden, um den zuletzt bekannten selected-window
Wert aufzuzeichnen, und dieser Wert kann später mit einer Funktion innerhalb des verglichen werden mode-line-format
. Also benutze ich den PCH, um das aufzuzeichnen / zu speichern selected-window
.
org-timer
. Was sollte ich tun? Ich hoffe einen allgemeineren Weg. Sogar es hat mich inspiriert. Können Sie mir ein genaueres Codebeispiel geben? Weil ich es anders eingestellt fand 'face
, aber ich muss die Anzeigezeichenfolge ändern.