Ответ 1
M-/
- это быстрый и грязный автозаполнение, основанный на содержимом вашего текущего буфера. Это не даст вам все, что вы получаете в Eclipse, но удивительно мощно.
Как получить завершение функций стиля Eclipse в Emacs для C, С++ и JAVA? Мне нравится сила текстового редактора Emacs, но отсутствие функции "intellisense" оставляет меня с помощью Eclipse.
M-/
- это быстрый и грязный автозаполнение, основанный на содержимом вашего текущего буфера. Это не даст вам все, что вы получаете в Eclipse, но удивительно мощно.
Я могу ответить на ваш вопрос только тем, кто не использовал Eclipse. Но! Что, если бы был действительно хороший быстрый эвристический анализ всего, что вы набрали или просмотрели в буферах emacs, и вы получили умное завершение над всем этим, а не только кодом?
M-x load-library completion M-x global-set-key C-RET complete RET
Когда я занимался разработкой java, я использовал:
Java Development Environment для Emacs (JDEE)
JDEE предоставит завершение имени метода, когда вы явно вызываете функцию jdee. Он имеет привязку клавиатуры для этой функции в режиме jdee.
Пакет CEDET обеспечивает завершение работы для C/С++ и Java (и для некоторых других языков). Для первоначальной настройки вы можете взять мою конфигурацию, которую я использую для работы с проектами на С++
Сейчас я использую Auto Complete для Emacs. Являясь текущей Visual Studio и бывшим пользователем Eclipse, я могу сказать, что он неплохо конкурирует с обоими приложениями. Это все еще не так хорошо, как Microsoft IntelliSense для С#, но некоторые говорили бы, что С++, как известно, трудно разобрать.
Он использует силу (я полагаю) Semantic пакет из Cedet, и мне кажется, что лучше использовать его по сравнению с Smart Complete. Он заполняет члены С++, локальные переменные и т.д. Это довольно хорошо. Тем не менее, он падает на невозможность завершить перегруженные методы (он только показывает функцию один раз без параметров, но это ограничение Cedet, которое я считаю) и другие различные вещи. В будущем это может улучшиться!
Кстати, я мог ошибаться здесь, но, думаю, вам нужен проект EDE, созданный для завершения работы члена класса (как и в случае с семантикой). Я использовал его только при создании проекта EDE, поэтому считаю, что это правда.
Поиск в Интернете Я нахожу http://www.emacswiki.org/cgi-bin/wiki/EmacsTags#toc7, описывающий complete-tab
в etags. По умолчанию он равен M-Tab
. Эта привязка может быть проблемой для вас.
Кроме того, etags имеет некоторые ограничения, которые могут вас раздражать...
Ссылка также указывает на то, что CEDET имеет улучшенную поддержку завершения символа.
Вы пробовали плагин emacs для eclipse?
http://people.csail.mit.edu/adonovan/hacks/eclipse-emacs.html
Я написал С++-специфический пакет поверх CEDET, который мог бы предоставить что ты хочешь. Он предоставляет подсказку аргументов типа Eclipse. Перегруженные функции поддерживаются как для аргументов функции. и для завершения. Пакет находится здесь:
https://github.com/abo-abo/function-args
Не забудьте проверить хороший снимок экрана:
https://raw.github.com/abo-abo/function-args/master/doc/screenshot-1.png
auto-complete-clang - это то, что вы хотите. Невозможно ошибиться при использовании реального компилятора С++ для доработок.
Единственная проблема, с которой он столкнулся, - нет способа узнать, какие флаги -I
и -D
передаются компилятору. Есть пакеты для emacs, которые позволяют вам объявлять проекты, а затем вы можете их использовать.
Лично я использую CMake для всех C и С++, поэтому я написал некоторый код CMake, чтобы передать эту информацию emacs через локальные переменные каталога, Он работает, но я подумываю написать пакет, который называет cmake из emacs, чтобы там было меньше вторжений.