Dos preguntas relacionadas
- ¿Es posible usar opacidad mientras se tematiza en emacs? Me refiero a definir un tema que, por ejemplo, agregaría un 25% de azul al color de fondo de los elementos a los que se aplica. O lo que haría que la fuente sea un 30% más ligera.
O si no.
- ¿Es posible recalcular dinámicamente algunas propiedades del tema cada vez que cambia el tema personalizado principal?
Antecedentes
Tal cosa sería genial para varios modos de "agregar una marca". Un caso al que me refiero específicamente es la cara de error de verificación, que sería menos invasiva si le diera un ligero acento rojo al fondo en lugar de subrayar el texto.
Pero mi caso principal es el modo de punto de mira (que combina resaltar la fila actual y la columna actual). Lo configuré para usar un fondo ligeramente diferente al predeterminado, y eso creó una buena indicación sutil de la ubicación del cursor. Pero una vez que comencé a cambiar los temas con más frecuencia, resultó ser una molestia, ya que el color adecuado depende del fondo actual.
gamgrid-color
ygamegrid-colorize-glyph
dentrogamegrid.el
es un ejemplo combinado donde el sombreado se puede usar para crear diferentes niveles de coloración, por ejemplo, los tonos utilizados 0.6 o 0.8 o 1.0 (a todo color). El color que se desea cambiar dentro de un tema se puede hacer mediante programación al convertir el color a un vector de 3 elementos utilizando la funcióncolor-name-to-rgb
decolor.el
. La funciónface-remap-add-relative
se puede usar para crear una cara local de búfer particular: gnu.org/software/emacs/manual/html_node/elisp/…vline-style
de'compose
[Char uso composit] o'mixed
[cara uso y composit Char] para crear una huelga-a través del efecto vertical. El valor por defecto es'face
. Lasvline-style
opciones'compose
y el'mixed
funcionamiento de la caja en Windows, pero no funcionan en OSX. El efecto de tachado vertical con'compose
no usa una cara, y eso quizás resolvería su problema con la coloración del fondo que interfiere al ver la línea vertical.Respuestas:
Finalmente encontré una solución más o menos satisfactoria. Aún así, no estoy seguro de si es perfecto.
1) La biblioteca hexrgb.el proporciona buenas funciones para realizar cálculos de color reales. Por ejemplo:
calcula el color que es un poco más verde que el fondo actual (en los parámetros anteriores, 2 es cuántos dígitos tiene cada color y 20 es el cambio relativo).
2) Luego le aconsejé a load-theme (mientras escribía esto me pareció que este no era el mejor lugar y que algunas API de nivel inferior, enable-theme o sth aún más profundas, podrían ser mejores) para cambiar varios atributos de hl-line y col-resaltar caras después de que el tema cambió (tuve que establecer el color real, pero también borrar: heredar).
fuente