组织模式存档中的重复树结构

Jer*_*emy 6 emacs archive org-mode

在Emacs下的Orgmode中,是否已经有一种方法可以在归档中自动复制正在归档的项目上方的树结构?

我在文件中的新组织模式结构如下所示:

* CONFIGURE
** Operating Systems
*** Debian Unstable
*** Demodyne

** Machines
(...)
** Software
(...)
Run Code Online (Sandbox Code Playgroud)

归档"Demodyne"条目后,我希望归档包含以下内容:

* CONFIGURE
** Operating Systems
*** Demodyne
Run Code Online (Sandbox Code Playgroud)

我想我已经看到了它的组织模式的文档中,当我开始很多年以前使用它,但没有找到这样的事情的最新版本的文档中http://orgmode.org/manual/(中归档入门http://orgmode.org/manual/Archiving.html#Archiving相当简洁.我觉得我可以编程,但我不愿意,如果它已经完成...

kgo*_*kgo 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))
Run Code Online (Sandbox Code Playgroud)

注意org-archive-subtree-hierarchical可以在上面的链接中找到。

现在如果我采用以下缓冲区

* Project 1
** TODO Task 1
** TODO Task 2
** TODO Task 3
Run Code Online (Sandbox Code Playgroud)

并标记任务 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
Run Code Online (Sandbox Code Playgroud)

这是期望的结果,如果直接在和 then 上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
Run Code Online (Sandbox Code Playgroud)

使用 可以实现所需的行为吗org-map-entries?是否有更好的方法可以多次执行子树中的org-archive-subtree-hierarchical所有任务而不重复存档目标标题?DONE