On Tue, 17 Jan 2012 15:09:22 +0000, David Edmondson <dme at dme.org> wrote:
> On Tue, 17 Jan 2012 18:49:36 +0400, Dmitry Kurochkin <dmitry.kurochkin at 
> gmail.com> wrote:
> > > +         # We cannot call 'test_emacs' in a subshell, because
> > > +         # the setting of EMACS_SERVER would not persist
> > > +         # throughout a sequence of tests, so we use a
> > > +         # temporary file.
> > > +         tmp="$TMPDIR"; if [ -z "$tmp" ]; then tmp=/tmp; fi
> > > +         output="$tmp/test_emacs_output.$$"
> > > +         test_emacs "$1" > "${output}"
> > > +         result=$(cat "${output}")
> > > +         rm -f "${output}"
> > 
> > I wonder if there is any bash trick which can help here?
> 
> I'm not aware of one, but I'm not a bash expert.

No shell trick possible there.

> 
> > Another option is to start emacs server before using test_emacs in
> > subshell.  See emacs-subject-to-filename for an example.  I think this
> > is a better option than using a temporary file.
> 
> I think that's a very poor option. Forcing knowledge the breakage into
> all of the users may make applying any future fix more difficult.

The alternative would be to replace
emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)"

with something like:

   case $1 in --stdout-to-output)
        shift
        output=$(emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)")
        return
   esac
   emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)"

Tomi

Reply via email to