LINUX.ORG.RU

IDE для С (кроме emacs)


0

0

[troll-mode] Решил тут попробовать перейти с емакса на что-нибудь более модное [/troll-mode]

Слышал про Code::Blocks, но не понял, есть ли там интергация с Git и Mercurial? Гугл выдал подозрительно мало результатов.

Поставил Eclipse + CDT. Впечатления: есть НАМНОГО больше памяти, чем емакс, но работает при этом быстрее. Плагины для Git и Mercurial запахали весьма быстро. Когда добавил в него сорцы 2.6.31 в качестве проекта, памяти ему не хватило, понядобилось передавать джаве -Xmx1024 (больше heap'а). После этого он его таки проиндексировал, довольно-таки быстро, не так, как cscope-indexer, но не критично. Только вот почему-то "Go to declaration" работало как-то странно. Например, подвел курсор к упоминанию struct usb_device, нажимаю F3, а он ничего не видит. Запускаю "Open element", он находит, причем моментально. После этого F3 работает. Что-то другое он по F3 искал тоже весьма причудливо - бегал по разным вариантам, после 3-го предлагал таки список, но того, что надо там не было. А "Open element" опять все находил. Но это еще сносно. Хуже его общая нелогичность. Например, после емакса мне хотелось больше рабочего места, я кликнул правой кнопкой на тулбар, нажал "Hide toolbar". После выхода-входа тулбар тут как тут. Оказалось, что ДЛЯ ЭТОГО НУЖЕН ПЛАГИН... Нету цветовых схем. Цвета хранятся в properties файлах, причем per plugin, то есть, для JDT свои, а для CDT - свои... Ну и на последок - в окошке Project Explorer можно включить фильтры, чтобы не все файлы там отображались, тупо wildcards. Там есть список, а новый туда почему-то не добавить без ковыряния каких-то jar'ов... А фильтр "Executables" почему-то не ныкает файлы, которые воллне себе executable, небось, на .exe заточен. А еще я не понял, где задан биндинг Ctrl+PgUp и Ctrl+PgDown, которые по табам бегают. По дефолту он пытался генерить Makefile для проекта, и собирать его сразу после создания, чего вовсе от него не хотели, пришлось лазить по настройкам в разных местах. Также убило, что он не позволяет выкинуть стандартные /usr/include из списка индексируемых для проекта. Короче конфигурить его не просто, настройки разбросаны хрен знает как.

После этого поставил Netbeans с C/C++ плагином. Сначала пришлось потрахацца, чтобы он под Xmonad заработал, ну это не его вина. Цветовые схемы есть, кнопки управляются нормально. Git и Mercurial тоже заработали. Фильтры для файлов задаются отлично, регекспом. Удобнее создавать проект из существующих сырцов, он спрашивает, как его собирать и т.д. Также Netbeans пытается ловить ошибки до компиляции, правда, друхуровневый инициализатор структуры как-то не осилил. Из минусов: Странно работает история, если несколько раз делаешь "Go to declaration", Alt-Left потом как-то не до конца возвращает назад. Больше тупит. Тыкаешь кнопку в первый раз, он тупит, ну и т.д. Шрифты - говно! Вернее, их рендеринг. Шрифт Consolas, который радовал мне глаз и под Емаксом, и в Эклипсе тут рисуется ужасно, поставил DejaVu Sans Mono, жить можно. После компиляции можно щелкнуть в строчку с error и он перейдет к соответствующему месту в коде. Однако, если окно вывода компилятора уже сныкалось, понять что не так в конкретной строчке сложно - в качестве хинта выводится только "Compiler error". Не фатально, но не удобно. Ну и самый лютый писец. Решил я в него опять же запихать Linux-2.6.31. Опять пришлось поправить опции VM, но даже с -Xmx1024 он не осилил ЗА НОЧЬ проиндексировать ядро, утром аццки тупил на 99%, конца я так и не дождался. Может там 99% времени работал garbage collector, конечно, но вот эклипс в таких случаях пишет что-то типа "too much GC overhead". Да и не ясно, нахера так много данных держать в памяти, нельзя что ли это инкрементально делать, по кускам? Причем даже после перезапуска он попытался опять его индексировать, да так настойчиво, что пришлось его убить и руками удалить проект. У меня 2Гб, не особо много, но уж не думал, что этого не хватит для индексации ядра...

В целом немножко больше понравился нетбинс, может мозгов доставить...

Кто что посоветует (кроме возвката на emacs)? Есть ли другие IDE с поддержкой Git и Mercurial, c хорошим автодополнением и code browsing'ом под Linux?

KDevelop можно попробовать глянуть. Наверняка там это есть. Vim тоже никто не отменял. Тока вот чем вас emacs не устраивает? Пока, что проблемы, которые с ним у меня возникали, были связаны либо кривизной рук, либо недостатком умений по настройке и использованию.

AVATAR
()
Ответ на: комментарий от AVATAR

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

Знаешь, при работе с емаксом у меня возникает стоикое ощущение, что управляешь марионеткой, т.е. она, вроде как, движется, делает то, что ты хочешь, но все пальцы у тебя постоянно в работе, и требуют постоянного совершенствования мастерства управления. В то время, как классические IDE — робот с ДУ: нажал кнопку — он делает. Да, он не может так кривляться, как марионетка, но и усилий требует гораздо меньше, а то, что умеет, выполняет качественней и точней. Ну, это мое личное мнение.

a3
()
Ответ на: комментарий от AVATAR

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

Вобщем, я бы не хотел спорить о емаксе, хочется что-нить кроме него попробовать.

ratatosk
() автор топика

а чем емакс-то не устраивает? я несколько раз делал подходы к этим IDE, всегда откатывался назад - они не концептуально целостные, особенно если используются плугины, которые вешают одни и те же операции на разные кнопки, имеют отдельные настройки и т.п.

ott ★★★★★
()
Ответ на: комментарий от ott

>а чем емакс-то не устраивает?
Когда начинаешь пробовать пользоватся чем-то кроме базового набора действий, постоянно натыкаешься на трехэтажные кейбиндинги наподобие C-u C-c C-x. Такое чувство, что те, кто пишет режимы, со скоростью меньше 450 символов в минуту не печатают.

ipc
()

Ну если имакс нихочу, тогда Vi

asc
()
Ответ на: комментарий от ipc

> Когда начинаешь пробовать пользоватся чем-то кроме базового набора действий, постоянно натыкаешься на трехэтажные кейбиндинги наподобие C-u C-c C-x. Такое чувство, что те, кто пишет режимы, со скоростью меньше 450 символов в минуту не печатают.

А как ещё делать сложные действия? Длинные биндинги - закономерное последствие увеличения количества команд. Иногда быстрее нажать C-u C-c C-x, чем искать нужный пункт в недрах меню. Опять же, если не нужна куча действий, можно повесить на короткие хоткеи только то, что нужно.

anonymous
()
Ответ на: комментарий от anonymous

>А как ещё делать сложные действия? Длинные биндинги - закономерное последствие увеличения количества команд.
Как вариант: переопределением стандартных действий в зависимости от режима.

Пример, может и не совсем удачный:
C-j, в c-mode - новая строка + отступ в коде
RET, везде - новая строка.

Можно сделать, чтобы RET всегда расставлял отступы в c-mode. И пользоватся только им.

А еще лучше - чтобы команды перехода вверх/вниз на строку всегда "на экране" расставляли отступы, причем "добавлялись в файл" они только при сохранении файла (чтобы не было проблем с файлами в read-only режиме, когда править нельзя)

Да, при этом часть единообразия работы во всех режимах будет потеряна(а вдруг кому-то нужны будут именно исходные команды редактирования текста). Хотя дубли кейбиндингов тут и так есть: C-n/C-p и <up>/<down>(стрелки), так что не беда.

ipc
()
Ответ на: комментарий от anonymous

>Иногда быстрее нажать C-u C-c C-x, чем искать нужный пункт в недрах меню.
В других средах подобное обычно делается либо мышью, либо переопределением привязок клавиш.

>Опять же, если не нужна куча действий, можно повесить на короткие хоткеи только то, что нужно.
Тогда придется для каждого режима сочинять свои собственные биндинги, т.е. мартышкин труд.

ipc
()

Из модного для С видел только KDevelop, остальное какое-то не шибко рабочее. Ну и вим/имакс.

tensai_cirno ★★★★★
()
Ответ на: комментарий от ipc

добавить в c-common-hook следующую команду - (local-set-key [return] 'newline-and-indent)

у меня для общие для режимов настройки вынесены в отдельный хуки, которые привязывается к конкретному режиму, в том числе и newline-and-indent....

ott ★★★★★
()
Ответ на: комментарий от ipc

как правило, специфические для режима вещи уже имеют отдельный префикс и достаточно быстро доступны для пользователя.

ott ★★★★★
()
Ответ на: комментарий от ott

Да бох с ним, с емаксом, может я на него таки вернусь, не суть.

По теме - попробовал Geany, ну это не тот калибр, пардон.
Скорость, конечно, впечатляет, быстрее только nano. И поставился быстро и со всеми плагинами.
Но вот работа с проектом там как-то вообще отсутствует. Короче, это во-первых - редактор, а уже потом IDE. Индексатор кода тоже странный. Как я понял, он только по открытым файлам смотрит. Настройки форматирования - нулевые просто.

ratatosk
() автор топика

Можешь попробовать QtCreator, Mercurial он правда не умеет, зато индекс там весьма неплохой и со скоростью проблем нет. Основное средство навигации - продвинутый поиск.

YesSSS ★★★
()

> Опять пришлось поправить опции VM, но даже с -Xmx1024 он не осилил ЗА НОЧЬ проиндексировать ядро

На всякий случай, если кто не знает: у ядра в Makefile есть таргет "tags". Тоесть значит cd /usr/src/linux && make tags сделают этот самый файл за 3 минуты.

Сам я пользуюсь vim, ковыряюсь в ядре. Не скажу, что идеально, руки всевремя чешутся что-нибудь допилить, но у него есть фишки, к которым я привык и без которых уже не могу работать. Емакс не пробовал (испугался), раньше сидел в КДевелопе и Эклипсе.

- его фирменные биндинги. клавиатур много, а заветные hjkl у всех на одном и томже месте, в отличии от шифтов, инсертов и контролов.

- консольный режим: оочень помогает работать по ssh через screen

- нормальная идентация (по сравнению с КДевелопом)

- быстрота (по сравнению с Эклипсом)

- удобное переключение между редактируемыми файлами (в старом Кдевелопе это вообще можно было делать только мышью)

вот.

Хотя плагин интеграции с системами контроля версий имеется (и не один), но я нашел его слишком сложным и пользуюсь гитом из командной строки. Также есть плагин интеграции с gdb, но он тоже больно толст, забил.

ierton ★★
()

К сожалению, в виме беда с автодополнением (или я чего-то не знаю). Сам смог настроить только чтото вроде Т9 - подсказывает просто уже набранные слова.

ierton ★★
()
Ответ на: комментарий от ierton

Ctrl-P/N, если проект проиндексирован ctags, показывает дополнения оттуда. Ctrl-X O пытается делать это интеллекуально в зависимости от контекста. Первое даже настраивать не надо, работает из коробки.

kemm
()
Ответ на: комментарий от ott

>используются плугины, которые вешают одни и
>те же операции на разные кнопки, имеют >отдельные настройки и т.п.

а emacs отличается?
например, посмотреть различие working tree и того что в последней ревизии,
в "svn-status" "=", в "magit-status" "d".

fghj ★★★★★
()
Ответ на: комментарий от fghj

magit - это отдельный разговор, он сильно выбивается из всех VC-related модулей для емакса...

ott ★★★★★
()

1. Code::Blocks берите или ночные сборки, или собирайте из репозитория сами.
2. Если вы уже хорошо знакомы с Emacs, то зачем вам что то другое? ;)

> Слышал про Code::Blocks, но не понял, есть ли там интергация с Git и Mercurial? Гугл выдал подозрительно мало результатов.


Нет. Для subversion кто то писал плагин, но работал он под windows. Как сейчас обстоят дела с проектом хз.

3. А зачем вам поддержка Git и Mercurial в IDE?

andreyu ★★★★★
()
Ответ на: комментарий от anonymous

> Длинные биндинги - закономерное последствие увеличения количества команд. Иногда быстрее нажать C-u C-c C-x, чем искать нужный пункт в недрах меню.

Проблема не в том, что медленно или долго нажимать. Проблема в том, что именно нужно нажимать. Овер 90% функций редактора/IDE нужны раз в год (месяц, день), но нужны. И поиск заветной комбинации занимает существенно дольше, чем простой бросок взгляда на _контекстное_ меню или даже два-три клика в осноном.

LamerOk ★★★★★
()
Ответ на: комментарий от ierton

> - нормальная идентация (по сравнению с КДевелопом)

В Кдевелопе идент настраивается в опциях тремя щелчками на любой разумный вкус.

LamerOk ★★★★★
()
Ответ на: комментарий от kemm

> Первое даже настраивать не надо, работает из коробки.

Точнее, если оно уже положено в коробку маинтейнерами пакета для дистра. В ванильном вим этого плагина нет.

LamerOk ★★★★★
()
Ответ на: комментарий от LamerOk

> Овер 90% функций редактора/IDE нужны раз в год (месяц, день), но нужны. И поиск заветной комбинации занимает существенно дольше, чем простой бросок взгляда на _контекстное_ меню

Например?

anonymous
()
Ответ на: комментарий от LamerOk

Emacs позволяет модифицировать меню в зависимости от режима. Это подойдет в качестве аналога контекстного меню?

anonymous
()
Ответ на: комментарий от LamerOk

Ага, нашёл. Действительно есть, действительно смысла как BOM не имеет. 8))

