Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

入力待ちするツール(less)で、最後に入力した文字がプロンプトにも出る #404

Closed
tsuyoshicho opened this issue Apr 5, 2021 · 4 comments
Assignees

Comments

@tsuyoshicho
Copy link
Contributor

tsuyoshicho commented Apr 5, 2021

version : 4.4.9_4-windows-amd64

例として Git for windowsのless(less 563 (PCRE regular expressions))の場合

$ cat hoge.txt | less
[[display hoge.txt]]
(q)
$ q

と最後にコマンドに入力した文字がプロンプトにも出てしまう。

# 他のコマンドでもなったが、本質的にlessで表示してたと思われる...ので影響範囲などについては明確ではない

@hymkor
Copy link
Collaborator

hymkor commented Apr 5, 2021

おそらくは一行入力パッケージ(go-readline-ny)内の 独自fork版go-tty の不具合だと思われます。

4.4.9_4 ではまだ修正されていないのですが、最新のソース版では( 0fd86f2 あたりから)直っていると思います。そのうち、リリースしますので、少々お待ちいただけますでしょうか。


ちなみに、どういう不具合だったかというと、絵文字入力対応のため、一部のコードについては、キーボードを離したタイミングでも入力扱いしようとしていた※のですが、その条件が不適切でした。
(※ 左ALT押す + テンキーによるコード入力 + 左ALT離すという操作で Unicode を入力する機能が欧米圏?の Windows にあって、その機能を WindowsTerminal が絵文字のキー入力の方法として利用していました。それに go-readline-ny も対応しようとしていたというわけです)

4.4.9_4 時点ではキーを押したイベントが検出されていないのに、キーを離したイベントが検出されたものとしていました。これだと、readline が始まる直前にたまたま推していたキーなども誤検出されてしまいます。

最新のコードでは「左ALTキー」「U+80 以上のUnicode」という時のみ、KeyUpイベントも入力扱いするように修正しています。その状態でおかしな動作にならないか、今まで実地テストしてきました。結論としては最新方式だと問題なさそうなので、リリースしても大丈夫だろうとみています。

@hymkor hymkor self-assigned this Apr 5, 2021
@tsuyoshicho
Copy link
Contributor Author

なるほど了解です。

@hymkor
Copy link
Collaborator

hymkor commented May 3, 2021

Release 4.4.9_5にて、不具合修正を反映いたしました。以上、よろしくお願いいたします。

@tsuyoshicho
Copy link
Contributor Author

修正されているのが確認できました、closeしますね。
ありがとうございます 😄

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants