2020/02の自作テキストエディタ開発状況

テキストエディタ開発
この記事は約3分で読めます。

いつになったら納得したものができるのか謎ですが、今はまだ折り返しの実装をしています。ってことで2月の自作テキストエディタの進捗状況です。

ビルド回数

ビルド回数を記録しだしてから2番目に多い結果になりました。毎日開発したらだいたい1500回ぐらい行きそうですね。毎回思うんですが、ほんと2500回とかどんだけ開発してたんでしょうね!?

2019年

  • 4月:1049
  • 5月:3610(+2561)
  • 6月:4098(+488)
  • 7月:4098(+0)
  • 8月:4578(+480)
  • 9月:6066(+1448)
  • 10月:7337(+1271)
  • 11月:7704(+367)
  • 12月:7766(+42)

2020年

  • 1月:8164(+398)
  • 2月:9614(+1450)

実装予定

折り返し実装完了

実装実績

折り返しハイライト実装中
ハイコントラストテーマ作成

開発状況

折り返しがまだ終わっていないのですが、かなりいい感じに進んでいます。今でも現在の仕様が正しいのかどうかはわかりませんが、基本的に内部は折り返していない座標で動作させる。そして描画の時だけ折り返し情報を使って描画するのが一番良さそうでした。

最初にガッツリ仕様を検討していなかったので、カーソルの位置が折り返している座標で持ったり、折り返していない座標で持ったりしていたので、最終的には破綻しました。

なので内部では折り返していない座標でしか持たないようにしました。同じメソッドを何度も何度も修正しています。手戻りの多いのこと。

折り返していない座標でしか持たないため、困ったことも発生しました。それは、折り返している行の行末の扱いです。

例えば 1 行目の b の後ろの座標は y=0、x=36 です。次に折り返している 2 行目の l の位置も y=0、x=36 になります。そうなんです。同じ座標で異なるカーソルの位置が存在します。さらに折り返さない座標で管理するとどっちにカーソルを設定したらいいのかわからなくなりました。

折り返している座標で管理する場合は、1行目は y=0、x=36、2行目は y=1、x=0で扱えるはずなので、カーソルはどっちに設定すればいいのかわかるはずです。

色々やれば制御できそうな気がしたのですが、現時点では折り返しているときは行末にカーソル移動できなくしました。ENDキーの場合は、b の前にカーソルを移動、マウスで b の後ろをクリックすると l の前にカーソルが行くようにしました。

あとは VS Code にあるハイコントラストっぽいテーマを作成しました。個人的にはダークモードよりも気に入っています。

おわりに

折り返しの実装も終わりが見えてきました。これが終われば動作検証してから次の対応を考えようと思います。まだまだ続きます。

コメント

タイトルとURLをコピーしました