日記の表示機能は、日記エントリのリストを準備し、変数 diary-display-function
で指定された関数を実行することで動作します。デフォルト値の diary-fancy-display
では、日記エントリと祝日を、表示専用の特殊なバッファにコピーして表示します。日記エントリを別のバッファにコピーすることで、表示テキストを変更して見栄えを良くすることが可能になります—例えば、エントリを適用日付順に並べ替えるといった操作が行えます。
通常、ファンシー日記バッファでは、たとえ休日であっても日記のエントリがない日の表示は行われません。このような日もファンシー日記バッファに表示させたい場合は、変数
diary-list-include-blanks に t を設定してください。
高機能なダイアリーバッファにより、ビューモードが利用可能になります(ビューモードを参照)。
代替表示方式 diary-simple-display
では、実際のダイアリーバッファが表示され、不可視テキストを用いて該当しないエントリが非表示になります。祝日はモードラインに表示されます。この方式の利点は、バッファを編集し、その変更内容をダイアリーファイルに直接保存できる点です。ただし、この方式は高機能な方式ほど柔軟ではありません。例えば、エントリの並べ替えはできません。もう一つの欠点は、不可視テキストが混乱を招く可能性があることです。例えば、テキストの一部をコピーして別の場所に貼り付ける際、不可視テキストまで含まれてしまうことがあります。同様に、表示されているダイアリーバッファは擬似的なものであるため、単にバッファを出力しただけでは、画面上に表示されている内容がそのまま出力されるとは限りません。
このため、日記バッファをそのままハードコピーとして出力する専用コマンドが用意されており、そのコマンドはM-x
diary-print-entriesです。これはどちらの表示方式でも動作しますが、ファンシー表示を使用すれば、他のバッファと同様に出力することも可能です。1週間分の日別日記をハードコピーするには、週の初日にポイントを置き、7 dと入力してからM-x
diary-print-entriesを実行してください。通常どおり、祝日が含まれると表示速度がわずかに低下します。変数diary-show-holidays-flagをnilに設定することで、表示速度を上げることができます。
このコマンドは、ダイアリーバッファで現在表示されているダイアリーエントリのみを含む一時バッファを用意します。単純な表示とは異なり、その他の無関係なエントリは単に非表示になっているのではなく、実際に存在しない状態になります。バッファを用意した後、フック
diary-print-entries-hook
を実行します。このフックのデフォルト値では、コマンド lpr-buffer
を用いてデータを直接プリンターに送信します(ハードコピーの印刷
を参照)。別のコマンドを使用して印刷したい場合は、このフックの値を変更してください。その他の用途としては、例えば、行を日付と時刻順に並べ替えるといったことが考えられます。
簡易日記ウィンドウに表示されている通りに日記エントリを編集できますが、表示されているバッファには日記ファイルの全体が含まれており、その一部が非表示になっている点に注意が必要です。つまり、例えば C-f (forward-char)
コマンドを使用すると、行末に見える位置にポイントを置くことができますが、実際にはそれは非表示になっている行の途中ということになります。
簡易表示で日記エントリを編集する際はご注意ください!
行の途中に行を追加したり、文字を挿入・削除したりしても問題は起きませんが、行末での編集は期待通りに動作しない場合があります。行を削除すると、その後に続く他の非表示エントリまで削除されてしまうことがあります。簡易日記バッファを編集する前に、s (diary-show-all-entries)
でファイル全体を表示しておくのが最善です。