Mi caso de uso para este SE es tener un cuadro alrededor de la region
cara, por lo que la región resaltada en transient-mark-mode
es visible incluso cuando la región se superpone con algunas otras superposiciones:
(set-face-attribute 'region nil
:box '(:line-width -1
:color "gtk_selection_bg_color"
:style nil))
Por ejemplo, con iedit-mode
:
Cada vez que el texto se resalta con "región encuadrada" puedo ver el ancho del texto descrito parpadeando.
El truco sucio que pude encontrar para eliminar este parpadeo es agregar un cuadro con el color de fondo a la default
cara. Desafortunadamente, este truco introduciría una serie de problemas en otros lugares, como un espacio adicional entre líneas o la representación incorrecta de los widgets de botones (por ejemplo, en los buffers de personalización).
La solución final se da en el siguiente informe de error (vea el parche adjunto al final del hilo):
Texto que mueve el cursor en movimiento con el cuadro alrededor del texto habilitado
Esta solución afecta a los componentes internos de Emacs y requiere una compilación personalizada de Emacs después de aplicar el parche.
Voy a probar la solución posterior pronto. Sin embargo, el problema es que mi init.el
sería incompatible con las compilaciones de Emacs de stock y tendrá que usar alguna lógica adicional para encontrar si se aplica el parche anterior.
Con suerte, después de algunas pruebas, este parche sería aceptado en la fuente de Emacs ...
2019-01-21 seguimiento:
Parece que el parche mencionado anteriormente no es compatible con el último código fuente de Emacs. Tuve que hacer algunos cambios para que funcione con la rama maestra actual de Emacs git. En lugar de crear otro parche, hice un tenedor en github y creé una rama aguas arriba con el parche de la caja de la cara:
cara-caja-parche
Construir Emacs desde esta rama es lo mismo que las compilaciones de Emacs.
El siguiente es el init.el
código que debe ser compatible con las versiones Emacs parcheadas y vainilla:
(unwind-protect
(condition-case ex
(set-face-attribute
'region nil
:box '(:line-width (-1 . -1)
:color "gtk_selection_bg_color"
:style nil))
('error
(set-face-attribute
'region nil
:box '(:line-width -1
:color "gtk_selection_bg_color"
:style nil)))))
Solo se prueba en Linux con GTK +