Xterm.js: 「カーソルの復元」位置を復元しますが、テキスト属性は復元しません

作成日 2018年06月20日  ·  4コメント  ·  ソース: xtermjs/xterm.js

いくつかのVT100エスケープシーケンスの操作で問題が発生しました。

  • 保存カーソル(ESC 7)(DECSC)
  • カーソルの復元(ESC 8)(DECRC)

通常、 VT100端末は、カーソル位置を保存する必要がありますが、カーソルエスケープシーケンスを書き込むときに文字属性も保存する必要があります。
復元カーソルを書き込むときに、文字属性を復元する必要があります。

現在、カーソルの位置は保存および復元されますが、文字属性は復元され

他のVT100実装での保存/復元エスケープシーケンスの動作をテストして、それらが処理していることを確認しました。

以下にいくつかの詳細を示します。自分で必要になるため、ソリューションの開発を開始します。
これからもいい結果を出し続けてください!

詳細

  • ブラウザとブラウザのバージョン: Chromium:バージョン62.0.3202.89(Developer Build)は、Debian buster / sidで構築され、Debian buster / sid(64ビット)で実行されます。
  • OSバージョン: debian buster / sid
  • xterm.jsバージョン: 3.4.1

再現する手順

テストに使用されるVT100エスケープシーケンスは次のとおりです。

\x1b[0m (attributes off)
\x1b[1;1f (reset origin)
\x1b[2J (clear)
\x1b7 (save cursor state)
\x1b[7m (set negative color)
                        <colored> (just some output)
\x1b8 (restore cursor state)
<should not be colored>\n\r (another output - will be printed in negative color in xtermjs)

xtermjsでは、「色付けしないでください」が色付けされます

xterm.write('\x1b[0m\x1b[1;1f\x1b[2J\x1b7\x1b[7m                        <colored>\x1b8<should not be colored>\n\r');
// will print:
// "<should not be colored> <colored>"

バッシュでは、「着色されるべきではない」は着色されません

printf '\x1b[0m\x1b[1;1f\x1b[2J\x1b7\x1b[7m                        <colored>\x1b8<should not be colored>\n\r'
# will print
# "<should not be colored> <colored>"

直し方

ここでは、テキスト属性を位置とともに保存および復元する必要があるよう
htermが保存/復元カーソルを処理する方法は次のとおりです

編集
すべての文字属性(fg color、bg color、および特殊フラグモード:太字、斜体、負、..)は、「Terminal」クラスの「curAttr」属性に格納されます。 この属性のコピーを保存するだけで、すべての文字属性を一度に復元できます。

help wanted typbug

最も参考になるコメント

そうでない場合は、別の問題を作成する必要があります。 これらすべてのキャプチャは、物事を整理するために、おそらくICursorState状態オブジェクトのようなもので行う必要があります。

全てのコメント4件

VTEもバグが多かった。 おそらく、 VTE731205でいくつかの興味深いビットを見つけることができます。

@ 7PHとにかくDECSCを変更しているので、 https: //vt100.net/docs/vt510-rm/DECSC.htmlを見ることができるかもしれませんが、まだ欠落しているターミナル属性がいくつかあり、それらも処理する必要があります。

そうでない場合は、別の問題を作成する必要があります。 これらすべてのキャプチャは、物事を整理するために、おそらくICursorState状態オブジェクトのようなもので行う必要があります。

PRにマージされ、残りのプロパティがhttps://github.com/xtermjs/xterm.js/issues/1526に分岐されました

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

jerch picture jerch  ·  3コメント

johnpoth picture johnpoth  ·  3コメント

tandatle picture tandatle  ·  3コメント

ghost picture ghost  ·  4コメント

albinekb picture albinekb  ·  4コメント