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?

ЗАСТАВЬ КОМПЬЮТЕР ПОЛИВАТЬ ОГОРОД

автоматизация своими руками: электроприборы под контролем компьютера
beware of programmers who carry screwdrivers!
http://www.unicontrollers.com/products/unc01x

[#]  

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

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

()
[#] Ответ на: Re: IDE для С (кроме emacs) от AVATAR 20.10.2009 10:37:57  
a3

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

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

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

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от AVATAR 20.10.2009 10:37:57  

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

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

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

* ()
[#]  
ott

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

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

***** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ott 20.10.2009 10:56:55  

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

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

* ()
[#]  
asc

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

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

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ipc 20.10.2009 11:23:21  

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

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

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

anonymous ()
[#] Ответ на: Re: IDE для С (кроме emacs) от anonymous 20.10.2009 11:57:49  

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

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

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

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

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

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

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от anonymous 20.10.2009 11:57:49  

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

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

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

* ()
[#]  

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

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

***** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ipc 20.10.2009 12:12:45  
ott

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

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

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

***** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ipc 20.10.2009 12:35:37  
ott

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

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

***** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ott 20.10.2009 12:56:46  

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

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

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

* ()
[#]  

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

vim

** ()
[#]  
YesSSS

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

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

*** ()
[#]  
ierton

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

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

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

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

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

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

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

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

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

вот.

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

* ()
[#]  
ierton

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

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

* ()
[#] Ответ на: IDE для С (кроме emacs) от ierton 20.10.2009 13:37:35  

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

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

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ott 20.10.2009 10:56:55  

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

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

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

***** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от fghj 20.10.2009 13:53:29  
ott

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

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

***** ()
[#]  
andreyu

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

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

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


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

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

***** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от anonymous 20.10.2009 11:57:49  

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

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

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

**** ()
[#] Ответ на: IDE для С (кроме emacs) от ierton 20.10.2009 13:35:18  

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

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

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

**** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от kemm 20.10.2009 13:42:29  

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

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

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

**** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от LamerOk 20.10.2009 14:23:24  

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

> в осноном.

в основном.

Сампочин.

**** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от LamerOk 20.10.2009 14:23:24  

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

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

Например?

anonymous ()
[#] Ответ на: Re: IDE для С (кроме emacs) от anonymous 20.10.2009 14:46:28  

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

Например у меня текст в UTF-8 без BOM. Я хочу сохранить его с BOM.

**** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от LamerOk 20.10.2009 15:36:38  

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

> Например у меня текст в UTF-8 без BOM. Я хочу сохранить его с BOM.

В utf8 есть BOM?

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от LamerOk 20.10.2009 15:36:38  

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

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

anonymous ()
[#] Ответ на: Re: IDE для С (кроме emacs) от LamerOk 20.10.2009 16:24:16  

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

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

* ()
[#]  
halturin

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

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

***** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от LamerOk 20.10.2009 14:23:24  

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

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

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

* ()
[#]  
nikolayd

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

Допили motor.

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от anonymous 20.10.2009 16:34:39  

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

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

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

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

**** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ott 20.10.2009 12:55:44  

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

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

()
[#] Ответ на: Re: IDE для С (кроме emacs) от ott 20.10.2009 12:56:46  

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

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

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

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

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

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ott 20.10.2009 12:55:44  

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

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

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

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

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ratatosk 20.10.2009 10:50:29  

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

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

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

** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от kamre 20.10.2009 20:48:41  

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

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

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

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

* ()
[#] Ответ на: Re: IDE для С (кроме emacs) от ratatosk 20.10.2009 22:56:19  
YesSSS

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

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

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

*** ()
[#]  
stpg

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

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

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

* ()
[#] Ответ на: IDE для С (кроме emacs) от stpg 21.10.2009 0:18:33  

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

>обладает лучшим автокомплишеном и работой с с++

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

anonymous ()
[#]  
k0l0b0k

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

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

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

** ()
[#] Ответ на: Re: IDE для С (кроме emacs) от anonymous 21.10.2009 13:53:22  
stpg

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

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

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

* ()
[#] Ответ на: IDE для С (кроме emacs) от stpg 21.10.2009 0:18:33  
ierton

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

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

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

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

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

* ()