Org Capture: запрашивать информацию при определении целевого файла - PullRequest
1 голос
/ 18 июня 2020

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

У меня уже есть несколько частей.

Функция, которая запрашивает у пользователя данные и возвращает строку:

(defun my/get-121-orgfile ()
  "Ask the user for the name of the participant so that we can build"
  (interactive)
  (read-string "Participant Name: ")
)

An org-capture-template, которая успешно запустит запрос при загрузке emacs:

(setq org-capture-templates
    `(
      ("m1" "1-1 meetings")
      ("m1b" "prep for a 1-1 meeting" entry
       (file ,(concat "~/org/meetings/1-2-1/" (my/get-121-orgfile) ".org"))
       (file "~/org/templates/meeting-121-prep.org")
       :clock-in t)
))

Я взял назад цитата и образец запятой из этого SO-ответа , но я не смог понять, как охватить это поведение, когда я выбираю шаблон: я хочу, чтобы подсказка появлялась каждый раз, когда я нажимаю <org-capture>m1b.

1 Ответ

2 голосов
/ 20 июня 2020

Образец обратной кавычки-запятой здесь не поможет: он вызовет функцию в то время, когда установлено org-capture-template. Что вы пытаетесь сделать, так это вызвать функцию при выполнении захвата.

Единственный известный мне способ сделать это - использовать целевой механизм (function foo) для org-capture-templates. Строка do c говорит:

        (function function-finding-location)
            Most general way: write your own function which both visits
            the file and moves point to the right location

Таким образом, вы не сможете использовать цель (file ...), как указано выше. Вместо этого вам нужно написать функцию, которая получает всю необходимую информацию, а затем посещает целевой файл в целевом месте и добавляет заполненный шаблон.

Это не полный ответ, но он был слишком длинным для комментарий, но, возможно, он поможет указать вам правильное направление.

...