Emacs org-modeを使ってみる: (6) アジェンダ表示

このエントリーをはてなブックマークに追加

今回はアジェンダ(行動計画)表示について,使い方をまとめてみる.
なおUbuntu 8.04 LTSとEmacs22上で, org-6.34c (2010年1月10日リリース)の利用を前提にしている.

設定

「(1) インストール」での設定に加えて,.emacs等の初期化ファイルに以下を追加する.

;; アジェンダ表示の対象ファイル
(setq org-agenda-files (list org-directory))
;; アジェンダ表示で下線を用いる
(add-hook 'org-agenda-mode-hook '(lambda () (hl-line-mode 1)))
(setq hl-line-face 'underline)
;; 標準の祝日を利用しない
(setq calendar-holidays nil)

サンプル

以下では,次のようなサンプルを例として説明する.

* 第1回ORG会議 <2010-02-26 金 13:30-14:30>
** TODO [#A] 資料準備
   DEADLINE: <2010-02-25 木> SCHEDULED: <2010-02-22 月>
** TODO [#B] 開催通知
   DEADLINE: <2010-02-25 木> SCHEDULED: <2010-02-24 水>
* 第2回ORG会議 <2010-03-05 金 13:30-14:30>
** WAIT 出席確認 [1/3]
   DEADLINE: <2010-03-01 月>
   - [X] 一郎
   - [ ] 二郎
   - [ ] 三郎

TODOをアジェンダ表示

org-modeに限らず, Emacs利用中ならいつでも「C-c a t」ですべてのTODO一覧を表示できる.
対象となるのは,~/org/ディレクトリ中のすべてのorgファイルである(org-agenda-files).

Global list of TODO items of type: ALL
Available with `N r': (0)ALL (1)TODO (2)WAIT (3)DONE (4)SOMEDAY
  notes:      TODO [#A] 資料準備
  notes:      TODO [#B] 開催通知
  notes:      WAIT 出席確認 [1/3]

最初のTODOの行にカーソルを移動すると,メッセージ領域に「notes.org/第1回ORG会議 <2010-02-26 金 13:30-14:30>」と上位の見出しが表示される.
この状態で「C-c C-t」でTODO状態を変更したり,「S-UP」や「S-DOWN」で優先度を変更することができる.「C-c C-d」や「C-c C-s」での締切り日や予定日の設定も可能だ.
また「SPC」で元のorgファイルの表示,「RET」で元のorgファイルへの移動が可能である.

列表示

「C-c C-x C-c」をタイプすると, TODO状態,優先度,タグなどが一覧表示され,簡単に編集できる.

ITEM                      | TODO | PRI | T |
Global list of TODO items of type: ALL
Available with `N r': (.. |      |     |   | 
資料準備                  | TODO | A   |   | 
開催通知                  | TODO | B   |   | 
出席確認 [1/3]            | WAIT |     |   | 

週単位のアジェンダ表示

org-modeに限らず, Emacs利用中ならいつでも「C-c a a」で週単位のアジェンダ(行動計画)を表示できる.

Week-agenda (W08):
Monday     22 February 2010 W08
  notes:      Scheduled:  TODO [#A] 資料準備
Tuesday    23 February 2010
Wednesday  24 February 2010
  notes:      Scheduled:  TODO [#B] 開催通知
Thursday   25 February 2010
  notes:      Deadline:   TODO [#A] 資料準備
  notes:      Deadline:   TODO [#B] 開催通知
Friday     26 February 2010
  notes:      13:30-14:30 第1回ORG会議 
Saturday   27 February 2010
Sunday     28 February 2010

「f」をタイプすると次の週,「b」をタイプすると前の週に移動する.
「v d」,「v w」,「v m」で日単位,週単位,月単位の表示に切り替えることができる.
日単位の表示の場合,時間間隔も表示される.

Day-agenda (W08):
Friday     26 February 2010
               8:00...... ----------------
              10:00...... ----------------
              12:00...... ----------------
  notes:      13:30-14:30 第1回ORG会議 
              14:00...... ----------------
              16:00...... ----------------
              18:00...... ----------------
              20:00...... ----------------

この時間間隔は,org-agenda-time-grid 変数の設定で変更可能である.以下のようにすれば,09:00から17:00までの一時間毎の間隔になる(「M-x org-customize RET」でも設定できる).

(setq org-agenda-time-grid
  '((daily today require-timed)
    "----------------"
    (900 1000 1100 1200 1300 1400 1500 1600 1700)))

TODO状態や優先度の変更,締切り日や予定日の設定,元のorgファイルの表示,列表示なども, TODOのアジェンダ表示と同様に行える.

Diaryのマージ

Emacs diaryで設定した予定を週単位のアジェンダ表示にマージすることができる.
iCalendar形式のカレンダーは,以下のようにすればdiary形式に変換可能である.

  $ emacs --batch --execute '(icalendar-import-file "file.ics" "diary.utf8")'
  $ nkf -W -e diary.utf8 >~/diary

diary形式のカレンダーは,アジェンダ中で「D」をタイプすることで表示される.

アジェンダのエクスポート

「C-x C-w」とタイプし,ファイル名を入力するとアジェンダを様々な形式で保存できる.

拡張子 形式
.html または .htm HTML (htmlizeを使用)
.ps Postscript (ps-print-buffer-with-facesを使用)
.pdf PDF (ps-print-buffer-with-facesとps2pdfを使用)
.ics iCalendar
その他 テキスト

HTMLへのエクスポートには htmlize.el が必要である.また,Postscriptの場合,そのままの設定では日本語は文字化けするので,以下のように設定する.

;; Postscriptエクスポート用
(setq ps-multibyte-buffer 'non-latin-printer)
(setq ps-right-header
      '("/pagenumberstring load" ps-time-stamp-yyyy-mm-dd ps-time-stamp-hh:mm:ss))

さらにPDFの場合 ps2pdf コマンドが必要である.

  • PSあるいはPDFでのエクスポートの場合,その前に一度HTMLでエクスポートしないとエラーが表示される.原因不明.....

主なキーバインドのまとめ

キー 処理
C-c a t TODOをアジェンダ表示
C-c a a 週単位のアジェンダ表示
アジェンダ表示共通
キー 説明
C-c C-t TODO状態を変更
S-DOWN または - 優先度を下げる
S-UP または + 優先度を上げる
C-c C-d 締切り日(DEADLINE)の設定
C-c C-s 予定日(SCHEDULED)の設定
C-k 予定の削除
SPC 元のorgファイルを表示
RET 元のorgファイルへ移動
s 元のorgファイルを保存
r または g アジェンダ表示のリフレッシュ
C-x C-w アジェンダのエクスポート
C-c C-x C-c 列表示
TODOのアジェンダ表示
キー 説明
1 r TODOのみをアジェンダ表示
2 r WAITのみをアジェンダ表示
3 r DONEのみをアジェンダ表示
4 r SOMEDAYのみをアジェンダ表示
週単位のアジェンダ表示
キー 処理
f 次の週
b 前の週
j 表示日の指定
v d 日単位の表示
v w 週単位の表示
v m 月単位の表示
v y 年単位の表示
D diaryの表示切換え