[Rd] [patch] Add support for editor function in edit.default

Deepayan Sarkar deepayan.sarkar at gmail.com
Tue Sep 9 08:24:07 CEST 2014


On Sun, Aug 24, 2014 at 9:14 AM, Scott Kostyshak <skostysh at princeton.edu> wrote:
> On Tue, May 20, 2014 at 5:55 AM, Scott Kostyshak <skostysh at princeton.edu> wrote:
>> Regarding the following extract of ?options:
>>      ‘editor’: a non-empty string, or a function that is called with a
>>           file path as argument.
>>
>> edit.default currently calls the function with three arguments: name,
>> file, and title. For example, running the following
>
> To be clear with what I view as problematic, note in the above that
> the documentation says the function is called with a file path as an
> argument, suggesting one argument; but in practice it is called with
> three arguments.
>
>> vimCmd <- 'vim -c "set ft=r"'
>> vimEdit <- function(file_) system(paste(vimCmd, file_))
>> options(editor = vimEdit)
>> myls <- edit(ls)
>>
>> gives "Error in editor(name, file, title) : unused arguments (file, title)".
>>
>> The attached patch changes edit.default to call the editor function
>> with just the file path. There is at least one inconsistent behavior
>> that this patch causes in its current form. It does not obey the
>> following (from ?edit):
>>      Calling ‘edit()’, with no arguments, will result in the temporary
>> file being reopened for further editing.
>>
>> I see two ways to address this: (1) add a getEdFile() function to
>> utils/edit.R that calls a function getEd() defined in edit.c that
>> returns DefaultFileName; or (2) this patch could be rewritten in C in
>> a new function in edit.c.
>>
>> Is there any interest in this patch?
>> If not, would there be interest in an update of the docs, either
>> ?options (stating the possibility that if 'editor' is a function, it
>> might be called with 'name', 'file', and 'title' arguments) or ?edit
>>  ?
>
> Any interest in this patch? If not, would a patch for the
> documentation be considered?

Given that edit() itself is called with the three arguments, it seems
more general to pass them to the editor function, and I don't see the
need for a special case. You can always write your function as

vimEdit <- function(file_, ...) system(paste(vimCmd, file_))

I will clarify the documentation.

Best,
-Deepayan



More information about the R-devel mailing list