Previous: , Up: Diary   [Contents][Index]


31.10.5 特別なダイアリーエントリー

カレンダーの日付にもとづくエントリーに加え、ダイアリーファイルは記念日のような定期的なイベントにたいする、sexpエントリー(sexp entries: S式エントリー)を含むことができます。これらのエントリーは、Emacsがダイアリーファイルをスキャンすることにより評価される、Lisp式(sexp)にもとづきます。日付のかわりに、sexpエントリーは‘%%’と、その後ろに続くLisp式を含んでおり、Lisp式はカッコで始まりカッコで終わらなければなりません。Lisp式は、エントリーが適用される日付を決定します。

Calendarモードは、一般的に使用される特定のsexpエントリーを挿入するためのコマンドを提供します:

i a

選択された日付にたいして、記念日ダイアリーエントリー(anniversary diary entry)を追加します。

i b

カレントリージョンにたいして、ブロックダイアリーエントリー(block diary entry)を追加します。

i c

その日付に開始される、周期的ダイアリーエントリー(cyclic diary entry)を追加します。

特定の日付の記念日に適用されるダイアリーエントリーを作成したい場合は、ポイントをその日付に移動してi aコマンドを使用します。これはダイアリーファイルの最後の部分を別のウィンドウに表示して、記念日の記述を追加します。その後ダイアリーエントリーの残りの部分をタイプできます。エントリーは以下のようになります:

%%(diary-anniversary 10 31 1948) Arthur's birthday

このエントリーは、1948年以降の任意の年の10月31日に適用されます。‘10 31 1948’は日付を指定します(ヨーロッパ形式またはISO形式を使用している場合、入力順は月、日、年とは異なります)。この式が開始年を要求する理由は、ダイアリーの上級機能が、経過年数を計算できるようにするためです。

ブロックダイアリーエントリーは、特定の連続する日付範囲に適用されます。以下は2012年6月24日から2012年7月10日までの、すべての日付に適用されるブロックダイアリーエントリーです:

%%(diary-block 6 24 2012 7 10 2012) Vacation

6 24 2012’は開始日付を示し、‘7 10 2012’は終了日付を示します(繰り返しになりますが、ヨーロッパ形式またはISOカレンダー形式を使用している場合、月、日、年の順は異なります)。

ブロックエントリーを入力するには、開始と終了の範囲となる2つの日付にポイントとマークを配し、i bとタイプします。このコマンドは、ダイアリーファイルの最後の部分を別のウィンドウに表示して、ブロックの記述を挿入します。その後で、ダイアリーエントリーをタイプすることができます。

周期的(cyclic)ダイアリーエントリーは、ある固定された日数の期間繰り替えされるエントリーです。これを作成するには、開始日を選択してi cコマンドを使用します。コマンドは期間の長さの入力を求め、それから以下のようなエントリーを挿入します:

%%(diary-cyclic 50 3 1 2012) Renew medication

このエントリーは、2012年3月1日以降の50日間適用されます。‘3 1 2012’は開始日の指定です(ヨーロッパ形式またはISOカレンダー形式を使用している場合、月、日、年の入力順は異なります)。

これら3つのコマンドはすべて、ダイアリーエントリーをマークします。マークしないダイアリーエントリーを挿入するには、プレフィクス引数を与えます。たとえばC-u i aは、マークされない記念日ダイアリーエントリーを作成します。

カレンダーでsexpダイアリーエントリーを作成すると、カレンダーウィンドウで表示されているすべての日付にたいして個別にチェックしなければならないので、時間がかかるかもしれません。そのため、可能ならsexpダイアリーエントリーを、(‘&’を使って)マークされないようにするのがよいでしょう。

その他の複雑なsexpエントリーとして、浮動(floating)ダイアリーエントリーがあります。これは日、週、年のオフセットで指定される、定期的に発生するイベントを指定するためのものです。これはcronにより解釈されるcrontabエントリーに類似しています。以下はマークされない、浮動ダイアリーエントリーで、11月の第4木曜日に適用されます。

&%%(diary-float 11 4 4) American Thanksgiving

11は11月(11番目の月)を指定し、4は木曜日(週の第4日。日曜日は0)、2番目の4は第4週(1は第1週、2は第2週、-2は最終週から2番目の週)を指定します。月は1つの月、または月のリストを使用できます。したがって上記の11を‘'(1 2 3)’に変更すると、このエントリーは1月、2月、3月の第4木曜日に適用されることになります。月がtの場合、そのエントリーは年の各月に適用されます。

標準的なsexpダイアリーエントリーは、フェイス名またはカレンダーをマークするときに使用する1文字の文字列を指定する、オプションのパラメーターを受け取ります。一般的には、sexpダイアリーエントリーは、それらが適用されるときを決定するために、任意の計算を処理することができます。 Sexp Diary Entriesを参照してください。