« meltin.net - emacs hacks | トップページ | Angel's Egg - the home page of Eduardo Ochs (a.k.a. Edrx) »

diary-to-howm 計画

そういうのを作ってみようかと、いろいろ調べてみた。

なぜ必要か。

diary は、曜日名による予定、毎月同じ日の予定、ある日数おきの周期的予定などを扱うことができる。これは、howm にはないので、diary でやるのがよかろうと。

それから、calendar と連動して、予定のある日に色をつけたりできる。howm では、一行ずつの表示なので、味気ないっていうか、何週間か先のことが見えにくい。

メモは、いろいろなファイルに書き散らしてもいいような気がするが、予定は、ひとつのファイルの方がなんとなく安心。バックアップもファイルひとつコピーするだけだし。

● list-diary-entries について (diay-lib.el) ==> (1)
● diary-file について 特に各エントリーの形式について (calendar.el) ==> (2)
● howm とうまく連携するための diary-file の書き方について ==> (3)

(1) list-diary-entries について (diay-lib.el)

diary-lib.el 中で定義されている list-diary-entries は、下のように使う。

(list-diary-entries date number)

引数 date から引数 number 日分の日記のエントリーを日付順にして、リストとして返す。リストのそれぞれのエントリーは、((month day year) string specifier) のような形式。(month day year) は、そのエントリーの日付、string は、そのエントリーの内容、specifier は、いろいろ。(元のエントリーの diary-file での形式の日付が入るみたい。)この関数が偉いのは、diary-block などの関数を理解して、ちゃんと日付に変換してくれること。diary-block などについては、calendar.el 参照のこと。

calendar.el の中で定義されている calendar-current-date を使えば、現在の日付を得られる。なので、例えば、下の S 式を評価すると。今日から365日分の日記のエントリーのリストが得られる。

(list-diary-entries (calendar-current-date) 365)

list-diary-entries の結果得られるリストをいろいろ加工すれば、面白いことができる。

例えば、list-diary-entries の結果得られるリストの car を次々に取り出す。取り出したものは、、((month day year) string specifier) の形式なので、こいつの car を取り、適当に加工すれば、日付が出来上がり。cadr は、エントリーの内容。エントリの先頭には、時刻を入れる場合もある。(下記、「diary-file について 特に各エントリーの形式について」参照)なので、これを切り出すようにすれば、時刻つきのエントリーも作れる。

(2) diary-file について 特に各エントリーの形式について

エントリーは、それぞれ一行で書いてもいい。例えば下のように。これは、default の American style。

12/22/1988 Twentieth wedding anniversary!!
&1/1. Happy New Year!
10/22 Ruth's birthday.
21: Payday
Tuesday--weekly meeting with grad students at 10am
Supowit, Shen, Bitner, and Kapoor to attend.
1/13/89 Friday the thirteenth!!
&thu 4pm squash game with Lloyd.
mar 16 Dad's birthday
April 15, 1989 Income tax due.
&* 15 time cards due.

下のように最初の行に日付のみ(行末に空白も入れない)で、続く行に複数行のエントリーを入れることも。日付の行以外は、行頭に空白文字でインデントする必要あり。

02/11/1989
Bill Blattner visits Princeton today
2pm Cognitive Studies Committee meeting
2:30-5:30 Lizzie at Lawrenceville for `Group Initiative'
4:00pm Jamie Tappenden
7:30pm Dinner at George and Ed's for Alan Ryan
7:30-10:00pm dance at Stewart Country Day School

ただし、これは、list-diary-entries の返り値に複数行のエントリーを作るので、howm とはなじまないか?複数行のエントリーを処理するコードを書けばいいが、面倒くさい。

(3) howm とうまく連携するための diary-file の書き方について

エントリーの頭に @ などをつけることにする。エントリーの頭とは、日付、そしてもしあれば、時刻の後ろ。で、これを、list-diary-entries の car の cadr の中から切り出すような関数を書いておく。つまり例えば、下のように。

Feb 10, 2004 +7 一応締め切り
Mar 5, 2004 @ 友人がくる
Mar 5, 2004
14:30-16:00 @ 授業
Feb 4, 2004 howm 用のマークの無い行も許容。

で、これを加工して、下のようなファイルを出力するような関数を書く。

[2004-02-10]+7 一応締め切り
[2004-02-04] howm 用のマークの無い行も許容。
[2004-03-05]@ 友人がくる
[2004-03-05]@ 14:30-16:00 授業

以上、基本設計。

|

« meltin.net - emacs hacks | トップページ | Angel's Egg - the home page of Eduardo Ochs (a.k.a. Edrx) »

emacs 関係」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/11083/159570

この記事へのトラックバック一覧です: diary-to-howm 計画:

« meltin.net - emacs hacks | トップページ | Angel's Egg - the home page of Eduardo Ochs (a.k.a. Edrx) »