From pinard at iro.umontreal.ca  Tue May  9 15:17:05 2006
From: pinard at iro.umontreal.ca (=?iso-8859-1?Q?Fran=E7ois?= Pinard)
Date: Tue, 9 May 2006 09:17:05 -0400
Subject: [Rd] "Unfelicity" :-) with edit()
In-Reply-To: <445FEF2C.5000800@stats.uwo.ca>
References: <20060509010355.GA25342@alcyon.progiciels-bpi.ca>
	<445FEF2C.5000800@stats.uwo.ca>
Message-ID: <20060509131705.GA3969@alcyon.progiciels-bpi.ca>

[Duncan Murdoch]

>I'll fix it.

Thanks, Duncan.  While I quite understand that more serious work should 
be done within real sources files, fixing and editing is still useful 
for quick, evanescent interactive toying.

>edit() is a hack, so you should expect problems.  You're better off 
>keeping your source in an editor and using source() to get it.

This is not the first time I read such a remark.  Maybe it would be 
worth a note within ?edit.

>There is no way it could preserve the environment of a function [...]

That might be worth another note within ?edit.

Speaking of which, this "x <- edit()" usage (interactively suggested by 
fix when it fails to re-parse the result of edition) is not covered by 
?edit.  I mean that by reading ?edit, one does not get information about 
what a mere "edit()" does.  It might be useful that ?edit says a few 
words about this particular usage.

The remaining of this message quotes the original message:

[Fran?ois Pinard]
>Hi, people.  This is about R 2.3.0 under Linux.

>It seems that edit() may change a function environment.  Here is 
>a transcript, more comments follow:

>======================================================================>
>>fix(f)

>>f
>function ()
>{
>}

>>fix(f)
>Erreur dans edit(name, file, title, editor) :
>         une erreur s'est produite ? la ligne 3
>  utilisez une commande du genre
>  x <- edit()
>  pour corriger

>>f <- edit()

>>f
>function ()
>{
>}
><environment: base>
>======================================================================<

>The initial ``fix(f)`` called an editor, which I exited right away.  For 
>the second ``fix(f)``, I used the editor for adding a slash between 
>braces, and exited.  The French comment produced by R speaks about an 
>error at line 3 and suggests using something like ``x <- edit()`` to 
>make a correction.  On the third call to the editor, I remove the slash 
>and exit.  Now, the environment of the function became "base".

>This has unfortunate effects when editing a more substantial function, 
>because for example, "stats" or "utils" is not readily available anymore 
>after the editing.  Is it reasonable to suggest an improvement in the 
>mechanics of edit(), for alleviating this drawback ?

-- 
Fran?ois Pinard   http://pinard.progiciels-bpi.ca



[Rd] "Unfelicity" :-) with edit()
=?iso-8859-1?Q?Fran=E7ois?= Pinard