Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Emacs как IDE для C++, текстовый редактор или IDE? 
:(
    Опции темы
kamre
Дата 7.2.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 1
Всего: 13



Пытаюсь разобраться с тем, можно ли из Emacs сделать удобную среду разработки на C++. Т.к. удобства для всех нужны разные, то напишу про те, которые мне кажутся самыми необходимыми. И так есть ли в нем следующие вещи:

1) Понятие проекта: какие файлы выступают в качестве исходников, какие подключены заголовки из разных библиотек, какие есть конфигурации для сборки. Зачем это нужно? Чтобы уметь делать поиск только среди файлов, которые используются в проекте, а не по всей файловой системе. Чтобы выбирать конфигурацию для сборки и запускать ее одной командой (комбинацией клавиш).

2) Навигация по коду. Имеется ввиду переход от места использования к месту определения. Т.е. для переменных нужно переходить к месту их определения, а от места вызова функции к месту ее определения (в h или cpp файле). Например, пусть имеется в исходном файле выражение:  obj->func(). Нужно чтобы была возможность перейти сразу к месту, где определяется переменная obj, а также перейти к определению функции func(), в зависимости от того, на каком месте находится сейчас курсор.

3) Выявление мест, в которых используется переменная или вызывается функция. Т.е. нахождения всех references для чего-либо в исходных файлах. Как пример: есть функция SomeClass::Func(), вот нужно найти все места, где эта функция вызывается.

4) Code completion (IntelliSense). Это часто нужно, когда в проекте используетс какая-то большая внешняя библиотека или когда сам проект большой и разбит на библиотеки. Т.е. имеется ввиду появление подсказки по функциям в классе, когда набирается  obj->  или obj.

5) Отладчик. Возможность пошаговой работы программы с просмотром значений переменных. Установка breakpoint, в том числе условных.


В каком-то виде все эти возможности есть в таких средах разработки, как Visual Studio + Visual Assist, Visual Slick Edit, Eclipse + CDT.
Вопрос такой, можно ли настроить Emacs так, чтобы эти вещи в нем появились и заработали? Или же Emacs - это просто удобный редактор текста с подсветкой синтаксиса?

PM MAIL   Вверх
Дмитрий Т
Дата 9.2.2008, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 16.3.2005
Где: Самара

Репутация: нет
Всего: 4



Я программирую в vim и поскольку emacs более функционален, то можете быть уверены что в нём не хуже ;)

Цитата(kamre @ 7.2.2008,  15:39)
1) Понятие проекта: какие файлы выступают в качестве исходников, какие подключены заголовки из разных библиотек, какие есть конфигурации для сборки. Зачем это нужно? Чтобы уметь делать поиск только среди файлов, которые используются в проекте, а не по всей файловой системе. Чтобы выбирать конфигурацию для сборки и запускать ее одной командой (комбинацией клавиш).

Из vim я запускаю компиляцию проекта и тут же перемещаюсь по найденным ошибкам.
Вам надо разобраться с работой make и ctags, а желательно и с системой automake, autoconf.

Цитата(kamre @ 7.2.2008,  15:39)
2) Навигация по коду. Имеется ввиду переход от места использования к месту определения. Т.е. для переменных нужно переходить к месту их определения, а от места вызова функции к месту ее определения (в h или cpp файле). Например, пусть имеется в исходном файле выражение:  obj->func(). Нужно чтобы была возможность перейти сразу к месту, где определяется переменная obj, а также перейти к определению функции func(), в зависимости от того, на каком месте находится сейчас курсор.

3) Выявление мест, в которых используется переменная или вызывается функция. Т.е. нахождения всех references для чего-либо в исходных файлах. Как пример: есть функция SomeClass::Func(), вот нужно найти все места, где эта функция вызывается.

4) Code completion (IntelliSense). Это часто нужно, когда в проекте используетс какая-то большая внешняя библиотека или когда сам проект большой и разбит на библиотеки. Т.е. имеется ввиду появление подсказки по функциям в классе, когда набирается  obj->  или obj.

