@ Відповідь Дуга трохи застаріла, і він зосереджується на розширенні коду за допомогою попередньо визначених фрагментів.
Я думаю, що питання ОП стосується інтеліссенсу (наприклад, автозавершення назви методу класу).
хіпі розширення раніше користувалося популярністю, синтаксичний аналізатор - теги emacs . Таким чином, він підтримує всі мови, що підтримують ctags (включаючи C ++ , Java). Але результат не є ідеальним, оскільки ctags використовує регулярне вираження для аналізу коду. Докладніше див. Мій init-hippie-expand.el . Ви можете почати, перевіривши значенняhippie-expand-try-functions-list
Автодоповнення - це сучасний із фантазійним інтерфейсом (спадне меню навіть у вікні консолі). Якщо ви використовуєте clang як бекенд. Інтелісенс набагато кращий. Для того, щоб кланг працював, вам потрібно встановити auto-complete-clang, який є плагіном автоматичного завершення. Він підтримує лише підтримку мовного кланг (C / C ++ / Obj-C). Як зазначив Сильвен Беннер , ви можете використовувати emacs-eclim як задній кінець розбору Java, який насправді викликає виконуваний час затемнення. Тож автоматичне завершення може підтримувати Java. Докладні відомості див. У моєму init-auto-complete.el .
семантичний забезпечує як інтерфейс користувача, так і механізм розбору заднього кінця. Це повільно. Користувацький інтерфейс, що випадає, добре, але вимагає вікна X. Результат intellisense кращий, ніж ctags. І документування для мене занадто вигадливе. Докладніше див. У init-semantic.el .
Режим компанії схожий на автоматичне завершення, різниця полягає в тому, що він пакує все в один пакет. Наприклад, розробникам C ++ потрібно лише встановити режим компанії (для автоматичного завершення потрібен плагін сторонніх розробників). Інша відмінність є UI компанія покаже кандидат автоматично . Отже, ви менше натискаєте клавіші в компанії. Можна виконати те ж саме в автоматичному завершенні після налаштування.
Підсумовуючи, автозаповнення, компанія - найбільш популярні два варіанти. Семантичне та хіпі-розширення також вітаються, але менше використовуються. Інші надто банально згадати, і їхні особливості вже охоплені великою четвіркою. Наприклад, автозаповнення може використовувати yasnippet як джерело вхідного сигналу (автозаповнення надає інтерфейс користувача, але фактичні кандидати виробляються заднім кінцем yasnippet).
Я пропоную використовувати або автозаповнення або компанії в якості основного автозавершения коду плагіна і або семантичного або хіпі розширитися додаткового плагіна .
Я використовую режим компанії та хіпі-розширення, тому що,
Зараз (рік 2017) компанія-режим підтримується активніше, ніж автозаповнення та має більше сторонніх плагінів (наприклад, латексний плагін)
хіпі-розширення не дуже активне, але воно не займає TAB
ключ, який використовує компанія-режим / семантичний / автозавершений
Якщо ви використовуєте режим компанії для C ++ / Java, ви можете змінити company-backends
.
Ще кілька порад щодо режиму компанії,
Можливо, вам знадобиться налаштувати значення company-backends
. Наприклад, припустимо, що його значення (company-eclim company-semantic company-clang (company-dabbrev-code company-gtags company-etags company-keywords))
. Тоді, якщо ви company-eclim
можете отримати ненульових кандидатів, company
вважає , що ви пишете Java, тож вона НЕ БУДЕ запускати програму після company-eclim
.
Тепер давайте подивимось (company-dabbrev-code company-gtags company-etags company-keywords)
. Всі ці чотири мішки будуть використовуватися разом. Наприклад, навіть після того, як company-dabbrev-code
успішно дістали ненульових кандидатів, інші три копійки все ще виконуються.
У реальному світі часто доводиться повторно коригувати порядок випусків або додавати новий бекенд ( company-rtags
наприклад,).
complete.el
можете спробувати стандартну бібліотеку . Він дуже старий і маловідомий, але вид доповнення, який він надає, може бути корисним.M-x find-library complete
, потім прочитайте Коментар у файлі.