Zn931
1
** TODO 红楼梦
** TODO 西游记
** TODO 水浒传
** TODO 三国演义
如上所示,怎么把state之后的这些完成纪录自动转移到外部文档如finish.org呢?也就是说在完成下面四个分项后成为done后,把state之后的这种纪录自动纪录到外部文件里。
2 个赞
在配置里定义一个新的方法
(defun archive-done-tasks ()
(interactive)
(save-excursion
(goto-char (point-min))
(while (re-search-forward
(concat "\\* " (regexp-opt org-done-keywords) " ") nil t)
(goto-char (line-beginning-position))
(org-archive-subtree))))
如果只是想对特定的 org 文件起作用,在对应的文件开头加上
-*- mode: org; after-save-hook: (archive-done-tasks) -*-
如果想对所有 org 文件起作用,那么
(defun enable-auto-archive ()
(add-hook 'after-save-hook 'archive-done-tasks))
(add-hook 'org-mode-hook 'enable-auto-archive)
示例如下,task.org
里有三个任务,保存后自动将状态为 DONE
的挪到 task.org_archive
文件中了
6 个赞
Zn931
3
多谢大神,理科生嘴笨,是我没说清楚。因为订立类似的读书计划时间太长了,结果类似这种state “DONE”……纪录项目就太多了,然后每次再改下面类似“红楼梦”了等小项,就会变得好慢,所以想把,这些State “DONE” from “TODO” 能自动移出去。但是下面的任务小项及上面一级任务项不移,不知有办法没?
那个叫 log,所以你要移走的是 log ?简单起见,你可以
(setq org-log-done nil)
或者在文件开头加入
#+STARTUP: nologdone
上述方法可以直接关闭任务的状态变化时的 log。
如果你只是觉得产生的 log 很多不想看见,那么可以让 log 记录在 drawer 里面
(setq org-log-into-drawer t)
效果如下图
如果你是因为一个文件里记录了太多东西,操作变得很慢,那么,可以
2 个赞
C-c C-x C-s org-archive-subtree