Configuré un indicador de temporizador de organización en la línea de modo con esto.
(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")))
)))
Quiero que este indicador de temporizador de organización se muestre solo en la línea del modo activo , en lugar de todas las líneas del modo. ¿Cómo hacerlo?
redisplay
motor puede verificar cada ventana bajo ciertas circunstancias (p. Ej., Cuando la línea de modo se actualiza naturalmente o cuando se ve obligada a actualizar). Cuandomode-line-format
contiene la función(selected-window)
, se devolverá una ventana diferente a medida que la pantalla vuelve a visitar las distintas ventanas. Ese valor se puede comparar con un valor pregrabado, por ejemplo,post-command-hook
se puede usar para registrar el último conocidoselected-window
y ese valor se puede comparar más tarde con una función dentro demode-line-format
. Entonces, uso el PCH para grabar / almacenar elselected-window
.org-timer
. ¿Qué tengo que hacer? Espero una forma más general. Incluso eso me inspiró. ¿Me puede dar más ejemplo de código exactamente? Porque lo encontré configurado diferente'face
, pero necesito cambiar la cadena de visualización.Respuestas:
En el siguiente ejemplo, la palabra "ACTIVO" aparecerá en la línea de modo de la ventana que está activa, y todas las demás ventanas mostrarán la palabra "INACTIVO" en la línea de modo.
Asegúrese de probar este ejemplo con
emacs -Q
para verificar que funciona como se anuncia. A partir de entonces, personalícelo según sea necesario.Agregue ganchos adicionales según sea necesario para llamar
ml-update-all
.fuente