在Emacs下的Orgmode中,是否已经有一种方法可以在归档中自动复制正在归档的项目上方的树结构?
我在文件中的新组织模式结构如下所示:
* CONFIGURE
** Operating Systems
*** Debian Unstable
*** Demodyne
** Machines
(...)
** Software
(...)
归档“Demodyne”条目后,我希望归档包含以下内容:
* CONFIGURE
** Operating Systems
*** Demodyne
我以为我在很多年前开始使用它时在org-mode的文档中看过它,但是在http://orgmode.org/manual/的最新版本的文档中找不到这样的东西(归档http://orgmode.org/manual/Archiving.html#Archiving的条目相当简洁)。我觉得我可以编程,但我不愿意,如果它已经完成...
在https://gist.github.com/edgimar/072d99d8650abe81a9fe7c8687c0c993有一个部分解决方案。
这可能是一个非常好的解决方案,但是,它只适用于我在单个DONE
任务上执行时。如果我尝试使用DONE
将其扩展到子树中的所有org-map-entries
任务,如下所示,它会在每次运行时创建一个新的顶级* ARCHIVED
标题。有没有办法避免这种不必要的行为?
使用org-map-entries
的不良行为示例
定义函数以对当前子树中的所有DONE
任务进行操作:
(defun org-archive-done-tasks ()
(interactive)
(org-map-entries 'org-archive-subtree-hierarchical "/DONE" 'tree))
注意:org-archive-subtree-hierarchical
位于上面的链接中。
现在,如果我采取以下缓冲区
* Project 1
** TODO Task 1
** TODO Task 2
** TODO Task 3
并标记任务1 DONE
,在项目1上运行org-archive-done-tasks
,然后对任务2执行相同操作,缓冲区结果为
* ARCHIVED
** Project 1
*** DONE Task 1
* ARCHIVED
** Project 1
*** DONE Task 2
* Project 1
** TODO Task 3
这是期望的结果,如果org-archive-subtree-hierarchical
直接在** DONE Task 1
然后** DONE Task 2
(作为* Project 1
的孩子)运行会发生什么
* ARCHIVED
** Project 1
*** DONE Task 1
*** DONE Task 2
* Project 1
** TODO Task 3
使用org-map-entries
可以达到预期的行为吗?是否有更好的方法在子树中的所有org-archive-subtree-hierarchical
任务上多次执行DONE
而不重复归档目标标题?