Dado que ya no podemos usar ::selection
esto ya no es posible como es con la versión actual de VS Code.
Hay un par de desafíos al abordar este problema:
Una idea:
.xterm-rows
se pueden marcar con la clase xterm-invert-selection
que invierten los colores de fondo y de primer plano mediante CSS.z-index: 1
y el contenido real de la fila se agrega a la selección. Luego se puede agregar aria-hidden
por si acaso para asegurarse de que no se lea dos veces.Sin embargo, no estoy seguro de si es la solución correcta, realmente no me gusta la duplicación de texto en la solución anterior, pero al menos está en 2 filas.
@Tyriar Reflexionando sobre esto, me temo que su idea anterior no funcionará una vez que enviemos el soporte de color verdadero. Me temo que tenemos que dividir fondo / selección / primer plano en capas separadas y luego manipular las columnas de primer plano y fondo que están dentro de la selección. Intentaré dividirlo en capas una vez que tengamos truecolor combinado.
Es más agradable tener esto, no creo que queramos comprometer el rendimiento / la arquitectura o cualquier cosa para que esto sea posible. https://github.com/sourcelair/xterm.js/issues/720 es mucho más importante en mi opinión.
No tengo tiempo para un PR en este momento, pero descubrí que podemos usar la propiedad css mix-blend-mode
para hacer esto con el renderizador con muy poco esfuerzo:
.xterm-selection-layer {
mix-blend-mode: exclusion;
}
Además, incluso con un color de selección no opaco, esto hará que el primer plano, la selección y el fondo sean visibles:
.xterm-selection-layer {
mix-blend-mode: multiply;
}
Desafortunadamente, no parece ser compatible con el cajero automático Edge.
Cerrar ya que esto es mucho más complejo de lo que inicialmente parecía correcto y nadie ha votado a favor. Además, sería otra opción más.
Comentario más útil
No tengo tiempo para un PR en este momento, pero descubrí que podemos usar la propiedad css
mix-blend-mode
para hacer esto con el renderizador con muy poco esfuerzo:Además, incluso con un color de selección no opaco, esto hará que el primer plano, la selección y el fondo sean visibles:
Desafortunadamente, no parece ser compatible con el cajero automático Edge.