source と header をペアにする
巨大なヘッダー proto.h に大量の関数が詰め込んである。 fm.h に主要な型が詰め込んである。
これらを適当に分割して、source と header のペアのモジュールに分割したい。 この分割作業に前段で実施した、typedef struct の除去が効果がある。 ポインター参照しかない型を安心して前方宣言できる。
w3m のコア
あと file.cpp(元 file.c)が特に巨大で 7000 行くらいある。 ここに html パースと 2次元レイアウトのコアがある。 この部分をなるべく壊さずに活かしたいのです。 グローバル変数をクラスのメンバー変数に改造するとかして、 多重に動かせるようにはしたい。
fm.h を分配
主に型を基準に、xxx.cpp と xxx.h のペアになるように分配した。
元が 1200 行くらいで、マクロをカットして 600 行、 そこから型を分配して 300行くらいに削減。 global 変数がここに配置してある。これらも型のソースに分配して fm.h は無にする予定。
グローバル設定
rc => lua にしたい
search, linein 系
search => 軽量化 USE_MIGEMO を削除
linein => main loop に手を入れる前にこっち先にモジュール化するとよさそう。 readline みたいな lineeditor.
regex
Command / mainloop / keymap
main
mainloop => libuv 化したい。setjmp/lognjmp を回避して goto を回避して単純化したい。
menu => 軽量化。削除予定
command => lua にしたい
keymap => lua にしたい
Buffer 系
Buffer
Line
Anchor
AreaMap
html parse 系
readbuffer => utf8 対応
table
form
frame => 軽量化。削除予定
etc
file
IO http
istream
url
httprequest
cookie
term display
display
terms => utf8 対応