我想使用function
选项在orgmode捕获模板中动态打开正确的文件:
("a" "foo" plain
(function my-visit-timestamped-file)
"<some content>")
函数my-visit-timestamped-file
定义为
(defun my-visit-timestamped-file ()
(interactive)
(let
((theDate (format-time-string "%Y%m%d-%H%M.org")))
(find-file (concat "<some_path>" theDate))))
如果我运行捕获模板a
,则emacs将在缓冲区中打开文件<some_path>theDate
,并使用该文件打开捕获缓冲区。
因此,我的窗口分为两个显示相同内容的缓冲区。
函数my-visit-timestamped-file
是否可以以某种方式更改,以使缓冲区没有打开但组织捕获仍然获得正确的文件指针/文件句柄?
答案 0 :(得分:1)
您可能希望使用find-file-noselect
而不是find-file
。请注意,org-capture-templates
的文档是这样说的:
(function function-finding-location)
Most general way: write your own function which both visits
the file and moves point to the right location
,因此您可能需要添加一些代码以转到文件中的正确位置(我猜是(point-min)
或(point-max)
)。可能看起来像这样:
(defun my-visit-timestamped-file ()
(interactive)
(let* ((the-date (format-time-string "%Y%m%d-%H%M.org"))
(the-buffer (find-file-noselect (expand-file-name the-date "/some/path/"))))
(with-current-buffer the-buffer
(goto-char (point-min)))
the-buffer))
答案 1 :(得分:0)
@jpkotta的回答为我指明了正确的方向。 该错误已消失,但捕获缓冲区的内容始终粘贴到我当前正在编辑的缓冲区中。
在组织模式邮件列表上的旧线程中,我找到了问题的答案。该功能应为:
batch.rabbitmq.host=[HOST_NAME OR IP Address]
链接到邮件列表线程:https://lists.gnu.org/archive/html/emacs-orgmode/2013-11/msg00676.html