Am Montag, den 12.10.2009, 15:48 +0200 schrieb Eraldo Helal: > > What is Reference/ supposed to be in this case -- a directory? Refiling > > only works to headings (or top level headings) in files in org-mode IIRC. > Yes it is supposed to be a directory... > > I have org files in many directorys... about like so: > reference/emacs/emacs.org > reference/eros/eros.org > reference/Avalon/Avalon.org > reference/Gimp/Gimp.org > reference/office/office.org > reference/home/home.org > reference/poems/poems.org > ... > > What would be a smart way to get a headline from the file inbox.org > named "* Erich Fried poems" to poems.org? > Considering that poems.org is not part of the agenda nor a refile target. > > What I am doing until now is: > folding the headline (tab) > cutting the headline (C-k) > making a split screen (C-x 2) > changing buffer (C-x o) > opening poems.org (C-x C-f "reference/poems/poems.org") > pasting headline (C-y) > changing buffer (C-x o) > removing split view (C-x 1) > > Poems.org is not part of the agenda because it is reference material > and not an active file. > It is also not a refile target because I would have to make every .org > file in all subdirectories a refile target and sometimes the > appropriate file does not yet exist, in which case I need to create > it. > > Any ideas? > Do I need to further try to make clear what I mean? > > Greetings, > Eraldo >
Since having so many targets for refiling slows down refiling a lot, I do this here. I've set `org-refile-targets' like this (custom-set-variables): '(org-refile-targets (quote ((org-agenda-files :maxlevel . 3) (sr-org-refile-targets :maxlevel . 2)))) In addition, I have this here in my setup: (defvar sr-org-refile-targets nil "List of refile targets for Org-remember. See `org-refile-targets'.") (defvar sr-org-refile-dir-excludes "^[#\\.].*$") (defvar sr-org-refile-file-excludes "^[#\\.].*$") (defun sr-find-org-refile-targets (&optional recurse dirs file-excludes dir-excludes) "Fill the variable `sr-org-refile-targets'. Optional parameters: recurse If `t', scan the directory recusively. dirs A list of directories to scan for *.org files. file-excludes Regular expression. If a filename matches this regular expression, do not add it to `sr-org-refile-targets'. dir-excludes Regular expression. If a directory name matches this regular expression, do not add it to `sr-org-refile-targets'." (let ((targets (or dirs (list org-directory))) (fex (or file-excludes "^[#\\.].*$")) (dex (or dir-excludes "^[#\\.].*$")) path) (dolist (dir targets) (if (file-directory-p dir) (let ((all (directory-files dir nil "^[^#\\.].*$"))) (dolist (f all) (setq path (concat (file-name-as-directory dir) f)) (cond ((file-directory-p path) (if (and recurse (not (string-match dex f))) (sr-find-org-refile-targets t (list path) fex dex))) ((and (string-match "^[^#\\.].*\\.org$" f) (not (string-match fex f))) (setq sr-org-refile-targets (append (list path) sr-org-refile-targets)))))) (message "Not a directory: %s" path)) ))) (defun sr-add-to-org-refile-targets ( recurse dirs ) "Add a directory to org-refile targets recursively." (interactive "P\nDdirectory: ") (sr-find-org-refile-targets (if recurse t nil) (list dirs) sr-org-refile-file-excludes sr-org-refile-dir-excludes) (message "org-refile-targets: \n%s" sr-org-refile-targets)) Now I call the function `sr-add-to-org-refile-targets' whenever I need to add all Org-files in a directory recursively. Sebastian _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode