[ESS] options(error=recover) produces ESS freeze

Peter Meilstrup peter.meilstrup at gmail.com
Mon Nov 9 22:50:23 CET 2009


On Nov 9, 2009, at 5:54 AM, Martin Maechler wrote:
>>> I keep reproducing a very simple recipe for making ESS
>>> and the entire Emacs process freeze:
>>>
>>> 1. set options(error=recover) 2. Move to a buffer where
>>> there is a group of statements, one of which will produce
>>> an error. For example:
>>>
>>> options(error=recover) library(datasets) avg <-
>>> by(warpbreaks, list(warpbreaks$wool, warpbreaks$tnsion),
>>> function(x)mean(x$breaks))) #previous line generates
>>> error due to typo print(avg)
>>>
>>> 3. use C-p or C-r etc. to evaluate the paragraph.
>>> 4. RESULT: emacs becomes completely unresponsive.
>>>
>>> This makes ESS darn near unusable for me. This can't be
>>> normal, can it?
>>>
>>> I'm using ESS 5.5 with R 2.10.0 on both emacs 22.1.1 (OS
>>> X built in) and Aquamacs (22.3.1).
>>>
>>> Can anyone shed light?
>>>
>>> Peter
>
>   {But note: The simply workaround *IS*  'C-g'  aka  "Ctrl G" !! }
>
> Keith Ponting, in his reproducible example of today, in this thread,
> mentions that the prompt is '^Selection: '
> in his case.
> So one could argue that  ESS  should be fixed and detect
> '^Selection: '  as a prompt.
> The bad news is that with R being multilingual, you only get
> 'Selection: ' if you are in an English language locale, or if
> there's no valid translation available for that R.
> E.g. in a German language locale, you get
>     'Fehler'  instead of 'Error'
> and  'Auswahl' instead of 'Selection'
>
> Now, we'd need pretty sophisticated code in ESS which would be
> able to catch these things correctly independent of the current
> locale.
> I think a smart solution would be:
> 1) When ESS starts up R, quickly find out what word the current
>   locale uses for  "Error"  and what for "Selection" and store
>   these.
> 2a) Later, ESS "should know" if options(error=recover) is active.
>    {or more generally, just if the 'error' options differs from NULL}
>
> 2b) In those cases, it should not wait for the default prompt
>    necessarily, but rather for the equivalent of "Selection: "
>
> Hmm, pretty messy, unfortunately.
>
> For the moment, I'd rather advertize the workaround
>
> ---->  ===         ------
> ---->  C-g   aka  "Ctrl G" !!
> ---->  ===         ------

Thanks Martin. Ctrl-G works for now.

Since "Selection:" comes from utils::menu(), which in turn calls  
gettext(), might it be a more general solution to sidestep the  
internationalization issues you raise, and instead have a way to  
detect when utils::menu or gettext is being called, perhaps putting a  
trace on gettext during ESS startup?

Peter



More information about the ESS-help mailing list