Интерактивно введите заголовок, под которым нужно разместить запись, используя захват - PullRequest
7 голосов
/ 25 января 2012

Используя шаблоны захвата, подобные приведенному ниже, я могу добавлять записи в различные заголовки в файле. Как я могу вручную ввести заголовок во время захвата, вместо того, чтобы настраивать каждый заголовок на ключ в файле .emacs, как я сейчас делаю?

(setq org-capture-templates
      '(
      ("l" "Log" entry
     (file+headline "c:/Org/log.org" "Log")
     "\n\n** %?\n<%<%Y-%m-%d %a %T>>"
     :empty-lines 1))

Ответы [ 4 ]

6 голосов
/ 13 февраля 2012

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

Вместо:

entry
(file+headline "~/Work/work.org" "Refile")

Вы можете использовать:

entry
(file+function "~/Work/work.org" function-finding-location)

Где 'function-find-location' - это пользовательская функция, которую вы написали сами, которая может легко запросить заголовок.

Или вы можете пойти еще дальше и определить пользовательскую функцию, которая будет запрашивать как имя файла, так и название заголовка (или что-нибудь еще, что вы можете придумать):

entry
(function function-finding-location)

Я действительно не знаю достаточно elisp, чтобы написать эти функции самостоятельно, но это похоже на то, с чего начать. Было бы хорошо, если бы кто-то мог предложить какой-то код. Соответствующая документация здесь:

http://orgmode.org/manual/Template-elements.html

4 голосов
/ 16 июля 2014

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

Она использует внутреннюю функцию подсказки org-refile, поэтому мы получаем дополнения заголовков в приглашении (смаксимальные уровни переопределяются до 9).Когда пользователь вводит неизвестный заголовок, он создает его в конце файла.

(defun org-ask-location ()
  (let* ((org-refile-targets '((nil :maxlevel . 9)))
         (hd (condition-case nil
                 (car (org-refile-get-location nil nil t t))
               (error (car org-refile-history)))))
    (goto-char (point-min))
    (outline-next-heading)
    (if (re-search-forward
         (format org-complex-heading-regexp-format (regexp-quote hd))
         nil t)
        (goto-char (point-at-bol))
      (goto-char (point-max))
      (or (bolp) (insert "\n"))
      (insert "* " hd "\n")))
    (end-of-line))

В вашем случае вы используете его так:

(setq org-capture-templates
 '(("l" "Log" entry
    (file+function "c:/Org/log.org" org-ask-location)
    "\n\n** %?\n<%<%Y-%m-%d %a %T>>"
    :empty-lines 1))
4 голосов
/ 25 января 2012

Я не верю, что вы можете запросить заголовок при захвате.Однако вы можете выполнить повторную пересылку из окна захвата, что должно привести к желаемому поведению.

Я бы определил целевой заголовочный заголовок / файл, чтобы, если вы забудете, вы всегда собирали их в одном и том же месте, а затемпросто нужно перезалить их после того, как они созданы.Если вы также установите категорию / тег в этом заголовке, вы сможете легко увидеть пропущенную запись захвата и перефразировать ее по желанию.(Пример ниже)

Затем вместо того, чтобы заканчивать с C-c C-c, выберите повторную отправку с C-c C-w, и вам будет предложено выбрать заголовок, в который вы хотите отправить новую запись.


Шаблон захвата, который я использую для этого улова, выглядит следующим образом (адаптировано из Настройки захвата Бернта Хансена )

      ("i"
       "Incidents"
       entry
       (file+headline "~/Work/work.org" "Refile")
       "* TODO %^{Ticket} - %^{User}\nSCHEDULED: %^t DEADLINE: %^t\n:PROPERTIES:  
       \n:DATE: %^U\n:END:\n%^{MANAGER}p%^{HOSTNAME}p%^{LOCATION}p%^{TEL}p\n%c"
       :empty-lines 1 :clock-in t :clock-resume t)

(Разрывы строк добавляются, чтобы избежать прокрутки при чтении здесь)

Заголовок настроен следующим образом:

* Refile                                                             :refile:
:PROPERTIES:
:CATEGORY: Unsorted
:END:

. В результате я получаю все неотправленные задачи, которые отображаются как

Unsorted:     Deadline:    TODO <Headline>                          :refile::

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

2 голосов
/ 25 января 2012

во время захвата заметки, после завершения записи нажмите C-u C-c C-w, чтобы выполнить добавление под новым заголовком.

вам также нужно установить эту переменную

 (setq org-refile-allow-creating-parent-nodes (quote confirm))

Вы можете установить его на t вместо подтверждения. Но мне нравится это подтверждать, потому что я не часто переосмысливаюсь к новым целям

...