В vim это есть, но не так симпатично и удобно как в Visual Studio.

Цитата(kamre @ 7.2.2008,  15:39)
5) Отладчик. Возможность пошаговой работы программы с просмотром значений переменных. Установка breakpoint, в том числе условных.

Вам надо изучить отладчик gdb. Из vim я его не запускал. 
Кстати рекомендую при программировании сразу писать тесты или использовать какую-нибудь тестирующую систему - отладчик станет практически невостребованным, а нервы здоровыми.

Цитата(kamre @ 7.2.2008,  15:39)
В каком-то виде все эти возможности есть в таких средах разработки, как Visual Studio + Visual Assist, Visual Slick Edit, Eclipse + CDT.
Вопрос такой, можно ли настроить Emacs так, чтобы эти вещи в нем появились и заработали? Или же Emacs - это просто удобный редактор текста с подсветкой синтаксиса?

Не только редактор это однозначно, поскольку в нём встроен язык программирования и с его помощью под emacs запускаются и почтовые клиенты и игрульки, а главное созданы режимы редактирования (в зависимости от типа файла emacs  приобретает дополнительные способности).

Почему я сам не на emacs? Когда выбирал, то соблазнился на нетребовательность к ресурсам vim, а сейчас пока нет времени переучиться.

Что не нравится в emacs? Меня не привлекает его встроенный lisp по эстетическим соображениям, я бы предпочёл python. Ещё не нравится, что он как бы тормозит в развитии... то есть вид у него старомодный - я имею ввиду графические библиотеки (у меня он под gtk 1, а vim под gtk 2).

Если подумаете что рекламирую vim, то ошибётесь - у него достаточно недочётов и я его обязательно сменю. Если у вас не пойдёт emacs, то попробуйте kdevelop - я на нём пробовал программировать,  вполне вменяемый программный продукт со своими минусами и плюсами.
PM MAIL WWW ICQ Skype   Вверх
vinick
Дата 13.2.2008, 18:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 285
Регистрация: 9.6.2005

Репутация: 4
Всего: 22



Цитата(kamre @  7.2.2008,  14:39 Найти цитируемый пост)
Вопрос такой, можно ли настроить Emacs так, чтобы эти вещи в нем появились и заработали? Или же Emacs - это просто удобный редактор текста с подсветкой синтаксиса?

1 - теоретически можно, но почему-то это до сих пор никто не сделал. Наверно никому из пользователей Emacs это не требуется?... ;)
2 - Emacs это не редактор. Это почти операционная система, в нем нет только умывальника и нормальной IDE.

Что-то из того что вы запросили так или иначе реализовано, что-то требует доработки напильником. 
Есть etags, EDE, ECB, EAssist, semantic ,Xrefactory.
Подробности смотрите на emacswiki.org,  начать можно здесь

По поводу отладчика - в линукс ИМХО существует только один отладчик - gdb.  Все остальное это графические оболочки над ним. 
В Emacs есть режим gdb, в котором доступны все его команды и условные точки останова в том числе.

А лучше используйте SlickEdit, Eclipse, KDevelop

PM MAIL ICQ Jabber   Вверх
kamre
Дата 16.2.2008, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 1
Всего: 13



Цитата(vinick @ 13.2.2008,  18:10)

1 - теоретически можно, но почему-то это до сих пор никто не сделал. Наверно никому из пользователей Emacs это не требуется?... ;)
2 - Emacs это не редактор. Это почти операционная система, в нем нет только умывальника и нормальной IDE.

Что-то из того что вы запросили так или иначе реализовано, что-то требует доработки напильником. 
Есть etags, EDE, ECB, EAssist, semantic ,Xrefactory.
Подробности смотрите на emacswiki.org,  начать можно здесь

По поводу отладчика - в линукс ИМХО существует только один отладчик - gdb.  Все остальное это графические оболочки над ним. 
В Emacs есть режим gdb, в котором доступны все его команды и условные точки останова в том числе.

