Emacs: 定时提醒

作为一个天天坐在电脑前的程序猿, 经常起来活动一下并四十五度角仰望天空, 据说能有效延长寿命. 而当今延长寿命, 可能比以往任何时代都更有意义 (见刘慈欣《永生的阶梯》).

又鉴于我整天开着 emacs, 所以我决定让 emacs 每隔一段时间就提醒我起来伸展伸展.

先在 Google+ 和 #emacs 问了一下, 得到了一些指点, 很多人建议用 org-pomodoro.

pomodoro 是意大利语里的”番茄”, org-pomodoro 是番茄工作法的 emacs 实现. 对我而言, 这个东西有点儿过于复杂了, 继续在网上搜, 试了好几个, 最终用 appt 不完美地解决了这个问题.

先安装 appt, M-x el-get-install appt (或着任何其它安装方法).

但是有些 appt 依赖的函数, emacs 24.4 中没有, 所以需要对 appt 进行一些修改.

先把 elc 文件删掉, 免得有影响: M-x delete-file ~/.emacs.d/el-get/appt/appt.elc

然后打开 appt.el: C-x C-f ~/.emacs.d/el-get/appt/appt.el, 搜索 update-calendar-mode-line, 把所有包含这个字符串的行都删掉, C-x C-s 保存文件. 现在 appt 基本上可以用了.

运行以下 s-expressions, 并把它们加到 init.el 里:

;; Diary entries notification
(require 'appt)
(setq appt-message-warning-time 0)      ; 0 minute time before warning
(setq diary-file "~/diary")             ; diary file

因为我只是想定时起来活动活动, 所以把 appt-message-warning-time 设成 0, 免得它提前好几分钟就跳出来.

另外, 指定一个 diary 文件: ~/diary (可以是任意文件).

然后创建这个文件 C-x C-f ~/diary, 简单粗爆地写下 (可能有更精简的写法, 我没有细查文档):

Monday
  9:00am stand up
  10:00am stand up
  11:00am stand up
  12:00pm lunch time
  2:00pm stand up
  3:00pm stand up
  4:00pm stand up
  5:00pm leave office
Tuesday
  9:00am stand up
  10:00am stand up
  11:00am stand up
  12:00pm lunch time
  2:00pm stand up
  3:00pm stand up
  4:00pm stand up
  5:00pm leave office
Wednesday
  9:00am stand up
  10:00am stand up
  11:00am stand up
  12:00pm lunch time
  2:00pm stand up
  3:00pm stand up
  4:00pm stand up
  5:00pm leave office
Thursday
  9:00am stand up
  10:00am stand up
  11:00am stand up
  12:00pm lunch time
  2:00pm stand up
  3:00pm stand up
  4:00pm stand up
  5:00pm leave office
Friday
  9:00am stand up
  10:00am stand up
  11:00am stand up
  12:00pm lunch time
  2:00pm stand up
  3:00pm stand up
  4:00pm stand up
  5:00pm leave office

周一到周五都有了, 保存, 然后 M-x appt-activate, 等时间到了, emacs 就会弹出一个 buffer, 还有声音提示.

: 主要参考了 http://www.gnu.org/software/emacs/manual/html_node/emacs/Appointments.html

Leave a Reply