emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Handling errors in command line exporting of agenda?


From: Nick Dokos
Subject: Re: [O] Handling errors in command line exporting of agenda?
Date: Mon, 08 Aug 2011 17:09:14 -0400

John Hendy <address@hidden> wrote:

> On Mon, Aug 8, 2011 at 3:37 PM, Nick Dokos <address@hidden> wrote:
> > John Hendy <address@hidden> wrote:
> >
> >> On Mon, Aug 8, 2011 at 1:59 PM, suvayu ali <address@hidden> wrote:
> >> > Hi John,
> >> >
> >> > On Mon, Aug 8, 2011 at 8:53 PM, John Hendy <address@hidden> wrote:
> >> >>> If you can use wildcards to specify your files, it might be possible by
> >> >>> just one extra call to --eval. Something like this might work:
> >> >>>
> >> >>> emacs --batch -l ~/.emacs --eval '(find-file-read-only "<wildcard>" 
> >> >>> t)' \
> >> >>>      --eval '(org-batch-agenda "w")' > ~/org/aux/agenda-export.txt
> >> >>>
> >> >>
> >> >> Hmm. That might work. Everything I pull from is in ~/org... could the
> >> >> wildcard simply be "~/*.org"? Forgive my emacs wildcard ignorance.
> >> >
> >> > As far as I know, emacs accepts any wildcard that is valid in the shell.
> >> > Since all your files are in ~/org, I would say try "~/org/*.org". The
> >> > '~/org/' limits it to files within your org directory and the '*.org'[1]
> >> > limits it to all files with a .org extension.
> >
> > Not true - if you want wildcards expanded, you have to do it yourself.
> > E.g. C-h f file-expand-wildcards
> >
> > ,----
> > | file-expand-wildcards is a compiled Lisp function in `files.el'.
> > |
> > | (file-expand-wildcards PATTERN &optional FULL)
> > |
> > | Expand wildcard pattern PATTERN.
> > | This returns a list of file names which match the pattern.
> > |
> > | If PATTERN is written as an absolute file name,
> > | the values are absolute also.
> > |
> > | If PATTERN is written as a relative file name, it is interpreted
> > | relative to the current default directory, `default-directory'.
> > | The file names returned are normally also relative to the current
> > | default directory.  However, if FULL is non-nil, they are absolute.
> > `----
> >
> 
> Thanks. I tried with this based on this new information:
> 
> ,---
> |  emacs --batch -l ~/.emacs --eval '(find-file-read-only \
> | (file-expand-wildcards "~/org/*.org") t)' \
> | --eval '(org-batch-agenda "e")' > ~/org/aux/agenda-export.txt
> `---
> 
> But I get this error:
> ,---
> | Wrong type argument: stringp, ("~/org/file1.org" "~/org/file2.org"... etc.)
> `---
> 
> I'm assuming something about how I used this is returning the wrong data type?

Yes:

| This returns a list of file names which match the pattern.

so you have to loop over the list.

Nick

PS. BTW, don't take this as an endorsement of the course you are
following.  I don't have the time to think much about it, and I don't
have a better solution, but personally, I would try to find another
method: my knee-jerk reaction was to use emacsclient if emacs is running
(if not, fall back to emacs --batch: since no other instance is running,
you wouldn't have to deal with locking in that case).  But that may or
may not work - I just don't know.

> 
> As another option, if I run this and just respond with "p" when I'm
> asked about the lock (proceed), it works. I'm assuming that running
> agenda won't mess up an unsaved file, but that it just accesses it for
> todos and other information. If this is the case and an automatic
> "proceed" is safe... is there a way to pass some sort of "--force"
> option to emacs from the command line to override the lock when it's
> encountered?
> 
> I'm running through cron and thus am not able to manually respond to the 
> prompt.
> 
> 
> Thanks,
> John
> 
> > Nick
> >
> >> >
> >>
> >> Bummer, this is not working:
> >>
> >> ,---
> >> | emacs -batch -l ~/.emacs -eval '(find-file-read-only "~/org/*.org" t)' \
> >> | -eval '(org-batch-agenda "e")' > ~/org/aux/agenda-export.txt
> >> `---
> >>
> >> Do you see anything wrong with that? I guess I wonder what that first
> >> part will do as perhaps the org-batch-agenda command is not
> >> necessarily going to follow suit with the read-only command. As in,
> >> does the first eval command affect anything that the org-batch-agenda
> >> command is going to do? Is it trying to do the equivalent of opening
> >> up all *.org files in read-only buffers and then run the agenda
> >> export?
> >>
> >>
> >> Thanks,
> >> John
> >> > I hope this helps. :)
> >> >
> >> > Footnotes:
> >> >
> >> > [1] The asterisk (*) stands for zero or more characters. You can find
> >> >    more details in `man bash` under the heading "Pattern Matching".
> >> >
> >> > --
> >> > Suvayu
> >> >
> >> > Open source is the future. It sets us free.
> >> >
> >>
> >
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]