[ESS] Pause between startup commands

Martin Maechler maechler at stat.math.ethz.ch
Fri Jan 5 18:56:46 CET 2007

I'm finally getting back to this :

>>>>> "MM" == Martin Maechler <maechler at stat.math.ethz.ch>
>>>>>     on Wed, 23 Aug 2006 13:42:21 +0200 writes:

>>>>> "MM" == Martin Maechler <maechler at stat.math.ethz.ch>
>>>>>     on Wed, 23 Aug 2006 11:44:25 +0200 writes:

>>>>> "DavidB" == Brahm, David <David.Brahm at geodecapital.com>
>>>>>     on Tue, 22 Aug 2006 15:53:07 -0400 writes:

    DavidB> When I start up ESS 5.3.1, I get:
    >>>> if(!exists("baseenv", mode="function")) baseenv <-
    >>>> function() NULL
    DavidB> options(STERM='iESS', editor='emacsclient')
    >>>> >

    DavidB> A little ugly, as the two commands run together.

    MM> well, yes,...  {we never felt a need to consider a
    MM> patch, now that you bring it up with a patch proposal
    MM> makes it a different story}

    MM>   [..........]

    MM> and many such cases of lines sent too fast and "> > ..."
    MM> are known to happen in similar cases.  I think the
    MM> reason is that emacs has become too fast :-) The crucial
    MM> function is (ess-eval-linewise .)  defined in
    MM> lisp/ess-inf.el and there I think it's (line 1009):

  [...trying something in ess-eval-linewise that does NOT work ...]

    MM> Rather it's the part in ( ess-eval-linewise ) that says
    MM> "... Terrible kludge ..."  and later ;; A kludge to
    MM> prevent the delay between insert and process output ;;
    MM> affecting the display.  A case for a
    MM> comint-send-input-hook?

    MM> that probably could be tweaked.  But I don't have the
    MM> time to try getting into this at the moment.

I have a pretty nice solution --- without any (sleep-for ..)
uglyness but only for non-Windows {more specifically for the
case when   microsoft-p  is not true, i.e. when the DDE client
is *not* used}.
Since (if microsoft-p ...), the function (ess-eval-linewise-ddeclient ..) 
is used and that does not allow the explicit fix that I've added
for the non-DDE case.

Since I can't test that case at all, I'm asking for some user
feedback of Windows ESS users now:

Do you see "lines running together" in the initial startup,
     if(!exists("baseenv", mode="function")) baseenv <- function() NULL
     options(STERM='iESS', editor='emacsclient')

not nicely ending in the *R* buffer as
> if(!exists("baseenv", mode="function")) baseenv <- function() NULL
> options(STERM='iESS', editor='emacsclient')

If you do see that problem on windows, I think we need a
"(sleep-for ..)" solution there
and I have implemented it already more or less,
but don't want to put it - and all related bits {customization of the
timeout length, e.g.} into the code, unless there's a need.

Martin Maechler,
ETH Zurich

More information about the ESS-help mailing list