Los comandos echon
y echohl
son muy útiles para generar líneas de texto con múltiples grupos resaltados dentro de la misma línea. Esto se puede usar, por ejemplo, para crear buenos mensajes de estado para complementos.
En un complemento en el que estoy trabajando, estoy usando este método exacto de salida de mensajes de estado coloreados. Sin embargo, a veces me gustaría agregar estos mensajes de message-history
manera similar a lo que obtienes echomsg
. ¿Es esto de alguna manera posible? No creo que haya ninguna funcionalidad intrínseca para esto, pero ¿tal vez uno podría agregar la funcionalidad con el script vim?
statusline
highlight
Karl Yngve Lervåg
fuente
fuente
echon
yechomsg
trabajas igual, excepto queechomsg
agrega mensajes al historial? Usted ha mencionado "He estado tratando durante algún tiempo" , usted debe decirnos qué es exactamente lo que has probado, lo que se espera que suceda, y lo hizo pasar. De esa manera, podemos intentar solucionar el problema que tiene (si lo tiene) o explicar algunos conceptos erróneos que pueda tener.echon
funcionalidad se combine con la adición de mensajes al historial.Respuestas:
Esto no es posible actualmente en Vim.
Internamente,
:echomsg
se implementa como:execute
, excepto que cuando se invoca como:echomsg
resultado de la ejecución se muestra con el atributo del último:echohl
y se guarda en la lista de mensajes (src/eval.c
funciones de referenciaex_echohl
yex_execute
), que es cómo se obtiene cualquier color en un mensaje guardado.El historial de mensajes real es una colección (lista vinculada) de cadenas con atributos, y se almacena y recupera
src/message.c
. Cada cadena es un mensaje (que consta de una o más líneas), y el atributo determina, entre otras cosas, el grupo de resaltado que se utilizará para la visualización. Debido a esto, cada mensaje debe resaltarse como un todo (grupo de resaltado único) y no puede haber más de un mensaje en la misma línea. (src/message.c
estructuramsg_hist
y función de referenciaex_messages
)No puedo encontrar ninguna forma de evitar esto (pensé en usar
:echohl
y:echon
mostrar un mensaje, pero almacenar un mensaje simple en el historial. Desafortunadamente, la capacidad de agregar al historial sin mostrar también el mensaje no parece estar expuesta a ningún ex -comandos) sin modificar el código fuente de Vim.fuente