It is common to have something like this in an org configuration: (customize-set-variable 'org-agenda-files '("~/org"))
This means that all the org files in ~/org (but not all the org files in subdirectories of "~/org") will be automatically included in the agenda. It seems like a common request on this mailing list is: what if I created a fairly involved directory tree with org files throughout, how do I include all those directories in org-agenda-files? And also, what if I modify my filesystem and create a new directory somewhere under "~/org" - do I have to restart Emacs or rerun the code that configures org? Here's a solution that seems to take care of everything automatically for me (and also filters out things that I don't want to include, like directories named "zz_old", ".git" and "zz_journal") (require 'find-lisp) (require 'cl) (defun yn/recurse-subdirectories (directory) (let ((predicate (lambda (pred) (lexical-let ((p pred)) (lambda (dir parent) (and (not (or (string= dir ".git") (string= dir "zz_old") (string= dir "zz_journal"))) (funcall p dir parent))))))) (append (find-lisp-find-files-internal directory (funcall predicate 'find-lisp-file-predicate-is-directory) (funcall predicate 'find-lisp-default-directory-predicate)) (cons directory nil)))) (defadvice org-agenda-files (before yn/org-agenda-files (&optional unrestricted archives)) (customize-set-variable 'org-agenda-files (yn/recurse-subdirectories org-directory))) (ad-activate 'org-agenda-files) I don't have contributor papers signed with the FSF (yet) but obviously the intent of this message is for everyone to use this.