[ESS] ESS/R completion UI

Erik Iverson iverson at biostat.wisc.edu
Sun Feb 1 18:41:41 CET 2009


R provides a relatively sophisticated completion mechanism through its "utils" 
package, functions ".guessTokenFromLine", ".completeToken", and 
".retrieveCompletions."  For instance, these functions recognize the '$' 
character for lists, and will complete names within the list after that 
character.  I did not realize this until recently, but go to your *R* buffer, and do
 >   test <- list(temp1 = 1, temp2 = 2, temp3 = 3, another = 4)
and then try
 >   test$t , and hit TAB.  It should complete "temp" and upon hitting TAB 
again, provide the possible completions in a separate window.

They also recognize function argument names, so that
 >   lm( TAB will show the function arguments in another window.
This is all provided with R, no ESS needed.

ESS adds to this mechanism by providing completions in R source buffers, by 
default with C-c TAB.

There are now several "completion frameworks" provided as Emacs packages.  These 
packages attempt to provide a UI framework for completion, as an abstraction 
layer that connects to whatever backend you want (in our case, the R functions 
above).  The idea is that the completion UI would look the same whether you're 
completing R functions, C++ objects, Python functions, etc.

There is company-mode http://nschum.de/src/emacs/company-mode/, demo movie at 

There is Auto Complete, http://www.emacswiki.org/emacs/AutoComplete#toc4, with 
demo movie at http://www.cx4a.org/pub/ac-demo/ac-demo.html.

And there is CompletionUI, at http://www.emacswiki.org/emacs/CompletionUI.

Does anyone use any of these for R, or anything else at this point?

I do have some code that uses R with company-mode, but I just found out about 
these other two frameworks recently.  So, does anyone else use these things, 
that can offer any pros/cons between the packages?


More information about the ESS-help mailing list