kemm
()

Не знаю, подойдет ли по твоим потребностям, лично я пользуюсь Anjuta. Вполне сносный IDE. Ну это по моим меркам.

Deleted
()
Ответ на: комментарий от LamerOk

> Овер 90% функций редактора/IDE нужны раз в год (месяц, день), но нужны. И поиск заветной комбинации занимает существенно дольше, чем простой бросок взгляда на _контекстное_ меню или даже два-три клика в осноном.

В емаксе тоже есть меню. Там конечно не всё, но необходимый минимум имеется. Я всегда начинаю знакомство с новым режимом через меню (не нужно просто его скрывать, следуя странной моде). Потом, комбинации клавиш биндятся на функции c вполне описательными именами, можно вызывать что то редкое через M-x. Ещё и про подсказки C-h не стоит забывать. В целом мне система конфигурирования в емаксе кажется намного более простой и прозрачной, чем в модных чудо-IDE.

Hjorn
()
Ответ на: комментарий от anonymous

> Emacs позволяет модифицировать меню в зависимости от режима. Это подойдет в качестве аналога контекстного меню?

Ты не до конца уловил мой поинт: меню - одновременно и способ осуществить действие, и документация по возможным действиям. В Emacs нужно сначала отдельно смотреть документацию, а потом отдельно - выполнять само действие. Притом, как факт наличия такого действия, так и способ её выполнения к следующему разу, когда она потребуется, уже будут благополучно забыты.

