Ustawiłem przy tym wskaźnik org-timer.
(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")))
)))
Chcę, aby ten wskaźnik org-timer był wyświetlany tylko w linii trybu aktywnego , zamiast wszystkich linii trybu. Jak to zrobić?
redisplay
Silnik jest w stanie sprawdzić każdego okna w pewnych okolicznościach (np gdy tryb wiersza jest odświeżany naturalnie, lub gdy jest on zmuszony do odświeżenia). Gdymode-line-format
zawiera funkcję(selected-window)
, zostanie zwrócone inne okno, gdy ponowne wyświetlanie wyświetli się w różnych oknach. Wartość tę można porównać z wcześniej zarejestrowaną wartością - np.post-command-hook
Można ją wykorzystać do zarejestrowania ostatniej znanej,selected-window
a tę wartość można później porównać z funkcją wewnątrzmode-line-format
. Tak więc używam PCH do nagrywania / przechowywaniaselected-window
.org-timer
. Co powinienem zrobić? Mam nadzieję, że w bardziej ogólny sposób. Nawet to mnie zainspirowało. Czy możesz podać mi dokładniejszy przykład kodu? Ponieważ znalazłem inny zestaw'face
, ale muszę zmienić wyświetlany ciąg.Odpowiedzi:
W poniższym przykładzie słowo „AKTYWNE” pojawi się w wierszu trybu aktywnego okna, a wszystkie inne okna będą wyświetlać słowo „NIEAKTYWNE” w wierszu trybu.
Wypróbuj ten przykład z,
emacs -Q
aby sprawdzić, czy działa zgodnie z reklamą. Następnie dostosuj go w razie potrzeby.Dodaj dodatkowe zaczepy w razie potrzeby, aby zadzwonić
ml-update-all
.źródło