Ответ @ Doug немного устарел, и его внимание сосредоточено на расширении кода с использованием предварительно определенных фрагментов кода.
Я думаю, что вопрос OP о intellisense (например, автозаполнение имени метода класса).
Раньше хиппи расширялся , синтаксический анализатор - это теги emacs . Таким образом, он поддерживает все языки, поддерживаемые ctags (включая C ++ и Java). Но результат не идеален, потому что ctags использует только регулярное выражение для анализа кода. Смотрите мой init-hippie-expand.el для деталей. Вы можете начать с проверки значенияhippie-expand-try-functions-list
auto-complete - это современный интерфейс с необычным пользовательским интерфейсом (выпадающее меню, даже в окне консоли). Если вы используете Clang в качестве бэкэнда. Интеллект намного лучше. Чтобы заставить работать clang, вам нужно установить auto-complete-clang, который является плагином auto-complete. Он поддерживает только язык, поддерживаемый Clang (C / C ++ / Obj-C). Как указывал Сильвен Беннер , вы можете использовать emacs-eclim в качестве серверного конца разбора java, который фактически вызывает исполняемый файл eclipse. Таким образом, автозаполнение может поддерживать Java. Смотрите мой init-auto-complete.el для деталей.
semantic предоставляет как пользовательский интерфейс, так и механизм синтаксического анализа. Это медленно. Выпадающий пользовательский интерфейс в порядке, но требует X окна. Результат intellisense лучше, чем ctags. И документация слишком отвратительна для меня. Смотрите init-semantic.el для деталей.
Режим компании аналогичен автозаполнению, но отличается тем, что он упаковывает все в один пакет. Например, разработчикам на C ++ требуется только установить режим компании (для автозаполнения нужен какой-то сторонний плагин). Другое отличие является UI компания покажет кандидат автоматически . Таким образом, вы нажимаете меньше клавиш в компании. То же самое можно сделать в автозаполнении после настройки.
Подводя итог, автозаполнения, компании наиболее популярны два варианта. Семантика и хиппи-экспанд также приветствуются, но используются реже. Другие слишком тривиальны, чтобы упоминать их, и их особенности уже охвачены большой четверкой. Например, автозаполнение может использовать yasnippet в качестве источника ввода (автозаполнение предоставляет пользовательский интерфейс, но фактические кандидаты генерируются серверной частью yasnippet).
Я предлагаю использовать либо автозаполнение, либо компанию в качестве основного плагина для завершения кода, а либо семантическое, либо расширение хиппи в качестве дополнительного плагина .
Я использую режим компании и хиппи, потому что,
Теперь (2017 год) фирменный режим поддерживается более активно, чем автозаполнение, и содержит больше сторонних плагинов (например, латексный плагин)
hippie-expand не очень активно, но не занимает TAB
ключ, который использует режим компании / semantic / auto-complete
Если вы используете фирменный режим для 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
, затем прочитайте Комментарий в файле.