Stop spacebar keypress from triggering autocomplete in Eclipse

Update

This was fixed in Eclipse 2018-12. This behaviour is still default, but can be configured off - see the accepted answer for how

I'll leave the question as it was for posterity, and for those on earlier versions of Eclipse


In Eclipse, I've enabled intellisense-style suggestions for Java by going to

Window -> Preferences -> Java/Editor/Content Assist

and setting the following

Auto activation delay (ms) -> 0
Auto activation triggers for Java -> .(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ

source = Eclipse Intellisense?

This works brilliantly, apart from one annoying problem. When I hit spacebar, the token being typed is autocompleted with whatever is at the top of the suggestions list. Fair enough, except that sometimes I'll type a class/variable name with an exact legal match, but this won't appear as the top suggestion. So when I naturally hit spacebar Eclipse inserts something completely wrong.

E.G. after typing Cookie I'll hit spacebar and get CookieMonster.

This seems like a bug, and happens often enough to be annoying, but even despite this I don't want spacebar to trigger autocomplete in general. I may want to type a variable name which hasn't been declared yet, or something similar. I want to use autocomplete as a helper tool, but my natural typing should always take priority over it.

I'd like to stop spacebar triggering autocomplete, and either fall back to using enter, or better still trigger autocomplete with a custom key not used in ordinary typing. Is any of this possible?

I've played around with all the settings in Content Assist to no avail. Googling the question just returns a bunch of results about disabling the autocomplete feature.


This issue is fixed from Eclipse 2018-12 [4.10] see the accepted answer

It's present in all prior versions, i.e. 2018-09 [4.9], Photon [4.8], Oxygen [4.7], Neon [4.6], etc..


Eclipse 2018-12 was already patched for this!

A patch for Bug 348857 was recently merged to the Eclipse project and was released as part of Eclipse 2018-12. You can download that version here.

You now have a new option to disable all insertion triggers apart from enter, which will prevent spacebar from causing autocompletion.

Simply go to Preferences... -> Java -> Editor -> Content Assist (or Window -> Preferences -> Java -> Editor -> Content Assist on Windows) and select Disable insertion triggers except 'Enter', as shown in the screenshot below: Disable insertion triggers preferences


There is a solution on the issue tracker for this. Copy the jar in the eclipse/dropins folder. With the next restart space is diabled as autocompletion trigger.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=348857

Eclipse 12-2018 and newer: This is working natively, check Pyves answer.


Use a SDK version of eclipse

1.open Plug-ins View and find org.eclipse.jface.text, right click, choose import as Source Project. After import, you find it in your workspace.

2.In src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java

char[] triggers = t.getTriggerCharacter();
if(contains(triggers,key))

change to

if(key!='='&&key!=0x20&&contains(triggers,key))

3.Export org.eclipse.jface.text

Right click the project folder of org.eclipse.jface.text, choose export-->Deployable plugins and fragments, next, destination choose archive file, finish. Replace the one in eclipse/plugins with the one you generate.


The spacebar has been a key to select the autocomplete even in Indigo. To my knowledge, this can't be configured. In fact, that is probably why the delay exists.

I suggest setting the delay to some optimal value that allows you to type things like private void ... comfortably without triggering suggestions for private and void. Then in case you get a suggestion because you waited too long, press Escape to abort Content Assist.