【问题标题】:Duplicate tree-structure in org-mode archive组织模式存档中的重复树结构
【发布时间】:2015-10-18 09:46:09
【问题描述】:

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

我在文件中的新 org-mode 结构如下所示:

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

** Machines
(...)
** Software
(...)

存档“Demodyne”条目后,我希望存档包含以下内容:

* CONFIGURE
** Operating Systems
*** Demodyne

我以为我多年前开始使用它时在 org-mode 的文档中看到了它,但是在http://orgmode.org/manual/ 的最新版本的文档中没有找到类似的东西(归档的条目@ 987654322@ 相当简洁)。我觉得我可以编程,但如果之前已经做过,我宁愿不...

【问题讨论】:

  • 您可以以编程方式运行org-sort-entries,并按照存档的方式进行组织。我有一个按四个级别排序的自定义函数——?a 然后?o 然后?p 然后?t 在我的任务/事件上。在Someday and Done上,我只是按标题字母排序。您还可以通过使用org-archive-location 在允许绑定的基础上以编程方式(标题和文件)确定归档目标:stackoverflow.com/a/22232709/2112489 实际上,我使用这种重新归档方法将任何任务/事件发送到我选择的任何地方。
  • 我会尝试编程并发布到github.com/jyby/JyByLisp
  • 我不敢相信这不是内置的。

标签: emacs archive org-mode


【解决方案1】:

https://gist.github.com/edgimar/072d99d8650abe81a9fe7c8687c0c993 提供了部分解决方案。

这可能是一个非常好的解决方案,但是,它仅在执行单个 DONE 任务时对我有效。如果我尝试使用org-map-entries 将其扩展到子树中的所有DONE 任务,如下所示,它会在每次运行时创建一个新的顶级* 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 是否可以实现所需的行为?是否有更好的方法可以在不复制存档目标标题的情况下多次对子树中的所有 DONE 任务执行 org-archive-subtree-hierarchical

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2020-02-06
    • 1970-01-01
    • 2015-04-28
    • 2020-02-20
    相关资源
    最近更新 更多