Загрузка всех файлов org из папки в повестку дня

4978
Dox

Я нашел учебник org, где объясняется, как загружать файлы org из папки, используя

(setq org-agenda-files (list "~/org/work.org" "~/org/school.org"  "~/org/home.org")) 

Вопрос

Есть ли способ сообщить emacs о загрузке всех файлов org из заданной папки в повестку дня?

6

2 ответа на вопрос

6
Aaron Miller

Using the Org mode included with Emacs 24.3, from C-h v org-agenda-files RET:

If an entry is a directory, all files in that directory that are matched by `org-agenda-file-regexp' will be part of the file list. 

And from C-h v org-agenda-file-regexp RET:

org-agenda-file-regexp is a variable defined in 'org.el'. Its value is "\\`[^.].*\\.org\\'" [...] You can customize this variable. 

So, in short: evaluate (add-to-list 'org-agenda-files (expand-file-name "~/org")) and, if your org-agenda-file-regexp is at the default value, Org mode will read agenda items from any file in ~/org whose name ends in .org. (If your org-agenda-file-regexp isn't at the default value, or if you need it to match more than just files whose names end in .org, then customize it to your needs via M-x customize-variable RET org-agenda-file-regexp RET.)

Спасибо за ответ @ Аарон Миллер. Я использую GNU Emacs 23.4.1 с Org-mode версии 8.0.7. Я нашел команду `org-повестка-файлов`, и` Ch v org-повестка-файл-regexp` определяется, как вы упомянули. Однако после добавления строки кода, которую вы предлагаете, я получаю предупреждение. Какие-нибудь мысли? Должен ли я оставить свою предыдущую строку или удалить ее? Dox 11 лет назад 0
Я решил это! Спасибо за вашу помощь. Мое решение состояло в том, чтобы включить строку `(setq org-повестки дня-файлы (список" ~ / org / "))` в мой файл `.emacs`. Приветствия. Dox 11 лет назад 0
@Dox Это только половина решения, поскольку он добавляет к `org-повестка-файлы` только те файлы, которые присутствуют в` ~ / org` во время вычисления выражения - то есть, если вы добавляете новое файл во время сеанса Emacs, он не будет автоматически выбран в качестве источника пунктов повестки дня до следующего запуска Emacs. Конечно, если этого достаточно для ваших нужд, тогда сделайте это, но стоит упомянуть, что `org-повестка-файл-regexp` и специальная обработка каталогов в` орг-повестке-файлы` существуют по причине. :) Aaron Miller 11 лет назад 2
Не могли бы вы привести пример решения? Я проверяю, и для `org-повестка-файла-regexp` установлено значение по умолчанию, но вы правы насчет загрузки. Dox 11 лет назад 0
@ Dox Это хорошо! Предполагая, что все ваши файлы Org находятся в `~ / org` и оканчиваются на` .org`, все, что вам нужно сделать, это добавить `(add-to-list 'org-повестки дня-файлы (expand-file-name" ~ / org "))` где-нибудь в вашем файле инициализации, и новые сессии Emacs автоматически просканируют все ваши файлы Org на предмет пунктов повестки дня. (Вы можете получить тот же эффект в существующем сеансе Emacs, выполнив `Cx Ce`, когда точка находится на закрывающей части выражения; затем, чтобы увидеть эффект, выполните, например,` Mx org-повестки дня RET t`.) Aaron Miller 11 лет назад 2
@Dox BTW `expand-file-name` канонизирует свой аргумент, в этом случае, расширив` ~ `до полного пути к домашней директории; не каждая функция Emacs Lisp, принимающая аргумент пути, выполняет свою собственную канонизацию, поэтому полезно делать это вручную. `Cx Ce` выполняет` eval-last-sexp`, который оценивает форму Lisp сразу за точкой - полезно, когда вы редактируете файлы инициализации, например, для проверки эффекта изменения и получения выгоды без необходимости перезапустите Emacs или `Mx eval-buffer`. Aaron Miller 11 лет назад 1
давайте [продолжим эту дискуссию в чате] (http://chat.stackexchange.com/rooms/10210/discussion-between-dox-and-aaron-miller) Dox 11 лет назад 0
4
Dox

Inspired on the answer given by Aaron, I change my configuration to

(setq org-agenda-files (list "~/org")) 

and the problem was solved.

Похожие вопросы