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

4.4.12 でプロンプトの $h の挙動が変わっている #422

Closed
Matsuyanagi opened this issue Aug 8, 2022 · 4 comments
Closed

4.4.12 でプロンプトの $h の挙動が変わっている #422

Matsuyanagi opened this issue Aug 8, 2022 · 4 comments
Assignees
Labels

Comments

@Matsuyanagi
Copy link
Contributor

nyagos : 4.4.12_0-windows-amd64
OS : Windows10 21H2q
WindowsTerminal : 1.15.2002.0 , 1.14.1962.0

nyagos.env.prompt$h の挙動が 4.4.11 と 4.4.12 で変わっています。

~/.nyagos

nyagos.env.prompt="$e[36;49;1m[$P]$_$D $T$h$h$h$G$e[39;49;0m"

上記で意図しているのは $T 時刻の末尾3文字(ms)を削除する、というものです。
$h は1文字削除を意図して、 $T$h$h$h で末尾3文字を削除していました。

$D $T$h$h$h$G の設定で
4.4.11 では削除がされ、
2022-08-08 19:12:55> と表示されますが、
4.4.12 では(内部?)カーソルが移動するのみで
2022-08-08 19:13:02>96 と表示されます。時刻のあとに空白文字も入っています。

意図した仕様変更であればよいのですが、
frame/prompt.go Format2Prompt() の変更はなさそうなので意図しないものかとも思いましたので報告します。
2022-08-08 nyagos-4 4 11
2022-08-08 nyagos-4 4 12

@hymkor
Copy link
Collaborator

hymkor commented Aug 8, 2022

ご連絡ありがとうございます。ご報告いただいた症状確認しました。
たぶん直せると思いますので、次の 4.4.13 で対応します。

以下は、原因についてですが(ご興味があれば)

4.4.11 では削除がされ、
2022-08-08 19:12:55> と表示されますが、

意図しない動作であったのは間違いなかったのですが、症状が起こる仕組みはちょっと違うようです。

4.4.11 で set "PROMPT=$e[36;49;1m[$P]$_$D $T$h$h$h$G$e[39;49;0m" と設定すると、確かにミリセカンド部分が消えているように見えるのですが、最後に改行コードを加えて set "PROMPT=$e[36;49;1m[$P]$_$D $T$h$h$h$G$e[39;49;0m$_" とすると実は消えていないのがわかります。

image

つまりプロンプトの動作自体は変わっていません。$h は前からカーソルを左に移動させる機能しかなく、元あった文字を空白で消す処理はありませんでした。

ただ、プロンプトでどれだけの桁位置にカーソルが移動しているかの「内部の想定計算」が 4.4.11 の時から既に間違っていたようです。$h 一つにつき、桁位置を1つマイナスカウントすべきところが、普通の文字と同様に1プラスされて2個ズレが発生。それが3つなので合計6つ理論上の位置が右にずれてカウントされたといったところです。

そのせいで、readline での理論上の編集開始位置が右にズレてしまったようです。

4.4.12 でこれが表面化するようになった理由は、readline の WezTerm 対応にともなって、編集エリアでの左方向へのカーソル移動に「backspace って何個後ろに戻る」という方法から「ESC[(桁位置)G」を使った「絶対位置指定」に変えてしまったためだと思います。backspace による相対移動であれば、理論位置がズレても表面化しづらかったのですが、絶対位置指定の移動になって、完全に表面化してしまったと。

今のところ、コードを具体的に触っての調査まではしていないのですが、大方、このようなところではないかと見ています。

以上、よろしくお願い致します。

@hymkor hymkor self-assigned this Aug 8, 2022
@hymkor hymkor added the bug label Aug 8, 2022
hymkor added a commit that referenced this issue Aug 8, 2022
hymkor added a commit that referenced this issue Aug 8, 2022
@Matsuyanagi
Copy link
Contributor Author

迅速で詳細な調査をありがとうございます。
ご都合に合わせてのリリースで対応をおねがいします。

@hymkor
Copy link
Collaborator

hymkor commented Oct 1, 2022

4.4.13_0 にて対応いたしました。

よろしくお願いいたします。

@Matsuyanagi
Copy link
Contributor Author

4.4.13_0 で修正されていることを確認しました。
対応ありがとうございました。

@hymkor hymkor closed this as completed Oct 1, 2022
hymkor added a commit to nyaosorg/go-readline-ny that referenced this issue Aug 28, 2023
See nyaosorg/nyagos#422
At first, backspace was removed on
    nyaosorg/nyagos@e1ade4a
But, that code are removed in a later commit.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants