Eclipse'de otomatik tamamlamayı tetikleyen boşluk çubuğuna basmayı durdur


86

Güncelleme

Bu, Eclipse 2018-12'de düzeltildi . Bu davranış hala varsayılandır, ancak kapalı olarak yapılandırılabilir - nasıl yapılacağı için kabul edilen yanıta bakın

Soruyu gelecek nesillere olduğu gibi bırakacağım ve Eclipse'in önceki sürümlerindekiler için


Eclipse'de, Java için intellisense tarzı önerileri etkinleştirdim

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

ve aşağıdakileri ayarlamak

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

source = Eclipse Intellisense?

Bu, can sıkıcı bir problemin dışında zekice çalışıyor. Ben vurduğunda spacebar, jeton varlık yazılan önerileri listesinin en üstünde ne varsa ile otomatik olarak tamamlanıp tamamlanmayacağını edilir. Yeterince adil, ancak bazen tam yasal eşleşmeye sahip bir sınıf / değişken adı yazacağım , ancak bu en iyi öneri olarak görünmeyecek. Yani spacebarEclipse'e doğal olarak vurduğumda tamamen yanlış bir şey ekliyor.

EG yazdıktan sonra Cookievurup spacebaralacağım CookieMonster.

Bu bir hata gibi görünüyor ve can sıkıcı olacak kadar sık ​​oluyor, ancak buna rağmen genel olarak otomatik tamamlamayı tetiklemek istemiyorumspacebar . Henüz bildirilmemiş bir değişken adı veya benzer bir şey yazmak isteyebilirim. Otomatik tamamlamayı yardımcı bir araç olarak kullanmak istiyorum, ancak benim doğal yazım her zaman buna göre öncelikli olmalı .

spacebarOtomatik tamamlamayı tetiklemeyi durdurmak ve ya kullanmaya geri dönmek enterya da daha iyisi customnormal yazımda kullanılmayan bir tuşla otomatik tamamlamayı tetiklemeye devam etmek istiyorum. Bunlardan herhangi biri mümkün mü?

Content Assist'teki tüm ayarlarla boşuna oynadım . Soruyu araştırmak, otomatik tamamlama özelliğini devre dışı bırakmayla ilgili bir dizi sonuç döndürür.


Bu sorun Eclipse 2018-12 den sabittir [4.10] bakınız kabul cevabı

Önceki tüm sürümlerde mevcuttur, yani 2018-09 [4.9], Photon [4.8], Oxygen [4.7], Neon [4.6], vb.


+1 Ben de aynı problemle savaşıyordum ... Bunu çözme şansın var mı? Boşluğa basmak ve istemediğiniz bir şeyi elde etmek çok can sıkıcıdır (seçmediniz!) ... Bu "Tip bildirimi" için iyi olabilir, ancak "değişken isimleri" için makul değildir.
emgsilva

Ne yazık ki değil. En son Kepler (4.3) sürümünde de aynı sorunun olup olmadığını biliyor musunuz? Henüz yükseltme yapmadım ama öyleyse soruyu güncelleyeceğim
davnicwil

3
Maalesef aynı davranış Kepler'de (4.3) de oluyor ... Gerçekten yazık. Otomatik aktivasyonu çok seviyorum ama birçok durumda böyle bir seçim yapması gerçekten can sıkıcı. Geçici çözümüm, yeni değişken adının çoğunu yazmam için aktivasyon süresini biraz arttırmaktır ... ama bu her zaman işe yaramıyor. Bu konuyu biraz daha araştıracağım ve muhtemelen bunu Eclipse'e bildireceğim çünkü bunun bir özellik olmadığını düşünüyorum.
emgsilva

stackoverflow.com/questions/7371618/… 'nin olası kopyası (Indigo'nun da zaten böyle davrandığını gösterir)
herman

6
Bu sorudaki artı oyların sayısına ve yanıtlarda alınan oyların eksikliğine bakılırsa, Eclipse'in bunu düzeltmesi gerekiyor gibi görünüyor!
andrewb

Yanıtlar:


20

Eclipse 2018-12 bunun için zaten yamalanmıştı!

Bug 348857 için bir yama yakın zamanda Eclipse projesiyle birleştirildi ve Eclipse 2018-12'nin bir parçası olarak yayınlandı . Bu sürümü buradan indirebilirsiniz .

Artık enter, dışındaki tüm ekleme tetikleyicilerini devre dışı bırakmak için yeni bir seçeneğiniz var , bu da spacebarotomatik tamamlamaya neden olmasını önleyecektir .

