在Emacs下的Orgmode中,是否已经有一种方法可以在存档中自动复制上面的 正在存档的项目?
我在文件中的新组织模式结构如下所示:
* CONFIGURE
** Operating Systems
*** Debian Unstable
*** Demodyne
** Machines
(...)
** Software
(...)
归档“Demodyne”条目后,我希望归档包含以下内容:
* CONFIGURE
** Operating Systems
*** Demodyne
当我多年前开始使用org-mode时,我以为我已经在org-mode的文档中看到了它,但是在http://orgmode.org/manual/的最新版本的文档中没有找到这样的内容。归档http://orgmode.org/manual/Archiving.html#Archiving相当简洁。我觉得我可以编程,但我不愿意,如果它已经完成...
答案 0 :(得分:0)
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
,而又不重复归档目标标题?