Emacs
EmacsDay 17

calfwの活用について

More than 3 years have passed since last update.

Emacsにて、niceなカレンダービューを提供する calfw.el の近況と、いくつかの活用方法についてご紹介します。

calfw.el とは?

calfw.elは、Emacsのバッファ上で、下図のような操作可能なカレンダーを表示するプログラムです。

calfw画面イメージ

期間スケジュールの表示や祝日、月だけでなく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 すると、カレンダーにコミットログが表示されます。

calendar for gitlog

Web API との接続

最近はデータがWeb上にあることも多いと思いますので、よく使うAPIとつなげてカレンダーに表示することでとても生活が豊かになります。

たとえば、下のgistのように、しょぼいカレンダーから番組のデータを取って来て、Emacsに表示してみると、以下のようになります。

calendar for syoboi

これで、コーディング中でも、サッと見たい情報を確認できて便利ですね。

現状ではcalfwのデータソースに非同期更新用のAPIが無いため、ちょっと無理矢理感がありますが、そのうちスマートなAPIを用意するかも知れません。

他にも、日付と関連付くものなら何でも表示できますので、是非Emacsをお使いのみなさんも試してみてください。