何度か w3m の改造に挑戦しているのだが、 なかなか使える状態にならない。

そもそも規模が大きすぎるためだと、ようやくわかってきた。 いままではなるべく元の機能を残そうとしていたが、 大胆に使わない機能を削除することで量を減らすことが必要だ。

目標

小さくして、改造しやすくする。 keymap とかを lua に移動して core を小さくする。 tab とか非同期更新にする。

Windowsでも動くようにする

select, ioctrl, signal termcap/curses 依存を置き換えればできる。 これらは目処がついて、libuvftxui あたりで代替することを計画。 ついでに、longjmp による例外処理もいったんやめて libuv で同等の機能を代替する。

libwc / BohemGC をやめて utf-8 決めうちに

BohemGC をやめて、 std::string とかに変えていきたいのだが、 BohemGC が各所で使われていて容易にはできない。 libwc の文字変換の中継表現が、 wtf とか ces などの名がついていたので調べていたのだがよくわからなかった。 名前が被っているだけで別物らしく、unicode と エスケープシーケンスの文字装飾flag を or で合体したものかもしれない。 libwc を残すのを諦めて、同時に色やアンダーラインなどもいったんやめる。 こうすると、無変換の utf-8 string が流れるようにできそう。 プレーンテキストの二次元レイアウトの保存に注力する。

io 回りの複雑さを減らす

  • pager 機能
  • frame 関連
  • http/https 以外の通信機能

減らす機能

  • ifdef 削り
  • コマンドライン
  • Option画面
  • 複数キーのキーマップ