web-dev-qa-db-fra.com

Empêcher la frappe de la barre d'espace de déclencher la complétion automatique dans Eclipse

Mettre à jour

Cela a été corrigé dans Eclipse 2018-12 . Ce comportement est toujours par défaut, mais peut être configuré hors - voir la réponse acceptée pour savoir comment

Je laisserai la question telle qu'elle était pour la postérité et pour celles des versions précédentes d'Eclipse


Dans Eclipse, j'ai activé les suggestions de style intellisense pour Java en allant sur

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

et définissant ce qui suit

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

source = Eclipse Intellisense?

Cela fonctionne brillamment, mis à part un problème ennuyeux. Quand je frappe spacebar, le jeton en cours de saisie est automatiquement complété avec ce qui se trouve en haut de la liste de suggestions. Assez juste, sauf que parfois je vais taper un nom de classe/variable avec une correspondance légale exacte, mais ceci ne n'apparaîtra pas comme la suggestion la plus haute. Alors, quand je frappe naturellement spacebar Eclipse insère quelque chose de complètement faux.

E.G. après avoir tapé Cookie je clique sur spacebar et obtenez CookieMonster.

Cela ressemble à un bug et arrive assez souvent pour être ennuyeux, mais malgré cela je ne veux pas spacebar pour déclencher l'auto-complétion en général . Je peux vouloir taper un nom de variable qui n'a pas encore été déclaré, ou quelque chose de similaire. Je souhaite utiliser l'auto-complétion comme outil d'aide, mais mon typage naturel devrait toujours toujours .

Je voudrais arrêter spacebar déclencher l'auto-complétion, et soit retomber à l'aide enter, ou mieux encore, déclencher la complétion automatique avec un custom touche non utilisée pour la frappe ordinaire. Est-ce que cela est possible?

J'ai joué avec tous les paramètres de Content Assist sans succès. Googler la question renvoie simplement un tas de résultats sur la désactivation de la fonctionnalité de saisie semi-automatique.


Ce problème est résolu à partir d'Eclipse 2018-12 [4.10] voir la réponse acceptée

Il est présent dans toutes les versions précédentes, c'est-à-dire 2018-09 [4.9], Photon [4.8], Oxygène [4.7], Néon [4.6], etc.

80
davnicwil

Eclipse 2018-12 était déjà corrigé pour cela!

Un correctif pour bug 348857 a récemment été fusionné avec le projet Eclipse et a été publié dans le cadre de Eclipse 2018-12 . Vous pouvez télécharger cette version ici .

Vous avez maintenant une nouvelle option pour désactiver tous les déclencheurs d’insertion, à l’exception de enter, ce qui empêchera spacebar de provoquer l'auto-complétion.

Allez simplement dans Préférences ... -> Java -> éditeur - > Assistant de contenu (ou Fenêtre -> Préférences -> Java -> Éditeur -> Assistant de contenu sous Windows) et sélectionnez Désactivez les déclencheurs d'insertion sauf 'Enter' , comme indiqué dans la capture d'écran ci-dessous: Disable insertion triggers preferences

4
Pyves

Il existe une solution sur le suivi des problèmes pour cela. Copiez le fichier jar dans le dossier Eclipse/dropins. Au prochain redémarrage, l'espace est désactivé en tant que déclencheur d'auto-complétion.

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

26
Pascalius

Utiliser une version SDK d’Eclipse

1.Ouvrez les plug-ins Affichez et trouvez org.Eclipse.jface.text, cliquez avec le bouton droit de la souris, choisissez importer en tant que projet source. Après l'importation, vous le trouvez dans votre espace de travail.

2.Dans src/org/Eclipse/jface/text/contentassist/CompletionProposalPopup.Java 

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

changer à 

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

3.Export org.Eclipse.jface.text

Cliquez avec le bouton droit de la souris sur le dossier de projet de org.Eclipse.jface.text, choisissez Exporter -> Plugins et fragments déployables, puis choisissez un fichier d’archive, puis sélectionnez Destination. Remplacez celui de Eclipse/plugins par celui que vous générez.

7
Andrew Xu

La barre d'espace a été une clé pour sélectionner la saisie semi-automatique, même dans Indigo. À ma connaissance, cela ne peut pas être configuré… .. En fait, c'est probablement pourquoi le retard existe.

Je suggère de définir le délai sur une valeur optimale qui vous permet de taper des mots tels que private void ... sans forcer les suggestions pour private et void. Ensuite, au cas où vous auriez une suggestion parce que vous avez attendu trop longtemps, appuyez sur Échap pour abandonner l'assistant de contenu.

3
herman

Même configuration que davnicwil, même problème, toujours sur Eclipse 4.4.

Solution: Intercepter (raccrocher) SHIFT + SPACE (maintenir enfoncée) sur Eclipse (fenêtre d'édition) et le remplacer par ESC, SPACE (séquence). Maintenant vous ma décider entre

  • Autocomplete + SPACE: appuyez sur SPACE en présence d'autosuggestion.
  • sPACE: appuyez sur une combinaison de touches ou une séquence prédéfinies (par exemple, SHIFT + SPACE)

Sur Windows, vous pouvez utiliser http://www.heise.de/download/activaid.html (vous pouvez également utiliser AutoHotkey, le hook natif Java, ...)

Comment avec ActivAid: 

  1. Ouvrez Ac'tivAid, sélectionnez "UserHotkeys"
  2. cliquez sur "+", définissez une description
  3. cliquez sur "raccourci", appuyez sur ex. SHIFT + ESPACE
  4. Commande: "{ESC} {SPACE}" (sans guillemets)
  5. cliquez sur "+", sélectionnez le cadre de l'éditeur Eclipse, appuyez sur ENTREE
  6. cliquez sur OK, OK dans Ac'tivAid

Mon fichier de configuration: activAid/settings/ac'tivAid.ini: [UserHotkeys]

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

Vous pouvez également remapper des touches sur des claviers non anglais avec "HotStrings", par exemple. ö -> {, ä->} etc.

0
user3178008

Finalement, ça a fonctionné.

Essayez de télécharger ce org.Eclipse.jface.text.jar et copiez-le dans votre dossier de plug-in (typiquement Eclipse/plugin). N'oubliez pas de sauvegarder votre propre. 

Fonctionne sur Eclipse Juno.

Si le lien ne fonctionne pas, commentez ceci, merci.

0
cy198706