Stop spacebar keypress from triggering autocomplete in Eclipse

JavaEclipse

Java Problem Overview


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 = https://stackoverflow.com/questions/2943131/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..

Java Solutions


Solution 1 - Java

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

Solution 2 - Java

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.

Solution 3 - Java

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.

Solution 4 - Java

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.

Solution 5 - Java

Same configuration as davnicwil, same issue, still on eclipse 4.4.

Solution: Intercept (hook) SHIFT+SPACE (press and hold) on (editor-window) eclipse and replace it with ESC,SPACE (sequence). Now you my decide between

  • Autocomplete+SPACE: press SPACE when autosuggestion present
  • just SPACE: press predefined key combination or sequence (e.g. SHIFT+SPACE)

On windows you may use http://www.heise.de/download/activaid.html (you can also use AutoHotkey, java native hook, ...)

HowTo with ActivAid:

  1. Open Ac'tivAid, select "UserHotkeys"
  2. click on "+", set a description
  3. click on "short cut", press e.g. SHIFT+SPACE
  4. Command: "{ESC}{SPACE}" (without quotes)
  5. click "+", select eclipse editor frame, press ENTER
  6. click OK, OK in Ac'tivAid

My config file:activAid/settings/ac'tivAid.ini:[UserHotkeys]

Hotkey11=+Space
Path11=<Send>{ESC}{SPACE}
Description11=Eclipse Shift+Space -> Esc,Space
Category11=
Application11=ahk_class SWT_Window0

You may also remap keys on non-english keyboards with "HotStrings", e.g. ö->{,ä->} etc.

Solution 6 - Java

Finally worked it out.

Try download this org.eclipse.jface.text.jar and copy it to your plugin folder(Typically eclipse/plugin). Do not forget to backup your own one.

Works on Eclipse Juno.

If the link doesn't work, comment on this, thanks.

Solution 7 - Java

In Eclipse go to Window -> Preferences -> General -> Keys and remove the binding for the command Content Assist.

Solution 8 - Java

You could disable Auto activation via the check box in

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

and activate the auto-complete feature on demand. The default hotkey for this is

CTRL+Space

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondavnicwilView Question on Stackoverflow
Solution 1 - JavaPyvesView Answer on Stackoverflow
Solution 2 - JavaPascaliusView Answer on Stackoverflow
Solution 3 - JavaAndrew XuView Answer on Stackoverflow
Solution 4 - JavahermanView Answer on Stackoverflow
Solution 5 - Javauser3178008View Answer on Stackoverflow
Solution 6 - Javacy198706View Answer on Stackoverflow
Solution 7 - JavaSpaceTruckerView Answer on Stackoverflow
Solution 8 - JavagiskouView Answer on Stackoverflow