7

我想创建一个 org-capture 模板,该模板为 emacs org-mode 中的捕获创建一个动态文件名。

我希望文件名采用以下形式: (format-time-string "%Y-%m-%d") "-" (prompt for a name) ".txt"

示例:2012-08-10-MyNewFile.txt

基于这个答案,我知道如何动态创建文件名称以包含日期:

`(defun capture-report-date-file (path)
(expand-file-name (concat path (format-time-string "%Y-%m-%d") ".txt")))

'(("t" "todo" entry (file (capture-report-date-file  "~/path/path/name"))
"* TODO")))

这允许我创建一个文件 2012-08-10.txt 并在第一行插入 * TODO

如何添加提示以完成文件名?

4

2 回答 2

13

您必须使用(read-string ...)incapture-report-data-file动态生成文件名。

(defun capture-report-date-file (path)
  (let ((name (read-string "Name: ")))
    (expand-file-name (format "%s-%s.txt"
                              (format-time-string "%Y-%m-%d")
                              name) path)))

'(("t"
   "todo"
   entry
   (file (capture-report-date-file  "~/path/path/name"))
   "* TODO")))

这将在捕获时提示输入文件名,然后打开将创建捕获缓冲区。

于 2012-08-10T13:59:28.007 回答
2

我使用下面的模板和函数来创建新文件。

  (defun psachin/create-notes-file ()
    "Create an org file in ~/notes/."
    (interactive)
    (let ((name (read-string "Filename: ")))
      (expand-file-name (format "%s.org"
                                  name) "~/notes/")))



   (setq org-capture-templates
     '(("n" "Notes" entry
        (file psachin/create-notes-file)
       "* TITLE%?\n %U")))
于 2018-12-12T07:57:47.793 回答