Odpowiedź @ Douga jest trochę nieaktualna, a jego celem jest ekspansja kodu za pomocą wstępnie zdefiniowanych fragmentów.
Myślę, że pytanie OP dotyczy inteligencji (na przykład nazwa autouzupełniania metody klasy).
Kiedyś popularny był hipis , analizator składni to tagi emacs . Obsługuje więc wszystkie języki, które obsługuje ctags (w tym C ++, Java). Ale wynik nie jest doskonały, ponieważ ctags używa tylko wyrażenia regularnego do analizy kodu. Zobacz mój init-hippie-expand.el, aby uzyskać szczegółowe informacje. Możesz zacząć od sprawdzenia wartościhippie-expand-try-functions-list
auto-complete to nowoczesny z fantazyjnym interfejsem użytkownika (menu rozwijane, nawet w oknie konsoli). Jeśli używasz clang jako backendu. Intellisense jest znacznie lepszy. Aby uruchomić clang, musisz zainstalować auto-complete-clang, który jest wtyczką auto-complete. Obsługuje tylko obsługę języka clang (C / C ++ / Obj-C). Jak zauważył Sylvain Benner , możesz używać emacs-eclim jako zaplecza parsowania java, które faktycznie wywołuje plik wykonywalny eclipse. Tak więc autouzupełnianie może obsługiwać java. Zobacz mój init-auto-complete.el, aby uzyskać szczegółowe informacje.
semantic zapewnia zarówno interfejs użytkownika, jak i silnik analizujący zaplecza. Jest wolny Rozwijany interfejs użytkownika jest OK, ale wymaga okna X. Wynik Intellisense jest lepszy niż ctags. A dokumentacja jest dla mnie zbyt maniakalna. Zobacz init-semantic.el, aby uzyskać szczegółowe informacje.
tryb firmowy jest podobny do autouzupełniania, z tą różnicą, że pakuje wszystko w jeden pakiet. Na przykład programiści C ++ potrzebują tylko zainstalować tryb firmowy (automatyczne uzupełnianie wymaga wtyczki innej firmy). Kolejną różnicą UI jest firma pokaże kandydata automatycznie . Więc naciskasz mniej klawiszy w towarzystwie. To samo można zrobić w autouzupełnianiu po dostosowaniu.
Podsumowując, auto-uzupełnianie, firma są najpopularniejszymi dwoma opcjami. Mile widziane są również semantyczne i hippie-rozwijane, ale rzadziej używane. Inne są zbyt trywialne, aby je wymienić, a ich funkcje są już uwzględnione w wielkiej czwórce. Na przykład funkcja autouzupełniania może używać yasnippet jako źródła danych wejściowych (autouzupełnianie zapewnia interfejs użytkownika, ale faktyczni kandydaci są wytwarzani przez zaplecze yasnippet).
Sugeruję użycie albo autouzupełniania, albo firmy jako głównej wtyczki do uzupełniania kodu oraz semantycznej lub hipisowskiej jako dodatkowej wtyczki .
Używam trybu firmowego i rozwijania hipisów, ponieważ,
Teraz (rok 2017) tryb firmowy jest aktywniej utrzymywany niż autouzupełnianie i ma więcej wtyczek innych firm (na przykład wtyczki lateksowej)
hippie-expand nie jest bardzo aktywny, ale nie zajmuje TAB
klucza, którego używa tryb firmowy / semantyczny / auto-uzupełnianie
Jeśli używasz trybu firmowego dla C ++ / Java, możesz chcieć zmodyfikować company-backends
.
Kilka dodatkowych wskazówek na temat trybu firmowego,
Może być konieczne dostosowanie wartości company-backends
. Załóżmy na przykład, że jego wartość to (company-eclim company-semantic company-clang (company-dabbrev-code company-gtags company-etags company-keywords))
. Wtedy, jeśli company-eclim
można uzyskać niezerowe kandydaci, company
myśli , że piszesz java, więc NIE będzie później działał company-eclim
.
Teraz spójrzmy (company-dabbrev-code company-gtags company-etags company-keywords)
. Wszystkie te cztery backendy będą używane razem. Na przykład, nawet po company-dabbrev-code
pomyślnym pobraniu niezerowych kandydatów, pozostałe trzy backendy są nadal wykonywane.
W prawdziwym świecie często konieczne jest ponowne dostosowanie kolejności backendów lub dodanie nowego backendu ( company-rtags
na przykład).
complete.el
wypróbować standardową bibliotekę . Jest bardzo stary i mało znany, ale rodzaj uzupełniania w buforze może być użyteczny.M-x find-library complete
, a następnie przeczytaj komentarz w pliku.