Emacs как IDE для C++ (текстовый редактор или IDE?)
Модератор: Модераторы разделов
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Emacs как IDE для C++
Пытаюсь разобраться с тем, можно ли из Emacs сделать удобную среду разработки на C++. Т.к. удобства для всех нужны разные, то напишу про те, которые мне кажутся самыми необходимыми. И так есть ли в нем следующие вещи:
1) Понятие проекта: какие файлы выступают в качестве исходников, какие подключены заголовки из разных библиотек, какие есть конфигурации для сборки. Зачем это нужно? Чтобы уметь делать поиск только среди файлов, которые используются в проекте, а не по всей файловой системе. Чтобы выбирать конфигурацию для сборки и запускать ее одной командой (комбинацией клавиш).
2) Навигация по коду. Имеется ввиду переход от места использования к месту определения. Т.е. для переменных нужно переходить к месту их определения, а от места вызова функции к месту ее определения (в h или cpp файле). Например, пусть имеется в исходном файле выражение: obj->func(). Нужно чтобы была возможность перейти сразу к месту, где определяется переменная obj, а также перейти к определению функции func(), в зависимости от того, на каком месте находится сейчас курсор.
3) Выявление мест, в которых используется переменная или вызывается функция. Т.е. нахождения всех references для чего-либо в исходных файлах. Как пример: есть функция SomeClass::Func(), вот нужно найти все места, где эта функция вызывается.
4) Code completion (IntelliSense). Это часто нужно, когда в проекте используетс какая-то большая внешняя библиотека или когда сам проект большой и разбит на библиотеки. Т.е. имеется ввиду появление подсказки по функциям в классе, когда набирается obj-> или obj.
5) Отладчик. Возможность пошаговой работы программы с просмотром значений переменных. Установка breakpoint, в том числе условных.
Вопрос такой, можно ли настроить Emacs так, чтобы эти вещи в нем появились и заработали? Или же Emacs этого не умеет. а является просто удобным текстовым редактором с подсветкой синтаксиса?
1) Понятие проекта: какие файлы выступают в качестве исходников, какие подключены заголовки из разных библиотек, какие есть конфигурации для сборки. Зачем это нужно? Чтобы уметь делать поиск только среди файлов, которые используются в проекте, а не по всей файловой системе. Чтобы выбирать конфигурацию для сборки и запускать ее одной командой (комбинацией клавиш).
2) Навигация по коду. Имеется ввиду переход от места использования к месту определения. Т.е. для переменных нужно переходить к месту их определения, а от места вызова функции к месту ее определения (в h или cpp файле). Например, пусть имеется в исходном файле выражение: obj->func(). Нужно чтобы была возможность перейти сразу к месту, где определяется переменная obj, а также перейти к определению функции func(), в зависимости от того, на каком месте находится сейчас курсор.
3) Выявление мест, в которых используется переменная или вызывается функция. Т.е. нахождения всех references для чего-либо в исходных файлах. Как пример: есть функция SomeClass::Func(), вот нужно найти все места, где эта функция вызывается.
4) Code completion (IntelliSense). Это часто нужно, когда в проекте используетс какая-то большая внешняя библиотека или когда сам проект большой и разбит на библиотеки. Т.е. имеется ввиду появление подсказки по функциям в классе, когда набирается obj-> или obj.
5) Отладчик. Возможность пошаговой работы программы с просмотром значений переменных. Установка breakpoint, в том числе условных.
Вопрос такой, можно ли настроить Emacs так, чтобы эти вещи в нем появились и заработали? Или же Emacs этого не умеет. а является просто удобным текстовым редактором с подсветкой синтаксиса?
-
v04bvs
- Сообщения: 636
- ОС: Debian GNU/Linux
Re: Emacs как IDE для C++
Сразу отпишу, что такое Emacs. Использовать его или нет — решайте сами.
Emacs это интерпретатор Elisp-а. Это самое главное и из этого вытекает всё остальное. Elisp — это диалект лиспа (вообще говоря, не самый удачный), с набором библиотек для построения редактора. Именно с этой позиции его нужно понимать. Если решите его использовать всерьёз, у вас под рукой будет мощный инструмент, но достаточно сложный для изучения, т.к. лисп не похож на большинство популярных языков.
Также нужно понимать, что Emacs не отделим от юникса с его философией минималистичности. Многие говорят, что он нарушает эту философию, глупости, он её нарушает не больше чем /bin/sh. Если будете использовать Emacs — скорее всего вам придётся пересмотреть многие свои взгляды (которые, как я подозреваю, сформировались под влиянием современных IDE вроде Visual Studio).
1) Понятие проекта: какие файлы выступают в качестве исходников, какие подключены заголовки из разных библиотек, какие есть конфигурации для сборки. Зачем это нужно? Чтобы уметь делать поиск только среди файлов, которые используются в проекте, а не по всей файловой системе. Чтобы выбирать конфигурацию для сборки и запускать ее одной командой (комбинацией клавиш).
Во-первых в каталоге с исходниками проекта кроме них ничего не должно быть, поэтому достаточно поиска по файловой системе.
Во-вторых в юниксе принято использовать программу make для управления сборкой проекта, вы можете управлять ей сколь угодно гибко, включая любые конфигурации.
2) Навигация по коду. Имеется ввиду переход от места использования к месту определения. Т.е. для переменных нужно переходить к месту их определения, а от места вызова функции к месту ее определения (в h или cpp файле). Например, пусть имеется в исходном файле выражение: obj->func(). Нужно чтобы была возможность перейти сразу к месту, где определяется переменная obj, а также перейти к определению функции func(), в зависимости от того, на каком месте находится сейчас курсор.
3) Выявление мест, в которых используется переменная или вызывается функция. Т.е. нахождения всех references для чего-либо в исходных файлах. Как пример: есть функция SomeClass::Func(), вот нужно найти все места, где эта функция вызывается.
4) Code completion (IntelliSense). Это часто нужно, когда в проекте используетс какая-то большая внешняя библиотека или когда сам проект большой и разбит на библиотеки. Т.е. имеется ввиду появление подсказки по функциям в классе, когда набирается obj-> или obj.
Есть платный Xrefactory, он всё это умеет. Свободные расширения тоже существуют, но на сложном С++ коде обламываются. Как это всё настроить - читайте http://emacswiki.org/
5) Отладчик. Возможность пошаговой работы программы с просмотром значений переменных. Установка breakpoint, в том числе условных.
Интеграция с gdb, не самая удобная, но есть. Насчёт условных breakpoint-ов не уверен.
В общем если готовы познать дзен истинного юникса
-
wzrd
- Сообщения: 323
- ОС: Debian Lenny
Re: Emacs как IDE для C++
может и не в тему но я думаю стоит обратить внимание на fte (погугли, а еще лучше попробуй), он мне очень понравился, и показался удобным и простым в ознакомлении, хотя там нет переход по функциям и других новоротов как в вижуал студио. отладчик можно gdb использовать, а сборки мэйком делать.
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Emacs как IDE для C++
v04bvs, спасибо за развернутый ответ.
Так вот, у меня вопрос в основном и состоит в том, что именно этот "интерпретатор Elisp-а" предлагает для разработки на C++. Желательно "из коробки" (набора пакетов, которые ставятся из репозитория). Пока я увидел только подсветку синтаксиса в режиме C++, и возможность что-то дописывать вроде скриптов/макросов на Elisp-е для себя.
Пересмотреть взгляды я готов
Просто пытаюсь понять, чего в итоге можно добиться от Emacs. И то, как в нем люди занимаются разработкой на C++.
Насчет пунктов 2-4 хотелось понять, что именно Emacs предоставляет "из коробки", т.е. что он позволяет делать со своим интерпретатором Elisp-a полезного для решения этих задач. Из свободных расширений имеются ввиду cedet+semantic?
Пока пытаюсь разобраться с тэгами (etags, ctags). Вроде они как раз для навигации по коду задумывались, или я не прав?
Складывается впечатления, что для с++ они вообще мало чем полезны. Ведь в C++ для корректного перехода от места вызова функции к месту ее определения нужно не просто по названию функции переходить, но и знать для переменной какого типа эта функция вызывается. Т.е. получается, что нужен какой-то контекстный анализ.... А этого видимо для тэгов и нету, так?
Не очень понял пока, как можно понаставить breakpoints в коде и запустить отладчик (вроде команда gdb должна использоваться).
Т.е. поставить breakpoint на какой-то строке кода, в окружении которого есть переменная "i", с условием "i==10" нельзя?
"познать дзен истинного юникса" - звучит круто
Время и так уже трачу, пытаюсь разобраться. Просто пока не пойму до конца, чем же именно Emacs так хорош (пока рассматриваю только для разработки на C++)...
Emacs это интерпретатор Elisp-а. Это самое главное и из этого вытекает всё остальное. Elisp — это диалект лиспа (вообще говоря, не самый удачный), с набором библиотек для построения редактора. Именно с этой позиции его нужно понимать. Если решите его использовать всерьёз, у вас под рукой будет мощный инструмент, но достаточно сложный для изучения, т.к. лисп не похож на большинство популярных языков.
Так вот, у меня вопрос в основном и состоит в том, что именно этот "интерпретатор Elisp-а" предлагает для разработки на C++. Желательно "из коробки" (набора пакетов, которые ставятся из репозитория). Пока я увидел только подсветку синтаксиса в режиме C++, и возможность что-то дописывать вроде скриптов/макросов на Elisp-е для себя.
Если будете использовать Emacs — скорее всего вам придётся пересмотреть многие свои взгляды (которые, как я подозреваю, сформировались под влиянием современных IDE вроде Visual Studio).
Пересмотреть взгляды я готов
Есть платный Xrefactory, он всё это умеет. Свободные расширения тоже существуют, но на сложном С++ коде обламываются. Как это всё настроить - читайте http://emacswiki.org/
Насчет пунктов 2-4 хотелось понять, что именно Emacs предоставляет "из коробки", т.е. что он позволяет делать со своим интерпретатором Elisp-a полезного для решения этих задач. Из свободных расширений имеются ввиду cedet+semantic?
Пока пытаюсь разобраться с тэгами (etags, ctags). Вроде они как раз для навигации по коду задумывались, или я не прав?
Складывается впечатления, что для с++ они вообще мало чем полезны. Ведь в C++ для корректного перехода от места вызова функции к месту ее определения нужно не просто по названию функции переходить, но и знать для переменной какого типа эта функция вызывается. Т.е. получается, что нужен какой-то контекстный анализ.... А этого видимо для тэгов и нету, так?
Интеграция с gdb, не самая удобная, но есть. Насчёт условных breakpoint-ов не уверен.
Не очень понял пока, как можно понаставить breakpoints в коде и запустить отладчик (вроде команда gdb должна использоваться).
Т.е. поставить breakpoint на какой-то строке кода, в окружении которого есть переменная "i", с условием "i==10" нельзя?
В общем если готовы познать дзен истинного юникса, то учите Emacs (будьте готовы потратить не менее пары недель), если не готовы, ставьте Eclipse/JEdit/KDevelop/SlickEdit (вроде самая лучшая C++ IDE для линукса, похожая на Visual Studio, но платная).
"познать дзен истинного юникса" - звучит круто
-
ptolemy
- Сообщения: 57
- ОС: SUSE, RedHat, Mandriva, ASP
Re: Emacs как IDE для C++
Я тоже думал об использовании emacs в таком качестве. В результате размышлений я решил отказаться и от emacs и от C++ в пользу обычного C
Emacs придумали, чтобы писать сравнительно небольшие программы, если уж говорить о "дзен инстинного юникса"
Язык С++ разрабатывался как замена С для написания очень сложных программ, чтобы решить проблему "кризиса сложности". IMHO логичнее использовать монстра типа Eclipse... или перейти на обычный C
Keep It Simple, Stupid! :) http://embedded.ifmo.ru
-
wzrd
- Сообщения: 323
- ОС: Debian Lenny
Re: Emacs как IDE для C++
а не хочешь vim попробовать. я в последнее время на нем сижу. особенно если его плагинами оттюнинговать то это полноченное идэ получается. www.vim.org тебе в помощь (есть книжка и много скриптов (плагины) ). так что качай книжку и устанавливай плагины. там intellisense есть кстати. я пользовался и emacs'ом, и vim'ом. последний проще в освоении и удобнее. а в emacs"е нужно быть "пианистом" для того чтобы использовать его в полную мощь. это все конечно моё мнение.
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Emacs как IDE для C++
Emacs - инструмент довольно аскетичный, с точки зрения удобства и дико мощный с точки зрения возможностей. На первое место в Emacs ставились функциональность, простота и красота реализации.
Про аскетичность я полностью соглашусь
Но вот насчет "дико мощный с точки зрения возможностей" - я пока сомневаюсь... По крайней мере для C++ еще ничего особо удобного (мощного) не нашел. Правда не смотрел еще платный xrefactory.
Получается, что при всей "мощности" Emacs, интелектуальной поддержки для C++ в виде open source разработки нет? Т.е. такой, чтобы он мог держать в каком-то виде (AST?) распарсенные исходники и понимать что есть что в них, уметь инкрементально (по мере редактирования) перестраивать это представление. Т.е. в итоге получается, что для разработки на C++ (синтаксис которого гораздо сложнее, чем у C) open source сообщество ничего особо удобного для Emacs не создало? Или все-таки есть среди всей этой "мощности", я упускаю что-то из вида?
Посмотрел еще ebrowse (он был вместе с emacs сразу). Честно говоря не очень впечатлило. Хотя да, это уже хоть что-то для C++. Но все равно, кажется, никакого контекстного анализа. Просто и тупо чуть более удобная организация тэгов для обычного текста. А хотелось бы чтобы среда разработки "понимала" язык, на котором разрабатывается программа....
Язык С++ разрабатывался как замена С для написания очень сложных программ, чтобы решить проблему "кризиса сложности". IMHO логичнее использовать монстра типа Eclipse... или перейти на обычный CВ общем, мне кажется, что идеология C++ и идеология emacs плохо совмещаются.
Мне вот также показалось, что Emacs на что-то большее, чем работа с простым текстом не очень способен... А исходники на C в смысле синтаксиса гораздо ближе к простому тексту, где можно и обычными тэгами как-то все увязать.... Т.е. Emacs как IDE, понимающая исходники на C++, похоже не подходит. Буду пробывать Eclipse с CDT. Вроде там более IDE'шный подход
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Emacs как IDE для C++
wzrd писал(а): ↑15.02.2008 23:46а не хочешь vim попробовать. я в последнее время на нем сижу. особенно если его плагинами оттюнинговать то это полноченное идэ получается. www.vim.org тебе в помощь (есть книжка и много скриптов (плагины) ). так что качай книжку и устанавливай плагины. там intellisense есть кстати. я пользовался и emacs'ом, и vim'ом. последний проще в освоении и удобнее. а в emacs"е нужно быть "пианистом" для того чтобы использовать его в полную мощь. это все конечно моё мнение.
Книжка что-то не качается...
А вообще я пока vim и не изучал почти, так по началу конфиг какой слегка подправить в консоле, да и то уже чаще nano использую для этого. А vim - это тоже только текстовый редактор? Т.е. он тоже не "понимает" языка, на котором пишется программа? Понимает = учитывает конекст, правила для scope и т.д., т.е. так или иначе разбирает исходник на языке. Просто, если все в итоге сводится к работе как с простым текстом и навешиванием скриптов (вместо elisp-a, как в emacs), то похоже и в vim ничего особо "мощного" не предвидится...
А лучше просто расскажите, как вы решаете перечисленные выше задачи для навигации по коду в vim, это интереснее даже будет.
-
wzrd
- Сообщения: 323
- ОС: Debian Lenny
Re: Emacs как IDE для C++
Вы писали:
Пытаюсь разобраться с тем, можно ли из Emacs сделать удобную среду разработки на C++. Т.к. удобства для всех нужны разные, то напишу про те, которые мне кажутся самыми необходимыми. И так есть ли в нем следующие вещи:
1) Понятие проекта: какие файлы выступают в качестве исходников, какие подключены заголовки из разных библиотек, какие есть конфигурации для сборки. Зачем это нужно? Чтобы уметь делать поиск только среди файлов, которые используются в проекте, а не по всей файловой системе. Чтобы выбирать конфигурацию для сборки и запускать ее одной командой (комбинацией клавиш).
make файл. а потом прописываем в ~/.vimrc map <F12> :make . ну это самое простое.
2) Навигация по коду. Имеется ввиду переход от места использования к месту определения. Т.е. для переменных нужно переходить к месту их определения, а от места вызова функции к месту ее определения (в h или cpp файле). Например, пусть имеется в исходном файле выражение: obj->func(). Нужно чтобы была возможность перейти сразу к месту, где определяется переменная obj, а также перейти к определению функции func(), в зависимости от того, на каком месте находится сейчас курсор.
ставите ctags. и потом ctrl+]
3) Выявление мест, в которых используется переменная или вызывается функция. Т.е. нахождения всех references для чего-либо в исходных файлах. Как пример: есть функция SomeClass::Func(), вот нужно найти все места, где эта функция вызывается.
это можно банальным поиском сделать.
4) Code completion (IntelliSense). Это часто нужно, когда в проекте используетс какая-то большая внешняя библиотека или когда сам проект большой и разбит на библиотеки. Т.е. имеется ввиду появление подсказки по функциям в классе, когда набирается obj-> или obj.
OmniCppComplete. Для работы нужна внешняя (не плагин) тулза ctags для создания тэгов.
5) Отладчик. Возможность пошаговой работы программы с просмотром значений переменных. Установка breakpoint, в том числе условных.
у меня есть плагин vimgdb. не помню откуда взял, на vim.org нету. если надо будет залью.
Вопрос такой, можно ли настроить Emacs так, чтобы эти вещи в нем появились и заработали? Или же Emacs этого не умеет. а является просто удобным текстовым редактором с подсветкой синтаксиса?
по умолчанию есть и плюс еще на каждый формат файла своя настройка.
почитайте ту книгу, у меня она качается. и вот эту тему.
Пытаюсь разобраться с тем, можно ли из Emacs сделать удобную среду разработки на C++. Т.к. удобства для всех нужны разные, то напишу про те, которые мне кажутся самыми необходимыми. И так есть ли в нем следующие вещи:
1) Понятие проекта: какие файлы выступают в качестве исходников, какие подключены заголовки из разных библиотек, какие есть конфигурации для сборки. Зачем это нужно? Чтобы уметь делать поиск только среди файлов, которые используются в проекте, а не по всей файловой системе. Чтобы выбирать конфигурацию для сборки и запускать ее одной командой (комбинацией клавиш).
make файл. а потом прописываем в ~/.vimrc map <F12> :make . ну это самое простое.
2) Навигация по коду. Имеется ввиду переход от места использования к месту определения. Т.е. для переменных нужно переходить к месту их определения, а от места вызова функции к месту ее определения (в h или cpp файле). Например, пусть имеется в исходном файле выражение: obj->func(). Нужно чтобы была возможность перейти сразу к месту, где определяется переменная obj, а также перейти к определению функции func(), в зависимости от того, на каком месте находится сейчас курсор.
ставите ctags. и потом ctrl+]
3) Выявление мест, в которых используется переменная или вызывается функция. Т.е. нахождения всех references для чего-либо в исходных файлах. Как пример: есть функция SomeClass::Func(), вот нужно найти все места, где эта функция вызывается.
это можно банальным поиском сделать.
4) Code completion (IntelliSense). Это часто нужно, когда в проекте используетс какая-то большая внешняя библиотека или когда сам проект большой и разбит на библиотеки. Т.е. имеется ввиду появление подсказки по функциям в классе, когда набирается obj-> или obj.
OmniCppComplete. Для работы нужна внешняя (не плагин) тулза ctags для создания тэгов.
5) Отладчик. Возможность пошаговой работы программы с просмотром значений переменных. Установка breakpoint, в том числе условных.
у меня есть плагин vimgdb. не помню откуда взял, на vim.org нету. если надо будет залью.
Вопрос такой, можно ли настроить Emacs так, чтобы эти вещи в нем появились и заработали? Или же Emacs этого не умеет. а является просто удобным текстовым редактором с подсветкой синтаксиса?
по умолчанию есть и плюс еще на каждый формат файла своя настройка.
почитайте ту книгу, у меня она качается. и вот эту тему.
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Emacs как IDE для C++
make файл. а потом прописываем в ~/.vimrc map <F12> :make . ну это самое простое.
С этим понятно, но как vim узнает над каким проектом я сейчас работаю (т.е. откуда именно нужно запускать make и с какими параметрами)?
ставите ctags. и потом ctrl+]
Так ctags вроде же для C++ не достаточное средство:
A tag file is simple a list of tag names and where to find them. If there are duplicate entries, you often end up going to the wrong one because the tag file is sorted and your editor locates the first one in the tag file"
Т.е. если у меня сейчас в редакторе курсор стоит на вызове obj->func(), то чтобы правильно перейти необходимо точно знать тип переменной obj. Иначе если имеется class1::Func(), class2::func() и просто глобальная функция func(), то не ясно куда переходить.
это можно банальным поиском сделать.
Аналогично, чтобы правильно найти все места, откуда вызывается class1::func() и не перепутать с вызовами class2::func() или ::func() нужно понимать в каком контексте делается вызов. И для этого простого файла с тэгами явно не хватает... А если без понимания иходников, то банальный поиск и просматривание всех мест только и остается...
Для работы нужна внешняя (не плагин) тулза ctags для создания тэгов.
Для intellisense также нужно, чтобы правильно определялся тип перменной, у которой пытаемся вызвать какой-то метод. Причем для C++ правильно вывести тип, учитывая правила языка (препроцессор, typedef и тому подобные сожности) не распарсив исходники поекта бывает очень сложно. Т.е. для этого все есть в скриптах для vim?
у меня есть плагин vimgdb. не помню откуда взял, на vim.org нету. если надо будет залью.
А с помощью этого плагина можно удобно просматривать переменные для структур/классов? Т.е. когда есть Class1::ptrClass2, Class2::ptrClass3, можно ли развернуть все дерево и посмотреть значения полей?
-
wzrd
- Сообщения: 323
- ОС: Debian Lenny
Re: Emacs как IDE для C++
С этим понятно, но как vim узнает над каким проектом я сейчас работаю (т.е. откуда именно нужно запускать make и с какими параметрами)?
с директории где находится редактируемый файл.
Так ctags вроде же для C++ не достаточное средство:
A tag file is simple a list of tag names and where to find them. If there are duplicate entries, you often end up going to the wrong one because the tag file is sorted and your editor locates the first one in the tag file"
Т.е. если у меня сейчас в редакторе курсор стоит на вызове obj->func(), то чтобы правильно перейти необходимо точно знать тип переменной obj. Иначе если имеется class1::Func(), class2::func() и просто глобальная функция func(), то не ясно куда переходить.
думаю имелось ввиду не это. у меня в файле тэгов ссылки полные. наверное указанное вами отзыв о старой версии.
Аналогично, чтобы правильно найти все места, откуда вызывается class1::func() и не перепутать с вызовами class2::func() или ::func() нужно понимать в каком контексте делается вызов. И для этого простого файла с тэгами явно не хватает... А если без понимания иходников, то банальный поиск и просматривание всех мест только и остается...
конкретно для этого я плагина еще не видел, т.к. не нуждался в нём.
Для intellisense также нужно, чтобы правильно определялся тип перменной, у которой пытаемся вызвать какой-то метод. Причем для C++ правильно вывести тип, учитывая правила языка (препроцессор, typedef и тому подобные сожности) не распарсив исходники поекта бывает очень сложно. Т.е. для этого все есть в скриптах для vim?
особо с классами не работал в нем и таких случаев не встречал. но думаю работает, хотя точно не уверен.
А с помощью этого плагина можно удобно просматривать переменные для структур/классов? Т.е. когда есть Class1::ptrClass2, Class2::ptrClass3, можно ли развернуть все дерево и посмотреть значения полей?
это мне тоже не приходилось делать. я использую вим для написания тестовых кодов и т.д. а вот когда что то посерьезнее я предпочитаю eclipse с плагином под c/c++. для вас это так важно кодить именно под консолью? мне вим нравится из-за того что он не зависит от иксов и в то же время удобен. что бы настроить вим под свои нужды советую прочитать предложенную мной книжку полностью, а затем подобрать себе нужные плагины тут. это дело не дня и не двух...
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Emacs как IDE для C++
думаю имелось ввиду не это. у меня в файле тэгов ссылки полные. наверное указанное вами отзыв о старой версии.
Да это прямо с FAQ: http://ctags.sourceforge.net/faq.html#10
это мне тоже не приходилось делать. я использую вим для написания тестовых кодов и т.д. а вот когда что то посерьезнее я предпочитаю eclipse с плагином под c/c++. для вас это так важно кодить именно под консолью?
Про консоль я вообще не говорил, и в Emacs я пытаюсь научиться работать как раз в gtk оболочке.
Просто очень много в интернете встречал мнений, что мол Emacs - самая удобная штука для разработки... Вот и пытаюсь понять, как же в нем Emacs-еры решают разные задачи...А так да, я все больше уже склонен считать, что для C++ (кроме $ XRefactory, я его тоже уже опробывал) ничего особо удобного по сути и нету... И получается, что лучше переходить на Eclipse+CDT..
-
eduard_pustobaev
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Emacs как IDE для C++
А мне вот Kdevelop мил. Для плюсов хорошая IDE.
В дисгармонии со вселенной.
-
kamre
- Сообщения: 243
- ОС: Win7/Ubuntu 11.10
Re: Emacs как IDE для C++
KDevelop только поставил (когда смотрел что там у меня в дистрибе за пакеты), пока еще не разбирался с ней особо.
А как в ней с перечисленными выше задачами? Хотя бы на уровне Eclipse CDT есть поддержка языка?
-
wzrd
- Сообщения: 323
- ОС: Debian Lenny
Re: Emacs как IDE для C++
(kamre) писал(а):Про консоль я вообще не говорил, и в Emacs я пытаюсь научиться работать как раз в gtk оболочке.
Просто очень много в интернете встречал мнений, что мол Emacs - самая удобная штука для разработки... Вот и пытаюсь понять, как же в нем Emacs-еры решают разные задачи...А так да, я все больше уже склонен считать, что для C++ (кроме $ XRefactory, я его тоже уже опробывал) ничего особо удобного по сути и нету... И получается, что лучше переходить на Eclipse+CDT..
eclipse еще хорош тем что он кроссплатформенный...
-
diesel
- Бывший модератор
- Сообщения: 5989
- ОС: OS X, openSuSE, ROSA, Debian
Re: Emacs как IDE для C++
wzrd писал(а): ↑19.02.2008 21:28(kamre) писал(а):Про консоль я вообще не говорил, и в Emacs я пытаюсь научиться работать как раз в gtk оболочке.
Просто очень много в интернете встречал мнений, что мол Emacs - самая удобная штука для разработки... Вот и пытаюсь понять, как же в нем Emacs-еры решают разные задачи...А так да, я все больше уже склонен считать, что для C++ (кроме $ XRefactory, я его тоже уже опробывал) ничего особо удобного по сути и нету... И получается, что лучше переходить на Eclipse+CDT..
eclipse еще хорош тем что он кроссплатформенный...
emacs, vim тоже.
-
wzrd
- Сообщения: 323
- ОС: Debian Lenny
Re: Emacs как IDE для C++
я сказал это к тому что обычно выбирают текстовые редакторы, потому что они не зависят от платформы и не требуют переучивания при переходе на другую. а тут и eclipse есть это достоинство... правда он тоже со своей ложкой дегтя, тормозит иногда не выносимо.
P.S. а kdevelop напрягает тем что он создает слишком много своих файлов (многие из них мне не к чему) и то чплохо то что я не нашел конфиг где это можно настроить.
-
eduard_pustobaev
- Сообщения: 2629
- Статус: Ленивец
- ОС: Arch/Debian.
Re: Emacs как IDE для C++
Насчёт Эклипса не скажу, но в целом справляется.
В дисгармонии со вселенной.
-
netguard
- Сообщения: 30
Re: Emacs как IDE для C++
А разбиратся там есть в чем. Сразу скажу, чего нет ни в одной IDE для линукс.
1) Перехода к месту обьявления переменной.
2) Про отладчик и классы, где ты говорил про дерево классов, чтобы подклассы были видны.
3) Посредственный code complitition. Плохо держит шаблоны, stl вообще ни один не держит нормально.
Впринципе все. Что есть у KDevelop.
1) Быстрый доступ к любому файлу (как в VS+VAX, вызываешь список файлов и по первым буквам он соориентириуется и отфильтрует файлы, с помощью клавиш стрелок выбираешь нужный файл enter - он открыт).
2) Аналогично для функций и классов в проекте. В этом случае по качеству реализации этих фич, не уступает VS+VAX, при этом не имеет такой тормознутости что у Эклипса и не имеет бага эклипса. Эклипс может тебе открыть только тот файл, которых открыт в табах, kdevelop же смотрим все файлы проекта.
open declaration/implementation - встроенный работает криво, но плагин ctags работает очень хорошо, поэтому в настройках нужно именно на ctags функции lookup decl/impl хоткеи вешать. Правда он не понимает типа. Если у тебя несколько функции с одинаковым названием - он предлжит тебе выбрать одну из них через список, достаточно удобно, хотя конечно VS+VAX это делает автоматом.
makefile - настраивается через automake manager, причем там есть ньюнсы. Разобратся сложно, но когда разберешся - тогда все. Могу свой мануал выложить как там все делается.
Ну и code completition - гораздо умнее и лучше чем в любой другой IDE линукс. Чтобы были подсказки от библиотек, достаточно в опциях создать из хедеров библиотеки теги - затем их можно использовать в любом проекте. Шаблоны, если не такие сложные как в stl держит. Но не более, от итераторов ждать подсказок не следует.
Куча файлов это конечно проблема. Но легко решается. У меня есть каталог Projects в нем KDevelop. Вначале я создаю в Projects каталог с проектом. В KDevelop создаю проект в каталоге Projects/KDevelop и импортирую файлы из проекта (в каталоге KDevelop они создаются как симлинки на твои исходные файлы). В итоге ни одного лишнего файла в каталоге с самим проектом не появляется.
/Projects/Test - каталог с проектом, тут makefile, исходники. Естественно все красиво разбито по каталогам.
/Projects/KDevelop/Test - здесь файлы от KDevelop и симлинки на твои исходные файлы после импортирования.