Откройте файл emacs org-mode из исходного кода C ++ и автоматически создайте элемент - PullRequest
8 голосов
/ 07 июня 2011

Я работаю над проектом C ++. Предположим, у меня есть следующая структура каталогов:

project/
project/src

И у меня есть следующие файлы:

project/ChangeLog
project/todo.org
project/src/foo.cpp

Я могу работать с исходным кодом C ++ в foo.cpp, а затем добавить строку в файл ChangeLog просто с C-x 4 a, как эта страница описывает.

Как мне добиться такой же функциональности с помощью org-mode для файла todo.org. Я хотел бы сохранить список дел относительно исходного кода. Поэтому, если в foo.cpp мне нужно завершить функцию void Foo::bla(), я бы хотел, чтобы в todo.org была добавлена ​​запись, которая упоминает эту функцию и файл, в котором она находится, так же, как C-x 4 a делает для ChangeLog.

Я также хотел бы иметь возможность иметь обратную ссылку из файла org на файл foo.cpp, в котором находится задача.

1 Ответ

10 голосов
/ 08 июня 2011

В то время как режим org широко документирован, я считаю, что онлайн-руководство очень плотный К счастью, есть много хороших уроков онлайн, но иногда Трудно найти ответ на конкретную проблему.

Я предлагаю прочитать раздел руководства по режиму org на Capture . Вам нужно будет сделать Небольшие настройки и особенности зависят от того, какая у вас версия org-mode. (Я рекомендуем использовать 7.x. Если вы застряли на 6.x, ни одна из настроек захвата I опишите ниже будет работать.)

Вот простой фрагмент из моей настройки emacs:

;;; capture mode

(setq org-default-notes-file (concat org-directory "/capture.org"))
(define-key global-map "\C-cc" 'org-capture)

(setq org-capture-templates
      '(("t" "Todo" entry (file+headline org-default-notes-file "Tasks")
     "** TODO %?\n  %i\n  %a")
        ("j" "Journal" entry (file+headline "~/journal/journal.org" "Today")
     "** %?\nEntered on %U\n  %i\n  %a")))

Теперь я нажимаю C-c c , когда я в исходном файле. Режим орг позволяет мне выбирать шаблон ([t] odo или [j] ournal в примере выше) и заполняет его включая ссылку на линию, на которой я был, когда инициировал захват.


Обновлено с информацией о Refiling : Если у вас есть несколько проектов и вы хотите сохранить отдельные списки задач, вы также должны узнать о Refiling . Самая простая установка - это org-refile-targets содержать список ваших файлов todo.org. В процессе захвата вы можете «перекомпилировать» задачу непосредственно в любую из ваших целей перекомпилирования.

(setq org-refile-targets 
  '((nil :maxlevel . 2) 
    ("~/project/todo.org" :level . 1)))

Есть хорошая пошаговая инструкция по захвату и пересылке на этой странице об орг-режиме .

...