v1.8.0
- まだ全行読み切っていないとき、ステータスラインの読み込み済み行数欄を毎秒4回更新するようにした
今まではキー入力直後にしか更新していなかったので「なんか全行数が少なく見えるな」と誤解することがあったわけですが、ほぼリアルタイムで行数が更新することで、たぶんそういうことがなくなったかなと。
binview が同じ動作をしていたので、それをコピーするだけで済みました(小難しいことはなく、バックグラウンドで行を読み込むところで、単に前にステイタスラインを更新してからの秒数が 1/4 秒を越えたら、更新するようにしただけ)
- 遅い端末向けに、ERASELINE (ESC[K) を出力する回数を削減して、表示更新速度を改善
仮想マシン上で実行させてみたところ、すごく遅かったので、改善にトライしました。
今までは、列中の空白部分をクリアするのに、列ごとに ERASELINE を発行していたんですが、それを最初に一回に集約しました。
で、本当に速くなったのか、主観で判断していても怪しいので、-auto
を使ったベンチマークをちゃんと用意して、それで判断しました。最初は ERASELINE よりは必要最小限の空白を出力した方が速いんちゃうかと思ってたんですが、実際ベンチで見るとそうでもなかったんですよね
(しかし、それでもなお、仮想マシン上の端末では結構遅い)
v1.8.1
- 引数なしで csvi を起動すると落ちる問題を修正
これは致命的でした。v1.6 あたりでデータの持たせ方を変えたんですが、引数なし = ドラフトとして生成したデータ行1行というケースのテストが漏れていました。
これはいかんということで、今後くりかえさないように、テストコードに引数なしで起動するものを急遽追加しました。
- テキストがないセルにカーソルがある時にセルが反転しない問題を修正
ERASELINE の出力回数を削減した時のエンバグでした ( カーソルがあるセル+次の限っては ERASELINE を出力しないと、テキストがない部分を反転させられない)
- カーソルの文字色が黒ではなく灰色になっていた不具合を修正
いつからこうなってましたっけ?
echo "foo" | csvi -auto "w|-|q|y" > foo.txt
で foo.txt がfoo\r\n
になるように、引数ゼロ時の標準出力と標準エラー出力の使い分けを変更した。
引数なしで csvi を起動した時のテストの都合、標準出力のノイズをとっておきたかったので
うーん、v1.*.0 で機能追加して、v1.*.1 で不具合を直すということが日常化している。よくないなぁ
しかし、これで機能的にはほぼ完成で、今後だいたんな改変の必要性も特に感じない(コードで気持ち悪いところもない)ので、まぁ、よし!