Emacsにて、niceなカレンダービューを提供する calfw.el の近況と、いくつかの活用方法についてご紹介します。
calfw.el とは?
calfw.elは、Emacsのバッファ上で、下図のような操作可能なカレンダーを表示するプログラムです。
期間スケジュールの表示や祝日、月だけでなく1/2週間のビュー切り替えなど、よくあるカレンダーアプリと同様の動きが出来ます。もちろん、Emacsとして期待される、キーバインドや色などカスタマイズなども可能です。詳細は以下の紹介記事やgithubのREADMEを参照してください。
ちなみに、Vimでもitchynyさんのすごいカレンダーがあります。
近況
目に見える大きな機能は2011年のリリース当時からあまり変わっていません。いろいろご要望はいただくのですが、なかなか手が付けられずにいます。すみません。
昨年8月にすごいPull-Requestを頂きまして、内部構造がかなりパワーアップしました。この修正により、スケジュールを格納するイベントオブジェクトを定義することによって、スケジュールの時刻を格納することが出来るようになり、また単発のスケジュールと期間スケジュールを統一して扱えるようになりました。すごく自然です。断然スケジュールのソースを書きやすくなりました。
;; This structure defines calendar events.
(defstruct cfw:event
title ; event title [string]
start-date ; start date of the event [cfw:date]
start-time ; start time of the event (optional)
end-date ; end date of the event [cfw:date] (optional)
end-time ; end of the event (optional)
description ; event description [string] (optional)
location ; location [strting] (optional)
source ; [internal] source of the event
)
READMEでは、まだこの部分のドキュメントが反映されていませんが、興味のある方はPRのコメントを参照してください。
活用例
標準で Emacs 標準のdiaryとorgmode、howmとiCalendar(※繰り返しは未対応)に対応しています。Google Calendarとの連携は、sheepheadさんのこちらの記事を参照してください。
その他、いくつかの活用をご紹介します。
git log の可視化
gitの作業ログをカレンダーで見れると、自分の作業の振り返りにもなって便利です。
以下のgistのコードをインストールして、お手持ちのgitのプロジェクト上で M-x cfw:git-open-calendar
すると、カレンダーにコミットログが表示されます。
Web API との接続
最近はデータがWeb上にあることも多いと思いますので、よく使うAPIとつなげてカレンダーに表示することでとても生活が豊かになります。
たとえば、下のgistのように、しょぼいカレンダーから番組のデータを取って来て、Emacsに表示してみると、以下のようになります。
- https://gist.github.com/kiwanami/1fd257fc1e8907d4d92e
M-x syb:open-calendar-syobocal
これで、コーディング中でも、サッと見たい情報を確認できて便利ですね。
現状ではcalfwのデータソースに非同期更新用のAPIが無いため、ちょっと無理矢理感がありますが、そのうちスマートなAPIを用意するかも知れません。
他にも、日付と関連付くものなら何でも表示できますので、是非Emacsをお使いのみなさんも試してみてください。