组织模式 - 如何使用org-capture创建新文件?

时间:2012-08-10 13:24:16

标签: emacs org-mode

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

我希望文件的名称采用以下形式: (format-time-string“%Y-%m-%d”)“ - ”(提示输入名称)“。txt”

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

基于this回答,我知道如何动态创建文件名以包含日期:

`(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

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

2 个答案:

答案 0 :(得分:10)

您必须在(read-string ...)中使用capture-report-data-file即时生成文件名。

(defun capture-report-data-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")))

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

答案 1 :(得分:0)

我使用下面的模板和功能创建新文件。

  (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")))