From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nick Dokos Subject: Re: Export an org file from the command line in the background Date: Wed, 19 Oct 2011 17:12:21 -0400 Message-ID: <6830.1319058741@alphaville.americas.hpqcorp.net> References: <20111019162146.GA24998@client199-154.wlan.hu-berlin.de> <81fwip3q0k.fsf@gmail.com> <20111019201437.GA28039@kenny.fritz.box> Reply-To: nicholas.dokos@hp.com Return-path: Received: from eggs.gnu.org ([140.186.70.92]:48869) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RGdR3-0001xM-28 for emacs-orgmode@gnu.org; Wed, 19 Oct 2011 17:12:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RGdR1-0000uS-Hi for emacs-orgmode@gnu.org; Wed, 19 Oct 2011 17:12:25 -0400 Received: from g4t0016.houston.hp.com ([15.201.24.19]:45862) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RGdR1-0000uM-1b for emacs-orgmode@gnu.org; Wed, 19 Oct 2011 17:12:23 -0400 Received: from g4t0009.houston.hp.com (g4t0009.houston.hp.com [16.234.32.26]) by g4t0016.houston.hp.com (Postfix) with ESMTP id 1867814063 for ; Wed, 19 Oct 2011 21:12:22 +0000 (UTC) In-Reply-To: Message from Viktor Rosenfeld of "Wed, 19 Oct 2011 22:14:37 +0200." <20111019201437.GA28039@kenny.fritz.box> 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: emacs-orgmode@gnu.org Cc: nicholas.dokos@hp.com Viktor Rosenfeld wrote: > Hi, > > Jambunathan K wrote: > > > > > C-h v org-export-run-in-background > > This only works for org-export, but not for org-export-as-XXX. > > Additionally, it appears that setting org-confirm-babel-evaluate locally > does not have an effect on background exports. Even setting it globally > in a running Emacs instance won't work; the command has to be in a file > that is loaded during Emacs startup. > > The help contains the following text which I don't understand: > > This variable is safe as a file local variable if its value > satisfies the predicate which is byte-compiled expression. > > Cheers, > Viktor > > > > > > Hi, > > > > > > is it possible to export an org file from the command line, so that a > > > currently running Emacs instance is not disturbed? I want to export the > > > attached org file and run the included source blocks, so I have an > > > activity report in the end. I use the shell script pasted below, but > > > there are two problems: > > > > > > - my Emacs instance is blocked during the execution of the shell > > > scripts contained in the file > > > - the script globally sets org-confirm-babel-evaluate to nil for my > > > Emacs instance > > > > > > The second problem could possibly be solved with a local file variable. > > > But the first problem remains. If I use emacs instead of emacsclient, it > > > complains about a running Emacs instance. > > > > > > #!/bin/sh > > > > > > emacsclient -c \ > > > --eval "(progn > > > (find-file \"macports.org\")) > > > (setq org-confirm-babel-evaluate nil) > > > (org-export-as-html 3) > > > (kill-buffer) > > > (delete-frame))" > > > > > > I'm using Org-Mode 7.7. > > > The usual method is to run a separate emacs in batch mode: that will avoid any conflicts with the running instance. But batch implies -q, so you will have to provide a minimal .emacs file that sets up enough structure to enable you to do what you want: emacs --batch -l ~/minimal.emacs \ --eval '(let ((org-confirm-babel-evaluate nil)) (find-file "macports.org") (org-export-as-html 3))' should do it. minimal.emacs would just load org - modulo path differences, something like: --8<---------------cut here---------------start------------->8--- ;;; -*- mode: emacs-lisp -*- ;;; constant part (add-to-list 'load-path (expand-file-name "~/src/emacs/org/org-mode/lisp")) (add-to-list 'load-path (expand-file-name "~/src/emacs/org/org-mode/contrib/lisp")) (add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode)) (require 'org-install) --8<---------------cut here---------------end--------------->8--- Also note the let bind of org-confirm-babel-evaluate: that would alleviate the second problem you mentioned above in the emacsclient case (and although it's irrelevant in the emacs case, I still prefer the let bind over the explicit setq). HTH, Nick