Ответ 1
Достаточно просто назвать каталог. Например, это работает для меня очень хорошо:
(setq org-agenda-files '("~/org"))
Также взгляните на org-agenda-text-search-extra-files
; это позволяет вам добавлять дополнительные файлы, включенные только в текстовый поиск. Типичное значение может быть,
(setq org-agenda-text-search-extra-files
'(agenda-archives
"~/org/subdir/textfile1.txt"
"~/org/subdir/textfile1.txt"))
Предостережение: если вы добавите файл в каталог после запуска Emacs, он не будет включен.
Изменить: (2018) Чтобы включить все файлы с определенным расширением в список дополнительных файлов, вы можете попробовать следующую функцию, которую я написал некоторое время назад (более свежая версия может быть доступна здесь).
;; recursively find .org files in provided directory
;; modified from an Emacs Lisp Intro example
(defun sa-find-org-file-recursively (&optional directory filext)
"Return .org and .org_archive files recursively from DIRECTORY.
If FILEXT is provided, return files with extension FILEXT instead."
(interactive "DDirectory: ")
(let* (org-file-list
(case-fold-search t) ; filesystems are case sensitive
(file-name-regex "^[^.#].*") ; exclude dot, autosave, and backupfiles
(filext (or filext "org$\\\|org_archive"))
(fileregex (format "%s\\.\\(%s$\\)" file-name-regex filext))
(cur-dir-list (directory-files directory t file-name-regex)))
;; loop over directory listing
(dolist (file-or-dir cur-dir-list org-file-list) ; returns org-file-list
(cond
((file-regular-p file-or-dir) ; regular files
(if (string-match fileregex file-or-dir) ; org files
(add-to-list 'org-file-list file-or-dir)))
((file-directory-p file-or-dir)
(dolist (org-file (sa-find-org-file-recursively file-or-dir filext)
org-file-list) ; add files found to result
(add-to-list 'org-file-list org-file)))))))
Вы можете использовать это так:
(setq org-agenda-text-search-extra-files
(append (sa-find-org-file-recursively "~/org/dir1/" "txt")
(sa-find-org-file-recursively "~/org/dir2/" "tex")))
Редактировать: (2019) Как уже упоминалось в ответе @mingwei-zhang и комментарии @xiaobing, find-lisp-find-files
из find-lisp
и directory-files-recursively
также предоставляет эту функциональность. Однако обратите внимание, что в этих случаях аргумент имени файла является (жадным) регулярным выражением. Таким образом, что-то вроде (directory-files-recursively "~/my-dir" "org")
даст вам все файлы Org, включая файлы резервных копий (*.org~
). Чтобы включить только файлы *.org
, вы можете использовать (directory-files-recursively "~/my-dir" "org$")
.