Завершение функций стиля Eclipse в Emacs для C, C ++ и JAVA? - PullRequest
26 голосов
/ 24 сентября 2008

Как получить завершение функции стиля Eclipse в Emacs для C, C ++ и JAVA? Мне нравится мощь текстового редактора Emacs, но отсутствие функции "intellisense" оставляет меня, используя Eclipse.

Ответы [ 9 ]

18 голосов
/ 25 сентября 2008

M-/ - быстрое и грязное автозаполнение, основанное на содержимом вашего текущего буфера. Он не даст вам всего, что вы получаете в Eclipse, но удивительно мощен.

8 голосов
/ 25 сентября 2008

Я могу ответить на ваш вопрос только как тот, кто не слишком много использовал Eclipse. Но! Что если бы был действительно хороший быстрый эвристический анализ всего , который вы напечатали или просмотрели в своих буферах emacs, и вы получили умное завершение всего этого везде, не только в коде?

M-x load-library completion
M-x global-set-key C-RET complete RET
7 голосов
/ 03 октября 2008

Когда я занимался разработкой Java, я использовал:

Среда разработки Java для Emacs (JDEE)

JDEE обеспечит завершение имени метода, когда вы явно вызовете функцию, предоставленную jdee. Для этой функции в jdee-mode имеется клавиатурная привязка.

6 голосов
/ 04 ноября 2008

Пакет CEDET обеспечивает завершение для C / C ++ и Java (и для некоторых других языков). Для начальной настройки вы можете взять мой конфиг , который я использую для работы с проектами C ++

3 голосов
/ 23 мая 2009

Сейчас я использую Автозаполнение для Emacs. Как нынешний пользователь Visual Studio и бывший пользователь Eclipse, я могу сказать, что он вполне конкурирует с обоими приложениями. Он по-прежнему не так хорош, как Microsoft IntelliSense для C #, но некоторые скажут, что C ++ общеизвестно труден для анализа.

Он использует мощь (я считаю) пакета Semantic от Cedet , и я считаю, что его удобнее использовать по сравнению с Smart Complete . Он дополняет члены C ++, локальные переменные и т. Д. Это довольно хорошо. Однако это зависит от невозможности завершить перегруженные методы (функция показывает только один раз без параметров, но это ограничение Cedet, как я полагаю) и другие различные вещи. Это может улучшиться в будущем, хотя!

Кстати, я могу ошибаться, но я думаю, что вам нужен проект EDE, настроенный для завершения работы с учениками (так же, как вы это обычно делаете с Semantic). Я когда-либо использовал его только во время проекта EDE, поэтому я предполагаю, что это правда.

2 голосов
/ 24 сентября 2008

При поиске в Интернете я нахожу http://www.emacswiki.org/cgi-bin/wiki/EmacsTags#toc7, описывающих complete-tab в etags. По умолчанию он привязан к M-Tab. Эта привязка может быть проблемой для вас

Кроме того, у etags есть некоторые ограничения, которые могут вас раздражать ...

Ссылка также указывает на CEDET как на лучшую поддержку завершения символа.

1 голос
/ 24 сентября 2008

Вы пробовали плагин emacs для затмения?

http://people.csail.mit.edu/adonovan/hacks/eclipse-emacs.html

0 голосов
/ 14 августа 2014

auto-complete-clang - это то, что вы хотите. Не могу ошибиться с использованием фактического компилятора C ++ для дополнений.

Единственная проблема, которую он имеет, заключается в том, что нет способа узнать, какие -I и -D флаги нужно передать компилятору. Существуют пакеты для emacs, которые позволяют вам объявлять проекты, а затем вы можете их использовать.

Лично я использую CMake для всей работы на C и C ++, поэтому я написал код CMake для передачи этой информации в emacs через локальные переменные каталога. Это работает, но я подумываю написать пакет, который вызывает cmake из emacs, чтобы было меньше вторжений.

0 голосов
/ 01 июля 2013

Я написал специальный C ++ пакет поверх CEDET, который может обеспечить то, что ты хочешь. Он предоставляет подсказку Eclipse-подобной функции для аргументов. Перегруженные функции поддерживаются как для аргументов функции подсказка и для завершения. Пакет находится здесь:

https://github.com/abo-abo/function-args

Обязательно посмотрите красивый скриншот:

https://raw.github.com/abo-abo/function-args/master/doc/screenshot-1.png

...