何度か w3m の改造に挑戦しているのだが、 なかなか使える状態にならない。
そもそも規模が大きすぎるためだと、ようやくわかってきた。 いままではなるべく元の機能を残そうとしていたが、 大胆に使わない機能を削除することで量を減らすことが必要だ。
目標
小さくして、改造しやすくする。 keymap とかを lua に移動して core を小さくする。 tab とか非同期更新にする。
Windowsでも動くようにする
select
, ioctrl
, signal
termcap/curses
依存を置き換えればできる。
これらは目処がついて、libuv
や ftxui
あたりで代替することを計画。
ついでに、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画面
- 複数キーのキーマップ