From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: Handling errors in command line exporting of agenda? Date: Mon, 08 Aug 2011 17:09:14 -0400 Message-ID: <5653.1312837754@alphaville.americas.hpqcorp.net> References: <4691.1312835858@alphaville.americas.hpqcorp.net> Reply-To: nicholas.dokos@hp.com Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([140.186.70.92]:54843) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QqX4X-00026j-GO for emacs-orgmode@gnu.org; Mon, 08 Aug 2011 17:09:18 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QqX4W-0005tW-3K for emacs-orgmode@gnu.org; Mon, 08 Aug 2011 17:09:17 -0400 Received: from g1t0026.austin.hp.com ([15.216.28.33]:45446) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QqX4V-0005tR-QQ for emacs-orgmode@gnu.org; Mon, 08 Aug 2011 17:09:16 -0400 In-Reply-To: Message from John Hendy of "Mon\, 08 Aug 2011 15\:54\:32 CDT." List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: John Hendy Cc: nicholas.dokos@hp.com, emacs-orgmode John Hendy wrote: > On Mon, Aug 8, 2011 at 3:37 PM, Nick Dokos wrote: > > John Hendy wrote: > > > >> On Mon, Aug 8, 2011 at 1:59 PM, suvayu ali wrote: > >> > Hi John, > >> > > >> > On Mon, Aug 8, 2011 at 8:53 PM, John Hendy wrot= e: > >> >>> If you can use wildcards to specify your files, it might be possib= le by > >> >>> just one extra call to --eval. Something like this might work: > >> >>> > >> >>> emacs --batch -l ~/.emacs --eval '(find-file-read-only "= " t)' \ > >> >>> =C2=A0 =C2=A0 =C2=A0--eval '(org-batch-agenda "w")' > ~/org/aux/ag= enda-export.txt > >> >>> > >> >> > >> >> Hmm. That might work. Everything I pull from is in ~/org... could t= he > >> >> wildcard simply be "~/*.org"? Forgive my emacs wildcard ignorance. > >> > > >> > As far as I know, emacs accepts any wildcard that is valid in the sh= ell. > >> > 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. =C2=A0However, if FULL is non-nil, they are absolu= te. > > `---- > > >=20 > Thanks. I tried with this based on this new information: >=20 > ,--- > | 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 > `--- >=20 > But I get this error: > ,--- > | Wrong type argument: stringp, ("~/org/file1.org" "~/org/file2.org"... e= tc.) > `--- >=20 > 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. >=20 > 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? >=20 > I'm running through cron and thus am not able to manually respond to the = prompt. >=20 >=20 > Thanks, > John >=20 > > 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 > >> > =C2=A0 =C2=A0more details in `man bash` under the heading "Pattern M= atching". > >> > > >> > -- > >> > Suvayu > >> > > >> > Open source is the future. It sets us free. > >> > > >> > > >=20