ダイアリーの表示は、ダイアリーエントリーのリストを準備して、変数diary-display-function
で指定された関数を実行することにより機能します。デフォルト値のdiary-fancy-display
は、ダイアリーエントリーを表示するためだけに存在する特別なバッファーにコピーして、ダイアリーエントリーと休日を表示します。ダイアリーエントリーを別のバッファーにコピーすることにより、表示されるテキストの見栄えをよくする機会
— たとえばダイアリーエントリーに適用される日付順にソートするなど — が提供されます。
通常、fancy
diary(装飾的なダイアリー)バッファーは、たとえその日が休日であっても、ダイアリーエントリーがない日は表示しません。そのような日をfancy
diaryバッファーに表示したいときは、変数diary-list-include-blanks
をt
にセットします。
fancy diaryバッファーはViewモードを有効にします (Viewモードを参照してください)。
他の表示方法のdiary-simple-display
は、実際のダイアリーバッファーを表示して、適合しないエントリーを隠すために非表示のテキストを使います。休日はモードラインに表示されます。この方法の有利な点は、ダイアリーファイルを直接編集して、変更を保存できることです。しかし、この方法はfancy方式のように柔軟ではありません。たとえば、これはエントリーのソートはできません。他の不利な点としては、非表示のテキストが混乱の元となることがある点です。たとえば、他の場所に張り付けるためにリージョンのテキストをコピーした場合、非表示のテキストも含まれます。同様に、目に見えるダイアリーバッファーは一種の幻影なので、単にバッファーを印刷しても、スクリーンで表示されているものが印刷されるわけではありません。
この理由により、ダイアリーバッファーのハードコピーを見た通りに印刷する特別なコマンドM-x
diary-print-entriesがあります。これは、どちらの表示方式でも機能します(たとえfancy
displayバッファーが他のバッファーと同じようにプリントできるとしても)。週の各曜日のハードコピーを印刷するには、ポイントを週の初めの曜日に移動して7
dとタイプし、それからM-x
diary-print-entriesを実行します。通常のように、休日が含まれる場合、表示は若干遅くなります。変数diary-show-holidays-flag
をnil
にセットすることにより、速度を改善することができます。
このコマンドは、ダイアリーバッファーで現在可視なダイアリーエントリーだけを含んだ一時的なバッファーを作成します。単なる表示とは異なり、他の無関係なエントリーは隠されるだけではなく、まったく含まれません。バッファーを作成したら、フックdiary-print-entries-hook
が実行されます。このフックのデフォルト値はコマンドlpr-buffer
で、これはデータを直接プリンターに送信します
(ハードコピーの印刷を参照してください)。
違うコマンドを印刷に使いたい場合は、単にこのフックの値を変更するだけです。他のコマンドには、たとえば行を日付と時刻順に再配置することなどが含まれるかもしれません。
simpleダイアリーウィンドウで表示されているときと同じように、ダイアリーエントリーを編集できますが、表示されているバッファーには、表示から隠されている部分が含まれていることを覚えておくのは重要です。これは、たとえばC-f
(forward-char
)は表示されている最後の行にポイントを移動できますが、実際は隠されている行の途中かもしれないことを意味します。
simple表示でダイアリーエントリーを編集するときは注意してください。表示されている行の途中での行の追加、文字の追加や削除は問題になりませんが、行の最後で編集する場合は、意図した通りにはならないでしょう。行の削除は、それに続く他の非表示のエントリーを削除するかもしれません。simple
diaryバッファーで編集する前に、s (diary-show-all-entries
)でファイル全体を表示するのが最善です。