El área de eco está vacía la mayor parte del tiempo, lo que me hace pensar que podría usarla para mostrar información. Por ejemplo, org-clock
muestra la tarea actual, el tiempo restante y el tiempo total transcurrido en la línea de modo. Esta información no se pueda leer ahí (el modeline puede ser bastante corta), se repite en cada modeline (porque se aplica a la sesión de emacs enteros), y no es que la utilidad que estoy dispuesto a sacrificar algo de espacio precioso para que modeline . Por otro lado, podría aparecer en el área de eco cuando no hay nada más que mostrar aquí.
¿Hay alguna forma canónica de lograr esto? He pensado en hackear una función de inserción minibuffer-inactive-mode-hook
(pero no funciona de manera confiable, por ejemplo, el mensaje desaparece tan pronto como se usa nuevamente el área de eco), o enviar mensajes no deseados por correo no deseado (pero esto será un desastre con otros usos de el área del eco y el minibúfer).
Una versión pobre de esto usaría temporizadores inactivos, pero el área de eco puede estar vacía sin que emacs esté inactivo (por ejemplo, al ingresar texto).
fuente
Respuestas:
Un comentario sobre esta pregunta menciona que un paquete llamado symon hace uso de dicha característica.
Se logra enviando mensajes no registrados cuando el minibúfer está inactivo y deteniendo la visualización cada vez que se emite un comando. El punto de referencia para eso es bastante corto, y después de unos minutos de uso, no pude notar ningún problema con eso: los mensajes y el uso de minibúfer aún tienen prioridad sobre los mensajes.
Los componentes clave son:
message-log-max
set tonil
, de modo que la cadena que se muestra no entra en el*Messages*
búfer)pre-command-hook
El único problema es que la pantalla se detiene cada vez que se ejecuta un comando, lo que incluye al escribir.
Para aquellos interesados, he extraído el código relevante en un paquete repetitivo disponible en github .
fuente
La respuesta, en mi opinión, es no . El área de eco es para mensajes efímeros . Y muchas cosas borran explícitamente todo lo que podría haber tenido eco allí. Entonces darse cuenta de lo que solicita de manera razonable es problemático, en mi opinión.
En resumen, use una alternativa. Aquí están algunas:
Use algún otro búfer (por ejemplo, un pequeño marco o ventana que mantenga abierto para este propósito). Fácil de hacer, puede moverlo, editarlo, borrarlo o hacer lo que quiera con él.
Use parte o la totalidad de la línea de modo (que aparentemente ya ha considerado).
Use una línea de encabezado.
Use un título de marco.
Si fuera yo, probablemente optaría por el # 1. (Pero realmente no quiero / necesito una visualización de información de estado de tiempo completo. Es más probable que defina un comando que me muestre la información (incluso un historial / registro) a pedido).
Actualizado después de sus comentarios:
Ya ha dicho, en su pregunta, " el mensaje desaparece tan pronto como se utiliza nuevamente el área de eco ". Por lo tanto, sonaba como usar un espacio tan efímero ya que el área de eco no satisfaría sus necesidades. Sus comentarios parecen contradecir esto.
Si realmente desea usar el área de eco, use
minibuffer-inactive-mode-hook
, como mencionó, o use un temporizador para llamarmessage
o insertar el mensaje de tiempo en el área de eco de alguna otra manera. Sin embargo, ya has notado los problemas con eso. Esos problemas (sobrescritura, borrado) se derivan de la naturaleza efímera ( prevista ) del área de eco .En resumen, desea utilizar un área destinada a mensajes efímeros, pero no desea que sus mensajes desaparezcan tan pronto como se vuelva a utilizar esa área.
(Por cierto, mencione que la información de la línea de modo se repite en cada línea de modo: ese no tiene por qué ser el caso. Puede hacer que la línea de modo sea específica para un búfer particular, etc.) Ahora, puede elegir una línea de modo para siempre (o periódicamente) muestra tu reloj o lo que sea)
fuente
org-clock
ejemplo de la pregunta: quiero que el temporizador funcione para recordarme lo que debería estar haciendo, y que se supone que debo estar haciendo eso ahora , como a menudo como sea posibleminibuffer-inactive-mode-hook
y salgo del minibúfer, se muestra el mensaje. Luego, si algún otro comando imprime algo en el área de eco, este nuevo mensaje se agrega y el mensaje efímero no regresa (porque el minibúfer no se involucró esta vez).message
opost-command-hook
, si lo desea. Pero el problema esencial de la desaparición / sobreescritura hará que su cabeza se retrase a veces, porque está intentando usar un área de visualización temporal para algo que no desea que sea temporal.