介绍
强大的日程管理插件,可以计划每天的行程,记录任务进度。并且和wiki-mode 结合,可以发布网页,很有成就感。
可以做的:
- 计划任意一天的任务
- 任务自由归类,完成的和未完成的有不同标记
- 把信息放到尽量少的文件内,方便整理
- 和日历结合,写日记,计划,做笔记在同一页面完成
- 回顾+分析生活
- 生活在文本里,节省硬盘空间
- 养成良好生活习惯:]
总之用熟之后还是挺惊讶的,每天开电脑就开emacs,关机再关emacs。没想到这 么好用,当然前提是习惯emacs键盘操作,以及喜欢emacs的文本界面
当然evolution很好的一点是可以和time-applet结合,比较漂亮,不过为了节省 硬盘我还是删了它
使用
基本上apt安装完之后,看帮助文档慢慢学,不久就能熟练使用了。帮助文档写 的相当清楚,当然也可能因为我被emacs折磨习惯了
.emacs里有用的设置(大部分直接从帮助文档里复制的)
快捷键
(global-set-key [f3] 'calendar) (global-set-key [f4] 'plan)
这样可以直接F3调出日历, 再F4调出当天的日程
当然,也可以加入
(plan)
来自动在emacs启动时打开日程页面,不过我可不希望一打开emacs就是这个
其它有用的键盘绑定可以自行设置,反正就照葫芦画瓢。以下是我的设置,大部 分用F5完成
(add-hook 'planner-mode-hook
(lambda ()
(define-key planner-mode-map (kbd "C-c C-e")
'planner-diary-insert-diary)
(define-key planner-mode-map (kbd "<f5> SPC")
'planner-create-task)
(define-key planner-mode-map (kbd "<f5> l")
'planner-list-unfinished-tasks)
(define-key planner-mode-map (kbd "<f5> r")
'remember)
(define-key planner-mode-map (kbd "<f5> x")
'planner-task-done)
(define-key planner-mode-map (kbd "<f5> <delete>")
'planner-delete-task)
(define-key planner-mode-map (kbd "<f5> p")
'planner-task-in-progress)
(define-key planner-mode-map (kbd "<f5> c")
'planner-task-cancelled)
(define-key planner-mode-map (kbd "<f5> <f5>")
'planner-task-pending)
(planner-deadline-update)
(define-key planner-mode-map [(shift up)]
'planner-raise-task-priority)
(define-key planner-mode-map [(shift down)]
'planner-lower-task-priority)
)
)
如果要启用planner自己的额外快捷键,加入以下。用法参看帮助文档,我记不 住那么多所以没有用
(planner-install-extra-task-keybindings)
(planner-install-extra-context-keybindings)
整合日记模式
(require 'planner-diary) (add-hook 'diary-display-hook 'fancy-diary-display) (setq planner-diary-use-diary t) (planner-diary-insinuate) (setq planner-day-page-template "* Tasks\n\n\n* Schedule\n\n\n* Diary\n\n\n* Notes")
整合日历
(planner-insinuate-calendar)
存盘的时候自动发布html
直接复制自Sacha(维护者)的配置文件
(defun sacha/emacs-wiki-auto-publish ()
(when (derived-mode-p 'emacs-wiki-mode)
(unless emacs-wiki-publishing-p
(let ((emacs-wiki-publishing-p t)
(emacs-wiki-after-wiki-publish-hook nil))
(emacs-wiki-publish-this-page)))))
(add-hook 'emacs-wiki-mode-hook
(lambda ()
(add-hook 'after-save-hook
'sacha/emacs-wiki-auto-publish nil t)))
重复任务
如果希望planner每周同一天自动加入某任务,可以用cyclic-task
(require 'planner-cyclic)
建立文件~/.diary.cyclic-tasks, 用来存储任务,语法如下:
> Saturday #B0 _Wash Clothes
这样一到周六它就会在我的任务加上洗衣服一项,其中#B表示优先权
deadline
如果想要让planner自动计算某任务离deadline有多久,可以加入
(require 'planner-deadline)
用法:
#B X Math765 homework (ToGetSmart) {{Deadline: 2005.12.05}}
注意Deadline:后面必须空一格
似乎deadline会在每次打开日程页面的时候计算,加上剩余天数,然后变成
#B X Math765 homework (ToGetSmart) {{Deadline: 2005.12.05 - 1 day}}
不过有时侯又似乎失效,反正我在planner-mode-hook里还是加上了 (deadline-update)之类的函数。个人感觉不大用的上。事实上planner-mode里 面内容比较多,所以我老是忘掉使用某些有用的东西
检查任务完成情况
task accomplishment
(require 'planner-accomplishments)
用法:
M-x planner-accomplishments-show

(require 'planner-tasks-overview)
用法:
M-x planner-tasks-overview
然后输入开始日期,回车,再结束日期。直接用数字键 1,2,3,4 切换排序方法,非常方便

不过用了很久之后终于发现以上两个插件虽然好看,但没什么意思,我也就对当 天任务的完成情况有兴趣
笔记索引
(require 'planner-notes-index)
就可以建立所有的笔记索引了
用法:
M-x planner-notes-index

EmacsPlanner 确实把我想要的都做到了
发布日历
按照帮助文档里的方法我无法发布日历,所以我删除了最后一个函数"move calendar to top",然后莫名其妙就可以了:
(require 'planner-calendar)
(add-hook
'planner-mode-hook
(lambda ()
"Add the relevant hooks for `planner-calendar' to work."
(add-hook 'emacs-wiki-before-markup-hook
'planner-calendar-insert-calendar-maybe nil t)
(add-hook 'emacs-wiki-after-file-publish
'planner-calendar-create-today-link nil t)))