From: Sebastian <sebastian_rose@gmx.de>
To: Eraldo Helal <eraldo@eraldo.at>
Cc: Bernt Hansen <bernt@norang.ca>, Org-Mode <emacs-orgmode@gnu.org>,
Carsten Dominik <carsten.dominik@gmail.com>
Subject: Re: Re: add a whole directory as one item to refile targets
Date: Mon, 12 Oct 2009 18:47:46 +0200 [thread overview]
Message-ID: <1255366066.5500.12.camel@beteigeuze> (raw)
In-Reply-To: <938fae2d0910120648t5147b4d9y3339d3f06bc732e7@mail.gmail.com>
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
next prev parent reply other threads:[~2009-10-12 16:47 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-04 22:30 add a whole directory as one item to refile targets Eraldo Helal
2009-10-08 7:02 ` Carsten Dominik
2009-10-08 8:17 ` Syntax coloring not automatic Helge A. Gudmundsen
2009-10-10 21:48 ` add a whole directory as one item to refile targets Eraldo Helal
2009-10-10 22:06 ` Bernt Hansen
2009-10-12 13:48 ` Eraldo Helal
2009-10-12 14:15 ` Carsten Dominik
2009-10-17 13:19 ` Eraldo Helal
2009-10-12 16:47 ` Sebastian [this message]
2009-10-17 10:58 ` Eraldo Helal
2009-10-17 12:59 ` Sebastian
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1255366066.5500.12.camel@beteigeuze \
--to=sebastian_rose@gmx.de \
--cc=bernt@norang.ca \
--cc=carsten.dominik@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=eraldo@eraldo.at \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).