From maechler at stat.math.ethz.ch  Fri Aug 20 14:29:41 2004
From: maechler at stat.math.ethz.ch (Martin Maechler)
Date: Fri Aug 20 14:29:50 2004
Subject: [Rd] Unbalanced parentheses printed by warnings() crash text
	editor
In-Reply-To: <x2zn4qm8l8.fsf@biostat.ku.dk>
References: <000501c48634$15f86c00$e3489b53@amd>
	<n9ibi0pr92qeodvmmiqng1l7df6rjc64a3@4ax.com>
	<x2zn4qm8l8.fsf@biostat.ku.dk>
Message-ID: <16677.61109.796888.448784@gargle.gargle.HOWL>

>>>>> "PD" == Peter Dalgaard <p.dalgaard@biostat.ku.dk>
>>>>>     on 20 Aug 2004 12:01:39 +0200 writes:

    PD> Duncan Murdoch <murdoch@stats.uwo.ca> writes:
    >> >I could have sent this to the ESS or Xemacs devel list, but ESS & Xemacs'
    >> >attempt to find balanced parentheses accross many lines seems sensible,
    >> >and is needed with very long functions.
    >> 
    >> Yes, it's sensible to try, but it is a bug that they don't fail
    >> gracefully.

    PD> (Actually, it is not sensible; ESS should try harder to figure out
    PD> what is actually R code. Much as I love ESS, it is a persistent fly in
    PD> the ointment when the opening blurb comes up with "for" and "in" in
    PD> magenta.)

I'm chiming in, since I have been addressed explicitly here (for
whatever reason):

Yes, yes, and yes to Duncan's and Peter's notes:

- This should have gone to the ESS-help mailing list
- it's no bug in R and a bug in ESS/Xemacs (actually a bug in Xemacs combined
  with a missing feature in ESS).

Martin Maechler

For the sake of ESS-help, here's the original message as well:

>>>>> "Mayeul" == Mayeul KAUFFMANN <mayeul.kauffmann@tiscali.fr>
>>>>>     on Thu, 19 Aug 2004 23:32:51 +0200 writes:

    Mayeul> ... Hope it is the good place for this
    Mayeul> (I discuss the question of the right place below).

    Mayeul> Most of the time, warnings are more than 1000

[?? you probably mean something like '100', not '1000', right?]

    Mayeul> characters long and thus are truncated.  Most of the
    Mayeul> time, this generates printouts with unbalanced parentheses.

    Mayeul> Intelligent text editors which do parentheses
    Mayeul> highlighting get very confused with this.  After too
    Mayeul> many warnings, they give errors, and may even crash.

crashing *must* be a bug of the editor setup (ESS - XEmacs -
Windows), not of R.

    Mayeul> Specifically, I use ESS and XEmacs for Windows Users
    Mayeul> of R (by John Fox) which is advised to do at
    Mayeul> http://ess.r-project.org/ with a buffer for text
    Mayeul> editing and an inferior ESS (R) buffer.  (I
    Mayeul> downloaded the latest Xemacs and ESS a month ago).

    Mayeul> After too many warnings (with unbalanced
    Mayeul> parentheses), Xemacs swithes to an ESS-error buffer
    Mayeul> which says "error Nesting too deep for parser".  In
    Mayeul> some case, when back in R buffer, typing any letter
    Mayeul> switches back to the ESS-error Buffer.  In other
    Mayeul> case, it simply takes ages (until you kill Xemacs)
    Mayeul> or it crashes.  In most case, the R process is lost.

    Mayeul> I could have sent this to the ESS or Xemacs devel
    Mayeul> list, but ESS & Xemacs' attempt to find balanced
    Mayeul> parentheses accross many lines seems sensible, and
    Mayeul> is needed with very long functions.

    Mayeul> A workaround would be to change the function that print warnings.

    Mayeul> Instead of, for instance,
    Mayeul> "error message xxxxxxxxxx in: function.yyyyyy(zzzzzzzzz,zzzzzzz,   ..."

    Mayeul> It may print
    Mayeul> "error message xxxxxxxxxx in: function.yyyyyy(zzzzzzzzz,zzzzzzz,   ...)"

    Mayeul> The function should truncate the error message, find
    Mayeul> how many parenthesis and brackets are open in the
    Mayeul> remaining part, substract the number of closing
    Mayeul> parenthesis and brackets, and add that many
    Mayeul> parenthesis at the end.  (Xemacs parentheses
    Mayeul> highligher regards "(" and "[" as equivalent)


    Mayeul> Mayeul KAUFFMANN
    Mayeul> Univ. Pierre Mendes France
    Mayeul> Grenoble - France


[Rd] Unbalanced parentheses printed by warnings() crash text editor
Martin Maechler