::selection
使用できなくなったため、現在のバージョンのVS Codeの場合とは異なり、これは使用できなくなりました。
この問題に取り組む際には、いくつかの課題があります。
1つのアイデア:
.xterm-rows
内の中央の行の要素は、CSSを介して背景色と前景色を反転するxterm-invert-selection
クラスでマークできます。z-index: 1
を使用して、行の上に上と下の行を描画でき、行の実際のコンテンツが選択に追加されます。 次に、 aria-hidden
を追加して、2回読み取られないようにすることができます。それが正しい解決策であるかどうかはわかりませんが、上記の解決策でのテキストの複製はあまり好きではありませんが、少なくとも2行だけです。
@Tyriarこれにいくつかの考えを与えて、私たちがトゥルーカラーサポートを出荷すると、上記のあなたのアイデアは機能しないのではないかと思います。 背景/選択/前景を別々のレイヤーに分割してから、選択範囲内の前景と背景の列を操作する必要があるのではないかと思います。 トゥルーカラーをマージしたら、レイヤーに分割してみます。
これはもっといいことです。これを可能にするために、パフォーマンスやアーキテクチャなどを妥協したいとは思わないでしょう。 https://github.com/sourcelair/xterm.js/issues/720ははるかに重要なimoです。
現在PRを行う時間はありませんが、css mix-blend-mode
プロパティを使用して、非常に少ない労力でレンダラーでこれを実行できることを発見しました。
.xterm-selection-layer {
mix-blend-mode: exclusion;
}
さらに、不透明でない選択色を使用しても、前景、選択、および背景が表示されます。
.xterm-selection-layer {
mix-blend-mode: multiply;
}
残念ながら、Edgeatmではサポートされていないようです。
これは当初正しく行われているように見えるよりもはるかに複雑であり、誰もそれに投票していないため、締めくくります。 さらに、それはさらに別のオプションになります。
最も参考になるコメント
現在PRを行う時間はありませんが、css
mix-blend-mode
プロパティを使用して、非常に少ない労力でレンダラーでこれを実行できることを発見しました。さらに、不透明でない選択色を使用しても、前景、選択、および背景が表示されます。
残念ながら、Edgeatmではサポートされていないようです。