背景:在 org-mode 中,变量 org-archive-location 默认设置为“%s_archive::”,以便将文件“toto.org”归档到文件“toto.org_archive”中。我希望它存档到“toto.ref”。我正在使用 org-mode 7.4 版(在 git 服务器之外)。
我原以为它很简单
(setq org-archive-location
`(replace-regexp-in-string ".org" ".ref" %s)
)
但有人指出,这在 LISP 中是不合适的(另外,它不起作用)。我的最终解决方案如下,您应该能够适应 org-archive-location 的最聪明的配置:
(setq org-archive-location "%s::* ARCHIVES")
(defadvice org-extract-archive-file (after org-to-ref activate)
(setq ad-return-value
(replace-regexp-in-string "\\.org" ".ref" ad-return-value)
)
)
注意:
1)我自愿没有在“.org”的末尾添加$,以便它可以正确地将“test.org.gpg”更改为“test.ref.gpg”。
2)似乎应该使用正则表达式“\.org”(而不是说,“.org”)(答案下面有更长的解释)。