Basitçe Tercihler ... -> Java -> Düzenleyici -> İçerik Yardımı'na (veya Windows -> Tercihler -> Java -> Düzenleyici -> İçerik Yardımı'na gidin ) ve şurada gösterildiği gibi 'Enter' dışındaki ekleme tetikleyicilerini devre dışı bırak'ı seçin . aşağıdaki ekran görüntüsü: Ekleme tetikleyicileri tercihlerini devre dışı bırakın


1
Mükemmel, çok teşekkürler. Cevabınıza başlık ekledim, böylece insanlar bunun güncel versiyonlar için olduğunu açıkça görebilir. Diğer cevaplar güncel değildir.
callmebob

1
@Pyves Bu yeni cevabı kabul etmem biraz zaman aldı, özür dilerim, ancak artık Eclipse kullanmıyorum ve doğrulamak için tur atamadım. Her neyse, evet, bu sorunu kesin olarak çözmüş gibi görünüyor ve 6 yıldan fazla bir süredir çözüldüğüne gerçekten sevindim !
davnicwil

Hata Ayıklama Kabuğu görünümünde tetik bastırmanın çalışmadığı bir sorunla karşılaşan var mı? Benim için boşluk çubuğu otomatik tamamlamayı tetikliyor. (Haziran 2019'dayım)
William Dutton

@William Dutton muhtemelen ayrı bir hata raporunda işaretlenecek bir şey.
Pyves

26

Bunun için sorun izleyicide bir çözüm var . Kopya kavanoz Tutulma / dropins klasörü. Bir sonraki yeniden başlatma ile alan, otomatik tamamlama tetikleyicisi olarak devre dışı bırakılır.

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

Eclipse 12-2018 ve daha yeni: Bu doğal olarak çalışıyor, Pyves cevabını kontrol edin.


2
Harika görünüyor ama .. Eclipse Juno'da benim için işe yaramıyor - davranışta değişiklik yok, boşluk çubuğu hala otomatik tamamlamayı etkinleştiriyor. Bu Kepler'de sizin için çalışıyor mu? Hata dizisinde bahsedilen aracı değiştirmek için araç çubuğu düğmesi / menü öğeleri nerede?
davnicwil

1
Evet, benim için Kepler Service Release 1'de çalışıyor. Ancak araç çubuğu öğelerini de göremiyorum.
Pascalius

Bu benim için Eclipse Luna SR2'de çalışmıyor (4.4.2 - Derleme Kimliği: 20150219-0600).
BrainSlugs83

Eclipse Luna'daki davranışı sadece akıllı algılama tamamlama anahtarları olarak kabul edecek şekilde değiştiren bir eklentiyi (@ AndrewXu'nun eklenti yazma hakkındaki cevabının altında) çok hızlı bir şekilde hazırladım.
BrainSlugs83

1
@Pascalius, uzun süredir en iyisi olan cevabınız için teşekkür ederim, ancak şimdi Eclipse bunu düzeltti ve yerel olarak yapılandırılabilir hale getirdi. Bu daha yeni bir cevapta belirtildi, bu yüzden sorunu çözmenin en iyi yolu olduğu için bunu kabul ettim.
davnicwil

7

Eclipse'in bir SDK sürümünü kullanın

1. Eklentileri açın org.eclipse.jface.text'i görüntüleyin ve bulun, sağ tıklayın, Kaynak Proje olarak içe aktarmayı seçin. İçe aktardıktan sonra, çalışma alanınızda bulursunuz.

2. src / org / eclipse / jface / text / contentassist / CompletionProposalPopup.java'da

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

değişmek

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

3. org.eclipse.jface.text dosyasını dışa aktarın

Org.eclipse.jface.text'in proje klasörüne sağ tıklayın, dışa aktar -> Dağıtılabilir eklentiler ve parçalar'ı seçin, ardından hedef arşiv dosyasını seçin, tamamlayın. Tutulma / eklentilerdekini oluşturduğunuzla değiştirin.


2
Bu görünümü nasıl açacağını merak edenler için, "Pencere" -> "Görünümü Göster" -> "Diğer ..." seçeneğine gidin ve filtre metin kutusuna "eklenti" yazmaya başlayın ve ardından kutudan "Eklentiler" i seçin. aşağıya gidin ve "Tamam" a basın.
BrainSlugs83

Ayrıca, daha Visual Studio benzeri bir deneyim arıyorsanız, bu bloğu tamamen yorumlamanızı (varsayılan blok), '\ t' bloğunu yorumlamanızı ve ardından '\ r' ile işleyen bloğu bulmanızı öneririm. '\ n' (bu ikisinin hemen üstünde) ve buna '\ t' ekleniyor. - Bu size sekme tamamlama sağlayacaktır. :-)
BrainSlugs83