Что касается контекстности, то идеальное воплощение её в жизнь - vim с его режимами.

LamerOk ★★★★★
()
Ответ на: комментарий от ott

Ты б выложил бы свой свеженький конфиг куда-нибудь для общего доступа.. :)

Artem_Korneev
()
Ответ на: комментарий от ott

как правило, специфические для режима вещи уже имеют отдельный префикс и достаточно быстро доступны для пользователя.

Пример обратного: GUD. Избранные команды:

Next Line C-x C-a C-n
Step Line C-x C-a C-s
Часто используемые команды? При работе с отладчиком - да. Остальные выдержаны в таком же ключе.

Конечно, есть еще и окно для ввода команд gdb, что и спасает положение. Но смысл тогда было делать такой навороченный режим, если реально можно использовать только те возможности, которые были еще до него в виде, насколько помню, gdb-mode.el?

ipc
()
Ответ на: комментарий от ott

>добавить в c-common-hook следующую команду - (local-set-key [return] 'newline-and-indent)
Уже успел привыкнуть к C-j... В конце концов пришел к выводу, что поддержка длинных конфигов не для меня и убрал оттуда все, что можно.

>у меня для общие для режимов настройки вынесены в отдельный хуки, которые привязывается к конкретному режиму

А вот это возьму на заметку.

ipc
()
Ответ на: комментарий от ratatosk

> Емакс не устраивает не особо хрошо работающим автодополнением (по крайней мере, из того, что я сомг настроить)

А оно реально так нужно это "умное дополнение" при редактировании исходников на C, да еще и linux kernel? В первую очередь интересна навигация по исходникам. А для этого можно попробовать бесплатный Xref, который для C. Если он работает для C не хуже, чем платный для плюсов, да еще и быстрее (т.к. это C), то вроде бы в самый раз должно быть.

kamre ★★★
()
Ответ на: комментарий от kamre

Поддержка VC в IDE - это удобно, файлы сохранять не забываешь, и не видишь сообщений, что файл изменился с предложением его перечитать (особенно если ты его еще и не сохранил), и т.д. Да и просто привычно.

Qt Creator - это ж для Qt только, или я что-то проспал?

Xref не смотрел, кстати, надо будет как-нибудь попробовать...

ratatosk
() автор топика
Ответ на: комментарий от ratatosk

> Qt Creator - это ж для Qt только, или я что-то проспал?

Обычные Makefile-ы тоже умеет. Хотя конечно, qmake для него роднее.

YesSSS ★★★
()

vim - тут и отличное редактирование кода. и интелисенс (ctags) и интеграция с VCS, и возможность редактирования кода на уделенной машине так же как и на локальной...

периодически пытаюсь работать на kdevelop (обладает лучшим автокомплишеном и работой с с++ среди всех IDE - он даже парсит stl и boost вместе с asio и прочими тяжелими библиотеками), но у них в парсинге кода есть утечка памяти - и иногда через 5 минут отжирает всю память, потом своп... Жду пока допилят, а пока vim.

stpg
()

Клипса поглюкивает здорово. Те же проблемы с F3 - это проблемы хоткеев. У меня все хоткеи работали ровно через раз.
Нетбинс - я так и не осилил как посмотреть hex в отладчике. + не показывает названия регистров на amd64

пользуюсь нетбинсом.

k0l0b0k ★★
()
Ответ на: комментарий от anonymous

> Как настраивал?

Как ни странно - работает искаробки. Версия 3.9.95 (KDE 4.3.2)

stpg
()
Ответ на: комментарий от stpg

> vim - тут и отличное редактирование кода. и интелисенс (ctags) и интеграция с VCS, и возможность редактирования кода на уделенной машине так же как и на локальной...

Ну вот именно, что ctags. Да ещё cscope. Обе они дело своё знают, но C++ парсят неважно, да и функционал ограничен.. ведь недостаточно построить полную БД кода, нужно ещё и запросы делать не по просто имени идентификатора под курсором, а чтоб учитывал информацию о контексте редактирования.

К примеру, попробуйте-ка перейти в исходниках ядра линукса на объявление структуры "struct page". Vim найдет запись в файле от ctags, но вместе с тем найдет десять миллионов одноименных переменных и вывалит полный список на 3 экрана, сиди потом, ковыряйся. Неудобно.

Кстати, есть ещё какаято штука http://www.gnu.org/software/idutils/ , кто-нибудь пробовал разбираться?

ierton ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.