[ESS] no output in ESS until interrupt

Vitalie Spinu spinuvit at gmail.com
Sat Dec 22 12:10:51 CET 2012


  >> Ross Boylan <ross at biostat.ucsf.edu>
  >> on Fri, 21 Dec 2012 16:42:30 -0800 wrote:

  > Oh boy, I just realized I was having this problem on a completely different
  > system:
  > ESS 5.11, emacs 23.2.1, Debian GNU/Linux squeeze.
  > It may have been happening on Windows too, but I'm much less sure of that.

  > On 12/21/2012 3:47 PM, Vitalie Spinu wrote:
  >> >> Ross Boylan <ross at biostat.ucsf.edu>
  >> >> on Fri, 21 Dec 2012 15:32:11 -0800 wrote:
  >> 
  >> > While debugging an R function I noticed that the main *R* window did not show
  >> > any output after an error occurred, until I hit ^G.  This was true even when the
  >> > output was from the recover() function.  ESS may not have shown the output of a
  >> > regular, but slow, function either, even if there was no error.
  >> 
  >> > Are things supposed to work that way?  Anything I can do about it? I don't
  >> > recall this problem in the past, but that may be because I wasn't using
  >> > long-running functions.
  >> 
  >> This happens because, by default, ESS waits for the output before
  >> printing (we hope to lift this limitation some day).
  > I don't understand the previous sentence.  If there is no output, there is
  > nothing to print.  And my problem is that there is output (e.g., a
  > traceback)--at least in the sense that R has finished its part and wants to send
  > output--but it is not printed.  Instead, emacs is unresponsive (i.e., I can't
  > even switch to other buffers) until I hit ctl-g, at which point the output
  > appears.

That is a bug probably. If R finished his part, ESS should print output
either way. 

  > 
  >> 
  >> If your problem is in the console, then you have to set
  >> comint-process-echoes to nil in ess hook.
  > By console, do you mean the *R* buffer?  That is where the output fails to
  > appear.  On the other hand, since everything locks up, it's not just in the
  > console.

  > Hmm.. comint-process-echoes is t in that buffer.  Now I'm kind of surprised I
  > see anything.  Why does hitting ctl-g make a difference?

Because emacs wiats for a subprocess to finish, and because emacs (as
yet) is not multithreaded you have to wait. C-g unlocks the waiting
loop.

  > I set comint-process-echoes to nil (in the *R* buffer, though not the one from
  > which I sent the command, for which it was already nil), but it didn't change
  > the behavior.

This works with a recent version of ESS, there has been quite some work
done on these issues recently. Please upgrade.

    Vitalie



More information about the ESS-help mailing list