2012-01-25 2 views
5

Используя шаблоны захвата, подобные приведенным ниже, я могу добавлять записи в разные заголовки в файле. Как я могу вручную ввести заголовок во время захвата, вместо того, чтобы настраивать каждый заголовок на ключ в файле .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)) 

ответ

3

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

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

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


Шаблон захвата Я использую для этого улова все выглядит следующим образом (адаптировано из Bernt Hansen's capture settings)

 ("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: 

С этим я заканчиваю u р со всеми без refiled задач отображаются как

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

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

+0

Не могли бы вы привести пример кода, который реализует то, что говорит ваш второй пункт. Это сделает ваш ответ еще лучше! –

2

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

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

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

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

+0

Вам не нужно префикс с 'C-u' для переименования в заголовки в файле. Я понимаю его вопрос, поскольку заголовки уже существуют, вместо того, чтобы иметь несколько шаблонов (по одному на заголовок), использовать только один шаблон и переустанавливать его на соответствующий заголовок при захвате. –

+0

Я склонен согласиться. IIRC C-u позволяет вам переименовывать файл любой повестки дня. – kindahero

+0

C-u C-c C-w - это Goto, а не Refile –

4

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

Вместо:

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

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

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

Где функция ознакомительной-местоположение "является пользовательской функции вы написали сами, которые легко могут запрашивать у вас заголовок ,

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

entry 
(function function-finding-location) 

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

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

2

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

Он использует внутреннюю подсказку 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)) 
Смежные вопросы