マーク処理メモ (elmo-mark 枝) by teranisi * wl-summary-*-mark => elmo-msgdb-*-mark に変数名を変更。 * elmo-folder-list-messages に引数 in-msgdb を追加。 * answered マークの追加 answered-uncached なら A answered-cached なら & unread-uncached なら U unread-cached なら ! new なら N read-uncached なら u read-cached なら ' ' * filter, search の検索条件 flag:unread flag:important flag:answered flag:digest flag:any という条件をかけるようにする。 * msgdb のマーク処理 フィルタフォルダ, マルチフォルダでは、オリジナルの msgdb も読み書きする。 msgdb とサマリビューは open 時に sync する。 * seen-list の廃止 seen-list は廃止し、{"" => "mark"} のハッシュテーブルとする。 elmo-flag-table-load: id-mark-table があれば使う。cons cell の list を hashtable にする。 なければ、seen-list をさがす => seen-list ファイルは消す elmo-flag-table-save: (cons message-id mark) のリストとしてセーブ * (elmo-folder-search-requires-msgdb-p folder condition) を設け、filter フォルダで t なら original msgdb を利用する。 nil なら original は利用しない。 * マークの更新 マークは elmo-folder-mark-as-read、elmo-message-set-cached などにより変更する。 更新されたマークは、操作のあとで elmo-message-mark を呼び出すことにより 得る。 ---- ここまで DONE ---- * 仮想フォルダの msgdb の扱い pipe, filter, multi では、オリジナルフォルダの msgdb を操作する。 elmo-folder-check でオリジナルを sync する。 elmo-folder-pack-number でオリジナルの番号入れ換えをする。 (--> 次にオリジナルを visit したときに sync-all が必要) msgdb への操作をなるべく抽象化する。 * global mark の管理 elmo-marked-message-folder を作り、そこに置くようにする。 マークを付けると、elmo-marked-message-folder に加える。 マークを消すと、elmo-marked-message-folder から消える。 elmo-marked-message-folder から消すと、元 message のマークが消える。 元 message がなかったら、消えるだけ。 元 message の情報 (folder, number, message-id あたり) を保存しておく。 元 message が消えても、elmo-marked-message-folder には残る。 元 message が移動しても、elmo-marked-message-folder には残る。 update したときに、elmo-marked-message-folder にあればマークを付ける。