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

问题描述 投票:5回答:1

在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的条目相当简洁)。我觉得我可以编程,但我不愿意,如果它已经完成...

emacs archive org-mode
1个回答
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而不重复归档目标标题?

© www.soinside.com 2019 - 2024. All rights reserved.