On Mon, Aug 8, 2011 at 4:09 PM, Nick Dokos <nicholas.do...@hp.com> wrote: > John Hendy <jw.he...@gmail.com> wrote: > >> On Mon, Aug 8, 2011 at 3:37 PM, Nick Dokos <nicholas.do...@hp.com> wrote: >> > John Hendy <jw.he...@gmail.com> wrote: >> > >> >> On Mon, Aug 8, 2011 at 1:59 PM, suvayu ali <fatkasuvayu+li...@gmail.com> >> >> wrote: >> >> > Hi John, >> >> > >> >> > On Mon, Aug 8, 2011 at 8:53 PM, John Hendy <jw.he...@gmail.com> 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.
Ah. Got it. I have no elisp-fu to figure that out. > > 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. > Understood. I though the batch method would be great until all of this happened. All I want is some kind of agenda "snapshot generator" so I can have a visible reminder of that's going on always present, whether emacs is running or not. I'm running equipment and out of my office all the time. I don't live in emacs and don't even have it open unless I'm taking notes actively. Thus, having it on my wallpaper would be my ideal solution as a reminder of what I need to do. John >> >> 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. >> >> > >> >> >> > >> >