2011-07-03 8 views
10

que resalto línea actual mediante la evaluación de:Emacs: línea de modo hl conflictos con iluminación Frase

(hl-line-mode) 

También se podría establecer de forma global:

(global-hl-line-mode nil) 

El problema es que esta línea forma destacando sobrescribe highlight-phrase. Entonces mi pregunta es: "¿cómo destacar tanto la línea actual como una frase dada en esta línea?"

Respuesta

6

Ambos highlight-phrase y hl-line aplican caras que tienen un conjunto de colores de fondo. hl-line gana porque usa una superposición, y overlays always override text properties, which highlight-phrase uses. Le sugiero que trabaje en esto personalizando la cara hi-yellow para usar un color de primer plano brillante en lugar de un color de fondo, o incluso una caja.

+0

Me temo que no entiendo qué se puede hacer para evitar el problema, pero al menos he ganado hl-line porque usa superposición. Quizás logre todo eso más tarde. Gracias por la respuesta. – Adobe

+0

La solución que describí es modificar la cara 'hi-yellow' (quizás usando' Mx customize-face') para darle diferentes atributos faciales que permitan verla fácilmente, incluso cuando 'hl-line' anule el 'primer plano'. (¡No es una solución perfecta, por supuesto!) – sanityinc

+0

Muchas gracias, ¡finalmente lo logré! Sin embargo, la personalización de "primer plano" por sí sola no funcionaba. Uno ha apagado la bandera de "heredar". Creo que publicaré la respuesta completa, porque será más conveniente para los demás. De nuevo, gracias por tu ayuda. – Adobe

2

Así que aquí hay algo, definitivamente no es la solución ideal. Hacer:

M-x customize-face 

emacs luego le pregunta cuál, y lo hice

hl-line 

Entonces apagué la bandera de "heredar" (el último), y se convirtió en el "plano" del pabellón, - estaba diciendo "negro", lo hice rojo. Después de eso, debe guardarlo todo en la parte superior de la página, ya sea para esta sección solamente o para sesiones futuras también.

Eso es todo! De esta manera, la línea actual de atrasos de texto de fuente roja, mientras que highlight-phrase resalta la frase con amarillo.

1

Editar: La solución anterior que publiqué no funciona, pero esta debería ser.

Highlight tiene dos modos, uno para los buffers con font-lock-enabled (que usa el font-lock) y uno para el sin (que usa overlay). La solución que encontré fue simplemente forzar el resaltado para usar superposición en todo momento, y así tener mayor prioridad sobre hl-line (porque las superposiciones más cortas tienen una prioridad implícitamente mayor, dado el mismo valor de priority).

Para hacer esto fui a hi-lock.el y reemplacé todas las instancias de font-lock-fontified con nil. Asegúrese de M-x byte-compile-file después para actualizar hi-lock.elc.

+0

Eso es genial. Ya no destaco la línea actual, pero si lo hago, probablemente use esa solución. – Adobe

+0

@fzlogic seguí los pasos exactamente (modifico hi-lock.el, byte compbile), y todavía no funciona, ¿falta algo aquí? ¿Alguna línea para agregar a init.el? ¡Gracias! – shelper

+0

@shelper Acabo de (re) probarlo y funciona bien.¿Tienes varias versiones de emacs instaladas? – Rufflewind