[ESS] Help configuring auto-complete

Ista Zahn istazahn at gmail.com
Fri Jun 15 23:03:21 CEST 2012


Thanks Vitalie, I've added this to the wiki.

Best,
Ista

On Fri, Jun 15, 2012 at 4:44 PM, Vitalie Spinu <spinuvit at gmail.com> wrote:
>  >> Ista Zahn <istazahn at gmail.com>
>  >> on Fri, 15 Jun 2012 15:52:58 -0400 wrote:
>
>  > Hi all,
>  > Sorry for resurrecting this old thread. I just wanted to note for
>  > future googlers that I finally solved this problem to my complete
>  > satisfaction using
>
>  > (define-key ac-completing-map "\t" 'ac-complete)
>  > (define-key ac-completing-map "\r" nil)
>
> If you are comfortable with other keys (M-n, M-p) to navigate in AC
> menu, then that's indeed a very good idea. TAB is bound to ac-expand to
> allow movement thorough the popup menu, but the frustration of
> completing RET (especially in iESS buffers) is higher than that. Can you
> please put this on ESS ac-completion wiki page? This definitely the way
> to go with AC in R.
>
> Also note that the recent versions of AC use [return] and [tab] and it
> might be good to also:
>
>  (define-key ac-completing-map [tab] 'ac-complete)
>  (define-key ac-completing-map [return] nil)
>
> Vitalie.
>
>  > I had tried this before without succes, but it now works as intended
>  > (not sure what the problem was before)
>
>  > This prevents auto-complete from completing when the return key is
>  > pressed, and instead uses the tab key for this. Although I don't think
>  > I realized it myself when I first opened this thread, that is actually
>  > what I want, and I'm now very happy with the way auto-complete is
>  > working with ESS.
>
>  > Thanks again,
>  > Ista
>
>  > On Tue, May 15, 2012 at 2:01 PM, Vitalie Spinu <spinuvit at gmail.com> wrote:
>  >>
>  >>>>>> Ista Zahn <istazahn at gmail.com>
>  >>>>>> on Tue, 15 May 2012 13:12:09 -0400 wrote:
>  >>
>  >>  > Hi Vitalie,
>  >>  > Great, thank you for the comprehensive reply. For now I'm going to
>  >>  > disable argument auto-completion using the second method you
>  >>  > described.
>  >>
>  >> Third method might be better, as you will have arguments completion.
>  >>
>  >>
>  >>  > More generally, I like having auto-complete menus popping up all over
>  >>  > the place -- for me it really is just this situation (argument
>  >>  > completion menu triggered by ",") where it gets in my way.
>  >>
>  >> You can place this into ess-mode-hook and ess-post-run-hook:
>  >>
>  >> (delete 'ess-smart-comma ac-trigger-commands)
>  >>
>  >> Then comma wont trigger the ac menu.
>  >>
>  >> Vitalie.
>  >>
>  >>  > On Tue, May 15, 2012 at 11:40 AM, Vitalie Spinu <spinuvit at gmail.com> wrote:
>  >>  >>
>  >>  >>>>>> Ista Zahn <istazahn at gmail.com>
>  >>  >>>>>> on Tue, 15 May 2012 09:56:42 -0400 wrote:
>  >>  >>
>  >>  >>  > c(x = 1,
>  >>  >>
>  >>  >>  > with the cursor immediately after the comma, the auto-complete menu
>  >>  >>  > pops up offering to complete "recursive=".
>  >>  >>  > I would really appreciate it if  you can tell me how to disable just
>  >>  >>  > this specific feature.
>  >>  >>
>  >>  >> What feature precisely? disable it inside c() or disable argument
>  >>  >> completion altogether?
>  >>  >>
>  >>  >>  > The manual suggests that I should look at the docstring of
>  >>  >>  > ac-use-auto-complete, but I can't seem to find it.
>  >>  >>
>  >>  >> it should be ess-use-auto-complete, it's a type in new features
>  >>  >> section. Thanks.
>  >>  >>
>  >>  >>
>  >>  >>
>  >>  >> On a general note, I am still not clear what default ac set-up is the
>  >>  >> most meaningful. And user input is highly valuable here. I agree that
>  >>  >> the current one is too intrusive. Though auto-popup works fine in elisp
>  >>  >> buffers it is pretty annoying in R buffers because most of the names are
>  >>  >> short.
>  >>  >>
>  >>  >> There are three general ways that the user can go about it.
>  >>  >>
>  >>  >> First, is to deactivate ac auto pop-up by setting ac-auto-show-menu to
>  >>  >> nil and make TAB to trigger the menu:
>  >>  >>
>  >>  >>  (ac-set-trigger-key "TAB").
>  >>  >>
>  >>  >> Second, is to disable auto-completion of arguments. There are 2 basic R
>  >>  >> sources `ac-source-R-objects' and `ac-source-R-args'. The third source
>  >>  >> ac-source-R combines conveniently the previous 2 and is activated by
>  >>  >> default. Add only one of them to ac-sources variable:
>  >>  >>
>  >>  >> (defun my-ac-ess-config ()
>  >>  >>  (setq ac-souces
>  >>  >>        '(ac-source-R-objects ac-source-filename ac-source-words-in-buffer)))
>  >>  >>
>  >>  >> (add-hook 'ess-mode-hook 'my-ac-ess-config)
>  >>  >> (add-hook 'ess-post-run-hook 'my-ac-ess-config)
>  >>  >>
>  >>  >> Third, you can look at definitions of these souces and redefine
>  >>  >> them. Particularly you can configure the prefix parameter to be 1 or
>  >>  >> even 2 (instead of the default 0):
>  >>  >>
>  >>  >> (setq ac-source-R
>  >>  >>      '((prefix . ess-ac-start)
>  >>  >>       (requires . 2)
>  >>  >>       (candidates . ess-ac-candidates)
>  >>  >>       (document . ess-ac-help)))
>  >>  >>
>  >>  >> But then you won't have auto completion of arguments at "(" and
>  >>  >> ",". Given the current eldoc functionality I think this last option
>  >>  >> should actually be the default.
>  >>  >>
>  >>  >> Best,
>  >>  >> Vitalie.



More information about the ESS-help mailing list