[ESS] Function template

Stephen Eglen S.J.Eglen at damtp.cam.ac.uk
Wed Jan 23 01:51:18 CET 2013

hi Marc,

>> > ess-function-template is a variable defined in `ess-custom.el'.
>> > Its value is " <- function( )
>> > {
>> > }"
>> > Original value was
>> > " <- function( )\n{\n\n}\n"

I'm a bit confused as to why it gives 'original value was' in the help
buffer.  Have you changed the value of this variable anywhere?  

However, like Vitalie, I don't use this function, and I think there is a
problem; when I do C-c C-e C-d somenewname RET I get an empty buffer.  A
quick scan showed that ess-dump-object is making the new buffer
contents, ess-function-template is not invoked.  The critical logic of
using ess-function-template is within the defun
ess-find-dump-file-other-window where we have:

  (if ess-function-template
        (goto-char (point-max))
        (if (re-search-backward ess-dumped-missing-re nil t)

That re-search-backward seems to be nil for me.

Martin: is this anything to do with old S (not R) behaviour?  We are
clearly at odds with the documentation:

8.1 Creating or modifying S objects

To edit an S object, type

   * `C-c C-d' (`ess-dump-object-into-edit-buffer')
     Edit an S object in its own edit buffer.

   from within the ESS process buffer (`*S*').  You will then be
prompted for an object to edit: you may either type in the name of an
existing object (for which completion is available using the `TAB' key), or
you may enter the name of a new object.  A buffer will be created
containing the text representation of the requested object or, if you
entered the name of a non-existent object at the prompt and the
variable `ess-function-template' is non-`nil', you will be presented
with a template defined by that variable, which defaults to a skeleton
function construct.

BTW, if we update this code, the (if cond (progn ...) can be simplified
to (when cond ...)  Also the doc refers to C-c C-d (at least twice I
think) as the keybinding, which is now out of date.  I can update the
code, with my suggestion being that if the buffer is empty, we just
insert the template and move point accordingly... 


>> >
>> > Documentation:
>> > If non-nil, function template used when editing nonexistent objects.
>> >
>> > The edit buffer will contain the object name in quotes, followed by
>> > this string. Point will be placed after the first parenthesis or
>> > bracket.
>> >
>> > You can customize this variable.
>> >
>> -----------------------------------------------------------------------------
>> >
>> > Do I need to add something to my .emacs to make this work? Thanks in
>> > advance.
>> >
>> >       [[alternative HTML version deleted]]
>> >
>> > ______________________________________________
>> > ESS-help at r-project.org mailing list
>> > https://stat.ethz.ch/mailman/listinfo/ess-help
> 	[[alternative HTML version deleted]]
> ______________________________________________
> ESS-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/ess-help

More information about the ESS-help mailing list