在org-agenda-export中动态更改文件名

时间:2019-04-29 15:26:48

标签: elisp org-mode

我想将议程视图导出到具有基于当前日期的唯一名称的单独文件。根据以下示例代码:

(setq org-agenda-custom-commands
    '(("X" agenda "" nil ("agenda.ps")))
)

最后一个参数是文件名,所以我想可以将concat函数的输出放入,例如:

(setq org-agenda-custom-commands
    '(("X" agenda "" nil (concat (format-time-string "%Y-%m-%d") "-agenda.html")))
)

不幸的是,该方法失败了,因为解释器从字面上接受了concat,并且未生成字符串(预期的数据类型)。我对LISP不太熟悉,因此不胜感激。

1 个答案:

答案 0 :(得分:0)

首先,最后一个参数不是文件名,而是名称列表,因此必须添加一些额外的括号。

正如您已经指出的那样,由于没有quote,因此不对列表进行求值,这是很好的,因为除了最后一个元素(concat函数)之外,您无需对其进行求值。为此,您可以使用backquote

(setq org-agenda-custom-commands
    `(("X" agenda "" nil (,(concat (format-time-string "%Y-%m-%d") "-agenda.html"))))
)

作为旁注,我不是org-mode的专家,我只是在回答您提出的问题,但是我感觉有可能以更简单的方式实现您的目标。不确定如何使用,但是也许您可以浏览org-mode的文档,也许您会发现一些有趣的东西。