Eu configurei um indicador de org-timer na linha de modo com isso.
(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")))
)))
Desejo que este indicador do org-timer seja mostrado apenas na linha de modo ativo , em vez de todas as linhas de modo. Como fazer isso?
redisplay
mecanismo é capaz de verificar cada janela em determinadas circunstâncias (por exemplo, quando a linha de modo é atualizada naturalmente ou quando é forçada a atualizar). Quando omode-line-format
contém a função(selected-window)
, uma janela diferente será retornada quando o reexibir visitar as várias janelas. Esse valor pode ser comparado com um valor pré-gravado - por exemplo, opost-command-hook
pode ser usado para registrar o último conhecidoselected-window
e esse valor pode ser comparado posteriormente com uma função dentro domode-line-format
. Então, eu uso o PCH para gravar / armazenar oselected-window
.org-timer
. O que devo fazer? Espero uma maneira mais geral. Até isso me inspirou. Você pode me dar um exemplo de código mais exato? Porque achei o conjunto diferente'face
, mas preciso alterar a string de exibição.Respostas:
No exemplo a seguir, a palavra “ATIVO” aparecerá na linha de modo da janela que está ativa e todas as outras janelas exibirão a palavra “INATIVO” na linha de modo.
Certifique-se de tentar este exemplo com
emacs -Q
para verificar se funciona como anunciado. Depois disso, personalize-o conforme necessário.Adicione ganchos adicionais conforme necessário para ligar
ml-update-all
.fonte