¿Hay una cara de Emacs que se pueda usar para controlar el color de los nombres de búfer inactivos?
Normalmente, al configurar la cara, mode-line-buffer-id
todas las ventanas se ven afectadas.
En este ejemplo, mode-line
tiene un fondo claro, por lo que configuré mode-line-buffer-id
un fondo mucho más oscuro #333
.
La idea es invertir la combinación de colores para mode-line-inactive
.
Si bien esto es posible para la mayoría del texto en la línea de modo de las ventanas inactivas, los nombres de los búferes se vuelven ilegibles ya que todavía está controlado por la mode-line-buffer-id
cara.
Creo que establecer mode-line-inactive
un fondo más claro solucionaría el problema, pero ese no es el resultado que deseo lograr.
Respuestas:
No estoy seguro de si todavía estás buscando una respuesta o no, pero este fue el único resultado que obtuve en Google al intentar hacerlo yo mismo.
De todos modos, por cualquier razón, Emacs lo llama
distant-foreground
así que lo único que realmente necesita hacer es agregar:distant-foreground $colour-of-choice
a su cara.fuente
Aquí hay una variación de otra respuesta que podría ayudar. Este ejemplo se reasigna
mode-line-buffer-id
para ser verde en buffers inactivos.Actualización: como se señaló en los comentarios, esto no resuelve completamente el problema. Cuando tiene varias ventanas visibles visitando el mismo búfer, todas compartirán la misma cara.
fuente
Esta es una variación de las otras respuestas, y esta distingue entre ventanas activas e inactivas. Si un búfer es visible en más de una ventana, solo la ventana activa tendrá
ml-active-window-face
y todas las demás ventanas tendránml-inactive-window-face
.fuente
No estoy seguro de que sea posible. Parece que la línea de modo se actualiza solo cuando se selecciona su ventana (la prueba con llamadas lo
message
confirma). Y el código que hace esto es el código C, no Lisp.Puede usar una expresión condicional en la definición de
mode-line-buffer-identification
, para que la cara a usar se calcule dinámicamente. Pero no conozco ninguna función o variable que pueda usar para probar si una ventana dada tiene una línea de modo inactiva.No puede usar
selected-window
, por ejemplo, porque eso siempre apunta a la ventana con la línea de modo activa.Aquí hay un ejemplo de actualización dinámica que se basa en el nombre del búfer. No es lo que quieres, pero al menos te muestra lo que puedes hacer. Si puede encontrar una manera de probar si la ventana que se está actualizando está seleccionada, entonces puede sustituirla por la prueba de nombre de búfer. (Pero mi impresión es que solo la ventana seleccionada obtiene su línea de modo actualizada).
Otra cosa que puedes probar es aconsejar la función
format-mode-line
. Aparentemente distingue una ventana con una línea de modo activa de una con una línea de modo inactiva. Pero también está codificado en C, por lo que dudo que llegue muy lejos al aconsejarlo. Prueba la variable CQmode_line_inactive
, FWIW.Sugeriría hacer esta pregunta en una de las listas de correo de Emacs (por ejemplo
[email protected]
), si no obtiene una respuesta satisfactoria aquí. Parece que podría ser bueno poder hacer lo que usted solicita. +1 para la pregunta, en cualquier caso.fuente