Как правильно использовать опцию функции org-capture? - PullRequest
0 голосов
/ 23 мая 2019

Я хочу динамически открыть правильный файл в шаблоне захвата orgmode, используя опцию function:

("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 в буфере и откроет буфер захвата вместе с файлом.Таким образом, мое окно разделено на 2 буфера с одинаковым содержимым.

Можно ли каким-либо образом изменить функцию my-visit-timestamped-file так, чтобы буфер не открывался, а при захвате org все равно получался правильный указатель / дескриптор файла?

1 Ответ

1 голос
/ 04 июня 2019

Вы, вероятно, хотите 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))
...