[emacs][ui] calfw の org-agenda 対応 calfw-org.el

(2011/07/25 追記: 設定方法が多少変わっていますので最新の記事を参照してください→[emacs][ui] Emacs用カレンダー calfw v1.2 リリース - 技術日記@kiwanami)

大変遅くなりましたが、要望の多かった org-mode の calfw 対応をしました。
(2011/06/20 追記:自分の知らなかったパターンが表示されないバグがありましたので calfw-org.el を更新しました。@takaxpさんありがとうございました!)

org-agenda の週表示を calfw で表示出来ます。



左が元の org-agenda 、右が calfw での表示

ついでに、1日に複数の予定があったときに正しく表示されない場合があるバグと、バイトコンパイルの問題で動かない場合がある問題の修正を行いましたので、今まで使っていた人も更新しておいた方が良いと思います。(バージョン v0.2)

インストール

新しくインストールされる方は、以前の記事も参考にしてみてください。

;; auto-installを使う場合
(auto-install-from-url "https://github.com/kiwanami/emacs-calfw/raw/master/calfw.el")
(auto-install-from-url "https://github.com/kiwanami/emacs-calfw/raw/master/calfw-org.el")

org-agenda をカレンダーで表示するには、 Emacs の設定ファイルの適当なところに以下のように2行加えます。

(require 'calfw-org)
(cfw:install-org-schedules) 

後は、 M-x cfw:open-org-calendar とすると、カレンダーで表示されるはずです。グローバルキーバインドに割り当てておけば、一発で開くことが出来て多分便利です。

簡単な使い方

カレンダーの中では以下のようなキーバインドが使えます。

日付移動
→, C-f, l 次の日へ
←, C-b, h 前の日へ
↑, C-p, k 前の週へ
↓, C-n, j 次の週へ
C-a, ^ 週の頭へ
C-e, $ 週末へ
[home] 月の初めへ
[end] 月末へ
[PgUp], < 前の月へ
[PgDown], > 次の月へ
t 今日へ
g 日付指定移動 (YYYY/MM/DD)
操作
SPC その日の予定の一覧をポップアップ(トグル)
r 表示更新
[予定クリック] orgファイルにジャンプ

これらは cfw:calendar-mode-map で定義されていますので、カスタマイズすることが出来ます。

スペースキーを押すと選択している日付の予定を一覧でポップアップします。再度スペースキーを押すと元に戻ります。(Mac の Quick Look のイメージ)
ポップアップの中で n,p を押すと前後の日付に移動できます。ポップアップの中のキーについては cfw:details-mode-map でキーバインドを調整できます。



その日の予定一覧 (Quick Look 的動き)

カレンダー上で予定をマウスでクリックしたり、このポップアップ一覧の中の予定をクリック、もしくはカーソールを移動してエンターを押すと、その予定の org ファイルを表示します。

主な使い方は以上です。

いろいろ

表示される予定は、 M-x org-agenda とやって a を押したときと同じものを出しているつもりです。*1

自分が org-mode のスケジュール機能を使わないのでこれで良いかちょっと分かっていません。誰かいいアイデアがありましたら教えてください。

現在の calfw は、まず作ってみて便利かどうか確認するというプロトタイプ的なものです。現在、拡張性を考えて設計・実装し直して、機能追加などを行っています。この新しい方では、表示期間を切り替えたり、表示内容をすぐに切り替えたり、もう少し便利になる予定です。

*1:実際には、そのあたりのコードをそのまま持ってきました。実装上、すごく遅いような気がしますが自分の所ではよく分かりません。とにかく org-mode のコードは大変でした。後先考えずに機能追加と改修を繰り返したようなコードになっています。逆に見れば、細かいところまで気の利いたツールとしてたどり着いたと言うことだと思います。