А лучше используйте SlickEdit, Eclipse, KDevelop


Т.е. получается, что Emacs-еры или не программируют на C++, или у них нет всех перечисленных удобных вещей?

Пока я разбирался только с etags и ebrowse, они сразу с Emacs поставились. Честно говоря, вообще не впечатляют, для C++ плохо подходят. Вроде бы ebrowse для C++ писался, но в нем все равно не удобно передвигаться по коду. Такое впечатление, что они работают с исходником как с простым текстом и метками в нем. Т.е. не учитывают контекста, правила для scope, т.е. вообще не "понимают" язык...
С cedet пока вообще не разобрался, не понимаю даже как его правильно ставить и настраивать. Да и пишут про него, что сырой и плохо работает.

С gdb немного разобрался, но как-то все это не очень удобно пока кажется. Хотя интеграция с Emacs есть хоть какая-то, все удобнее, чем совсем из консоли запускать.

Похоже, что Emacs для разработки на C++ не очень подходит. Буду теперь смотреть Eclipse более внимательно, хоть и "тяжелый" он, но куда более на IDE похож, и CDT вроде код "понимает"
PM MAIL   Вверх
powerfox
Дата 16.2.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

Репутация: 5
Всего: 97



Цитата(kamre @  16.2.2008,  03:01 Найти цитируемый пост)
С gdb немного разобрался, но как-то все это не очень удобно пока кажется. Хотя интеграция с Emacs есть хоть какая-то, все удобнее, чем совсем из консоли запускать.

Есть kgdb - фронт-энд в gdb. Довольно удобная штука, правда, мне приходилось хардкорно дебажить всего несколько раз.


Цитата(kamre @  16.2.2008,  03:01 Найти цитируемый пост)
Буду теперь смотреть Eclipse более внимательно, хоть и "тяжелый" он, но куда более на IDE похож, и CDT вроде код "понимает" 

kate наше всё smile Раз нужны переходы к определению, то смотрите в сторону kate + ctags.

Добавлено через 39 секунд
Цитата(vinick @  13.2.2008,  19:10 Найти цитируемый пост)
KDevelop

Или KDevelop. Но мне всегда хватало kate.


--------------------
user posted image
PM WWW   Вверх
CyClon
Дата 16.2.2008, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: нет
Всего: 4



GVIM решает, имхо smile Это как дерево, а из него моно выстрогать хоть буратино, хоть... smile


--------------------
user posted image
PM   Вверх
kamre
Дата 16.2.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 330
Регистрация: 24.3.2006

Репутация: 1
Всего: 13



Цитата(CyClon @ 16.2.2008,  19:38)
GVIM решает, имхо smile Это как дерево, а из него моно выстрогать хоть буратино, хоть... smile

То что VIM/GVIM решает -  это здорово smile, может быть после Eclipse как раз на него буду смотреть.
А расскажите тогда, как в правильно "выстроганом" GVIMe выглдят в итоге все эти вещи (1-5).
И есть ли уже "выстроганные" заготовки для всего этого? Или GVIM тоже не "понимает" языка, на котором пишется программа и может работать с исходниками только как с простым текстом?

PM MAIL   Вверх
popovb
Дата 17.2.2008, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 14.2.2008

Репутация: нет
Всего: нет



Цитата(kamre @ 16.2.2008,  20:41)
Цитата(CyClon @ 16.2.2008,  19:38)
GVIM решает, имхо smile Это как дерево, а из него моно выстрогать хоть буратино, хоть... smile

То что VIM/GVIM решает -  это здорово smile, может быть после Eclipse как раз на него буду смотреть.
А расскажите тогда, как в правильно "выстроганом" GVIMe выглдят в итоге все эти вещи (1-5).
И есть ли уже "выстроганные" заготовки для всего этого? Или GVIM тоже не "понимает" языка, на котором пишется программа и может работать с исходниками только как с простым текстом?

Да ты не парься. Возьми, да попробуй. До уровня VS не доточишь. А нужно ли?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0892 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.