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

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

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

(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不太熟悉,所以非常感谢任何帮助。

elisp org-mode
1个回答
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的文档,可能你会发现一些有趣的东西。

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