Я установил индикатор таймера организации в строке режима с этим.
(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")))
)))
Я хочу, чтобы этот индикатор таймера организации отображался только в строке активного режима , а не во всех строках режима. Как это сделать?
redisplay
Двигатель способен проверять каждое окно при определенных обстоятельствах (например, когда режим линия обновляется естественным образом , или когда он вынужден обновить). Когдаmode-line-format
функция содержит функцию(selected-window)
, будет возвращено другое окно при повторном отображении посещений различных окон. Это значение можно сравнить с предварительно записанным значением - например,post-command-hook
можно использовать для записи последнего известного,selected-window
а затем это значение можно сравнить с функцией внутриmode-line-format
. Итак, я использую PCH для записи / храненияselected-window
.org-timer
. Что мне делать? Я надеюсь, что более общий способ. Даже это вдохновило меня. Можете ли вы привести более точный пример кода? Потому что я обнаружил, что он установлен по-другому'face
, но мне нужно изменить строку отображения.Ответы:
В следующем примере слово «ACTIVE» появится в строке режима окна, которое активно, а все остальные окна будут отображать слово «INACTIVE» в строке режима.
Обязательно попробуйте этот пример с,
emacs -Q
чтобы убедиться, что он работает как рекламируется. После этого настройте его по мере необходимости.Добавьте дополнительные крючки по мере необходимости для вызова
ml-update-all
.источник