カレンダーデータを主にEmacs外で管理しつつ、Emacsのカレンダーやダイアリーでも確認したい場合は、ダイアリーファイルからiCalendarファイルを取り込むことで実現できます。
例えば、外部サーバーからAppointments.icsというファイルにカレンダーをダウンロードしたとしましょう。その場合、次のような行を記述することで、このファイルを日記に組み込むことができます。
#include "path/to/Appointments.ics"
日記ファイル内です。また、そのファイル内のデータを日記エントリとして表示し、カレンダーにマークするためのフックもいくつか設定する必要があります:
(add-hook 'diary-mark-entries-hook
#'diary-mark-included-diary-files)
(add-hook 'diary-nongregorian-marking-hook
#'diary-icalendar-mark-entries)
(add-hook 'diary-list-entries-hook
#'diary-include-other-diary-files)
(add-hook 'diary-nongregorian-listing-hook
#'diary-icalendar-display-entries)
これにより、Appointments.ics 内のイベント、タスク、日記エントリは、カレンダーから日記を表示した際に、該当する日付に表示されるようになります。日記の表示を参照してください。
この方法の利点は、カレンダーサーバーと日記ファイルの間でデータを同期させる必要がない点です。これは、日記形式とiCalendar形式の間で定期的にインポート・エクスポートを行うよりも、シンプルで信頼性が高くなります。
また、diary-icalendar-mailcap-viewer
関数を使用すれば、iCalendar
添付ファイルをダイアリーファイルにインポートすることなく、メールメッセージ内に表示することも可能です。この関数は、例えば変数 mailcap-user-mime-data
に追加できます。詳細については、そのドキュメント文字列を参照してください。
iCalendarエントリの表示には、インポート時と同じ基盤が使用されるため、インポート形式をカスタマイズすると、表示されるエントリの形式も変更されます。iCalendarデータを日記エントリとしてインポートするを参照してください。