Emacs组织模式 - 如何将子树重新编译为新文件?

时间:2015-11-24 04:03:42

标签: emacs elisp org-mode

我维护了一个包含大量草稿帖子的组织文件(here's a link to the file)。我的工作流程是处理草稿,一旦它准备好发布,我就将其复制到一个新的组织文件,然后我将其推送到我的鹈鹕blog

我本来希望做的是使用refile命令帮助我将代表帖子的子树移动到新的帖子文件中。

我的研究让我在堆栈溢出时得到的答案很少。我实现了这个功能:

(require 'org-element)

(defun me/org-file-from-subtree (&optional name)
"Cut the subtree currently being edited and create a new file
from it.

If called with the universal argument, prompt for new filename,
otherwise use the subtree title."
(interactive "P")
(org-back-to-heading)
(let ((filename (cond
               (current-prefix-arg
                (expand-file-name
                 (read-file-name "New file name: ")))
               (t
                (concat
                 (expand-file-name
                  (org-element-property :title
                                        (org-element-at-point))
                  default-directory)
                 ".org")))))
(org-cut-subtree)
(find-file-noselect filename)
(with-temp-file filename
  (org-mode)
  (yank))))

资料来源:Jonathan Leech-Pepin的回答here

这个功能有效,但它不带有我试图重新构造的子树中定义的脚注。知道如何将脚注与子树一起剪切吗?

更新 为我想要实现的目标添加一个例子。鉴于此组织文件:

* Drafts
** First Post
Lorem ipsum dolor sit amet, fermentum vulputate laoreet eligendi,[fn:1]
magna wisi elit scelerisque

** Second Post
Ultrices natoque sollicitudin duis curabitur, 
quam pellentesque ante aliquam nulla aenean, 
dui egestas ipsum adipiscing, sem nulla sit nisl, 
parturient[fn:2] habitasse ac amet at eget suspendisse.

* Footnotes

[fn:1] This is a footnote for the first post 

[fn:2] This is a footnote for the second post

现在,我希望能够做的是将第一篇文章及其脚注(fn:1)移到新文件中。

感谢。参见Yaniv

(我应该说我是emacs的新手,但仍然不能理解我放入初始化的 lisp 代码......所以我可能会遗漏某些东西非常基本的)

0 个答案:

没有答案