[ESS] Problem with ess tab-completion when max.print option is set too low

James W. MacDonald jmacdon at med.umich.edu
Fri Mar 7 21:13:45 CET 2008

Not sure if this is on point, but I have the following in my .emacs, 
that I got from Deepayan Sarkar (needs to be slightly modified now that 
utils swallowed rcompgen if you are using R-2.7.0):

;; use rcompgen in ESS

(defun alt-ess-complete-object-name ()

   (let* ((comint-completion-addsuffix nil)
          (beg-of-line (save-excursion (comint-bol) (point)))
          (end-of-line (point-at-eol))
          (line-buffer (buffer-substring beg-of-line end-of-line))
          (token-string ;; setup, including computation of the token
             (ess-command (format
"rcompgen:::.assignLinebuffer('%s')\n" line-buffer))
             (ess-command (format "rcompgen:::.assignEnd(%d)\n" (-
(point) beg-of-line)))
             (car (ess-get-words-from-vector
          (possible-completions ;; compute and retrieve possible completions
             (ess-command "rcompgen:::.completeToken()\n")
     (or (comint-dynamic-simple-complete token-string
possible-completions) 'none)))

(define-key inferior-ess-mode-map "\t" 'alt-ess-complete-object-name)

And I get tab completion for uniq<TAB> with options(max.print = 1000) in 
my .Rprofile



Stephen Eglen wrote:
>  > 
>  > This took me a bit to track down.  In my ESS process buffer, sometimes 
>  > tab-completion was not working on certain functions (noticed it with 
>  > unique), yet was working with other functions in the base package.
>  > 
>  > In my .Rprofile, I have set some options, including:
>  > 
>  > options(max.print = 1000) ## default is 99999
>  > 
>  > This is what seems to cause the behavior.  If I have max.print set to 
>  > 1000 and start R through ESS, and then type uniq<TAB>, it will not find 
>  > any completions for unique. ("No completions for uniq" is displayed in 
>  > minibuffer.)
>  > 
>  > When I remove that option, uniq<TAB> does what I expect.
> thanks for this report, I can confirm this behaviour.  (uni<TAB> also
> shows a nice difference -- with max.print set to 1000, completion
> suggests just 'uniroot').
> I'm not sure what the solution here -- one option might be for us to
> temporarily ensure max.print is set high enough when completing, but
> that might have unknown side effects.  
> If we switched our completion mechanism to use rcompgen would that
> help?
> Stephen
> ______________________________________________
> ESS-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/ess-help

James W. MacDonald, M.S.
Affymetrix and cDNA Microarray Core
University of Michigan Cancer Center
1500 E. Medical Center Drive
7410 CCGC
Ann Arbor MI 48109

More information about the ESS-help mailing list