我想创建一个组织捕获模板,为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
如何添加提示以完成文件名?
答案 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")))