テキストエディターの開発とゆー新企画です。Brynhildrのログを表示する時は何を使われています?
そもそもBrynhildrのログ機能を使っている人が少ないとは思ってるんですが、たまたまいつも使っている端末とは別の端末でBrynhildrのログを表示する際に、ログをメモ帳で開いたんですが、ちょっと何か違うなと思ったもので。なんかこースマートじゃないなと。
実は、10年くらいに前にテキストエディターを自作した事がありまして、今でもそれをメインに使ってるんですよね。
インタビューで「テキストエディターは何を使われています?やっぱり秀丸ですか?それともTeraPadですか?もしかしてMIFESですか?」と聞かれたら「いえ、自作のテキストエディターです。」と答えようかと思ってますけど、まだチャンスは来てないです。
そんな自作のテキストエディターをメモ帳の代わりに使ってるんです。あと、VisualStduioを立ち上げるまでもない時とかもですね。あと、PHPのコードを書く時のメインエディターとして利用してますね。てなくらいに使い込んでる自作のテキストエディターなんです。
その自作のテキストエディターを入れていない端末でログを開いたのですが、Brynhildrにこのテキストエディター機能を実装してはどうかと。正確にはログビューワーですかね。ま、内容も見やすいよーに変更もできたら良いかなと思ったんでやっぱりテキストエディターかと。
そんなワケで新たにテキストエディターをゼロからこしらえてみようかと。バカかと。
オープンソースのテキストエディターなんてゴロゴロしてるし、エディットコントロールだってゴロゴロしてるし、なんで今更ゼロから作ろうとしてるんだ、俺はと。
そんな現実を全てスルーして、できるのであれば自分で作るとゆー自分の本能に従う迄です。その勢いだけでゼロからリモートデスクトップアプリとか作ってますし。SkyPhoneもその部類ですし。
て事でかなりの開発工数が推測され、完成時期がいつになるかはすこぶる不明でする。壮大な計画すぎます。
完成図的には上のイメージですかね。いや背景色とか文字色とか今風にしてみましたけどあくまでもイメージ図なんで。文字の周りがうっすらぼんやりしてる感じがかっこええのかと思ったところがポイントです。
さて。
自作テキストエディターを作ったのが10年以上前なんで、その頃はMFCをバリバリ使ってたんですが、最近ではMFCは全く使わない方向です。で、VisualStduioのExpressEditionがメインなんで、以前のソースコードを修正してもビルドができないんでそれを何とかしたいなと。あと、スクロールとか更新の際に画面がチラつくのとか、もっと軽くしたいとか、部分選択(ALT押しながら列の真ん中の行の真ん中だけ選択とか)とか、ソースコードの場合は関数とか選択できてそこにジャンプとかできたらいいなぁ。色々あるんですけどチマチマやっていこうかと。
ちなみに、前作の機能でいらないなーと思った機能が、
・可変幅フォントの対応(固定幅固定)
・印刷機能(ペーパーレス推進)
・オプション画面(設定ファイルで対応)
んなとこですかね。ガッサーと省いていきます。
その前作のテキストエディターのソースコードをベースに修正して何とかビルドしよーかとも思ったんです、が。わー、CStringとかstd::stringに置き換えても全然動かーん。そもそも自分の書いたソースコードの書き方がひどい。リモートデスクトップのソースコードの方が綺麗に書いてあるわ、と錯覚するレベルですよこれは。なんちゅー変数名使ってるんや。全然忘れたし。こりゃ作り直した方がはえーわ。てな事にしました。
さて。
何をベースにしようかと思ったんですが、先述した通り今回はフレームワークは一切を利用しません。全て自作です。前作もフォームとか使っているもののほぼほぼ自作でしたしね。話題の「.net」も利用しません。今回はWin32APIがメインです。今回はってか今回も。TextOutで文字をデバイスコンテキストに描画するぜぇ、ってレベルです。もちろんスクロールだって自分で何とかします。ほら、レガシー感が満載ですよね。ところで文字をうっすらぼんやりてどーやんだ?
とりあえずCreateWindowでウインドウを生成します。詳細は省きます。
長くなったんでつづく!