(Tüm bu sorunların üstesinden gelmek istemeyenler için, işte Eclipse Luna SR2 4.4.2: 1drv.ms/1GZhJPq'in 64 bit sürümü için benimki - yukarıda bahsettiğim değişiklikleri aklınızda bulundurun.)
BrainSlugs83

@ BrainSlugs83 Eğer a) kodu github'a gönderebilirseniz veya b) "" ekleyebilirsiniz. tamamlama tetikleyicileri, bu harika olurdu.
lakemalcom

Neden 0x20yerine kullandın ' '?
Fund Monica'nın Davası

3

Boşluk çubuğu, Indigo'da bile otomatik tamamlamayı seçmenin anahtarı olmuştur. Bildiğim kadarıyla bu yapılandırılamaz. Aslında, muhtemelen gecikme nedeni budur.

Gecikmeyi, ve private void ...için önerileri tetiklemeden rahatça yazmanıza olanak tanıyan bazı optimum değere ayarlamanızı öneririm . Daha sonra, çok uzun süre beklediğiniz için bir öneri alırsanız, Content Assist'i iptal etmek için Escape tuşuna basın.privatevoid


Gecikmeyi arttırmaktan sadece sınırlı bir başarı elde ettim.
Raedwald

0

Davnicwil ile aynı konfigürasyon, aynı sorun, hala tutulma 4.4'te.

Çözüm : Tutulma (düzenleyici-pencere) üzerinde SHIFT + SPACE (basılı tutun) ve ESC, SPACE (sıra) ile değiştirin (kanca). Şimdi kararım sen

  • Otomatik tamamlama + BOŞLUK: otomatik öneri mevcut olduğunda BOŞLUK tuşuna basın
  • sadece SPACE: önceden tanımlanmış tuş kombinasyonuna veya sırasına basın (örneğin SHIFT + SPACE)

Windows'ta http://www.heise.de/download/activaid.html kullanabilirsiniz (ayrıca AutoHotkey, java yerel kancası, ...)

ActivAid ile Nasıl Yapılır:

  1. Ac'tivAid'i açın, "UserHotkeys" i seçin
  2. "+" üzerine tıklayın, bir açıklama ayarlayın
  3. "kısa yol" u tıklayın, örneğin SHIFT + SPACE tuşlarına basın
  4. Komut: "{ESC} {SPACE}" (tırnak işaretleri olmadan)
  5. "+" tıklayın, tutulma düzenleyici çerçevesini seçin, ENTER'a basın
  6. Ac'tivAid'de Tamam, Tamam'ı tıklayın

Yapılandırma dosyam: activAid / settings / ac'tivAid.ini: [UserHotkeys]

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

Ayrıca "HotStrings" ile İngilizce olmayan klavyelerdeki tuşları yeniden eşleştirebilirsiniz, örneğin ö -> {, ä->} vb.


0

Sonunda çözdü.

Bu org.eclipse.jface.text.jar dosyasını indirmeyi deneyin ve eklenti klasörünüze kopyalayın (Tipik olarak tutulma / eklenti). Kendi kartınızı yedeklemeyi unutmayın.

Eclipse Juno'da çalışıyor.

Bağlantı çalışmazsa, bu konuda yorum yapın, teşekkürler.


MARS1 Eclipse başlatılamadı, java.lang.RuntimeException: "org.eclipse.ui.ide.workbench" uygulaması kayıt defterinde bulunamadı.
Tiina

-3

Otomatik etkinleştirmeyi aşağıdaki onay kutusunu kullanarak devre dışı bırakabilirsiniz:

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

ve isteğe bağlı olarak otomatik tamamlama özelliğini etkinleştirin. Bunun için varsayılan kısayol tuşu

CTRL+Space


3
Bütün sorun şu ki , boşluk çubuğuna otomatik tamamlama yapmadan otomatik aktivasyon davranışını istiyorum
davnicwil

-3

Eclipse'de Pencere -> Tercihler -> Genel -> Tuşlar'a gidin ve Content Assist komutunun bağlantısını kaldırın.


1
Bu, ctrl + Space kullanarak önerileri getirme olasılığını ortadan kaldırır. OP'nin istediği şey, boşluk çubuğunu kullanarak bir öneri seçimini devre dışı bırakmanın bir yoludur. Bunun için anahtar bağlama yoktur.
herman
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.