LINUX.ORG.RU

Emacs как С/C++ IDE

 


6

7

Кто чем пользуется для программирования на Си и Си++ в Emacs? Из «серьезных» (основанных на реальном компиляторе) средств я пока нашел irony-mode и emacs-ycmd (с YouCompleteMe под капотом). Есть у кого-нибудь опыт их использования? А GNU Global?

★★★★★

Когда я садился познавать емакс, я настраивал по этому видео. Как видно уже из описания, тот чувак советовал использовать auto-complete, yasnippet, auto-complete-c-headers. Но я думаю, что можно лучше %)

Deleted
()
Последнее исправление: ecko (всего исправлений: 1)
Ответ на: комментарий от Deleted

Настроить emacs я смогу (я вообще старый блудный emacs-юзер), вопрос именно в приличной моде для Си и Си++. То, что я помню по опыту 10-летней давности (ecb, semantic), довольно убого.

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

Енто я понимаю. Я лишь говорю, что я использовал именно для Си :)

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

Ну в целом-то ты прав. irony-mode вроде как самый продвинутый автокомплит, flycheck — самая продвинутая подсветка ошибок.
Всё остальное убогинько

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

Ну в целом-то ты прав. irony-mode вроде как самый продвинутый автокомплит

Мне-то по описанию кажется, что emacs-ycmd сделан грамотнее (опирается на достаточно зрелый YouCompleteMe). Собственно, поэтому и спрашиваю о практическом опыте.

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

Слушай, а зачем тебе вообще Emacs? КМК, ты с тем же успехом мог бы использовать Geany или что-то сравнимой убогости.

tailgunner ★★★★★
() автор топика

Аналогично интересует навигация, кто-то пользуется clang-tags, clang-etags или аналогом?

unsigned ★★★★
()

RTags - прогрессивно, модно, молодежно, криво, убого, ничтожно (но вообще норм, в сравнении). Можно еще malinka сбоку прикрутить.

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

RTags - прогрессивно, модно, молодежно, криво, убого, ничтожно (но вообще норм, в сравнении)

Хм. Я окончательно списал RTags после того, как его кто-то обсрал на ЛОР. В сравнении с чем RTags норм?

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

Я очень привык к емаксу как к среде, когда-то моё окружение было всё emacs-centric - плеер в емаксе, jabber в емаксе, маны в емаксе, всё такое. Привык пальцами к хоткеям в плане непосредственного редактирования текста (при этом не важно, код он, или нет) - этого другие редакторы не дадут.

Если же рассматривать работу собственно с кодом на C, C++:

(defun my-ret-hook()
  "Make new lined indented"
  (local-set-key (kbd "RET") 'newline-and-indent))

(add-hook 'c++-mode-hook 'my-ret-hook)
(add-hook 'c-mode-hook 'my-ret-hook)

И всё. M-x compile, M-x grep - и хватает.

У gedit-ов и прочего, пусть даже они умеют все эти фичи или даже больше, всё равно совершенно иной UX.

Автодополнением во всей его красе пользовался последний раз лет 7 назад, но не в Emacs. Бывает иногда на другой машине что-то правлю в саблайме, так оно только отвлекает и раздражает.

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

как его кто-то обсрал на ЛОР

Вангую я.

В сравнении с чем RTags норм?

С остальными емаксоподелками.

Он вообще, в целом норм. Умеет в навигацию, переименования, но работает очень нестабильно, часто отваливается по непонятным причинам, долго исходники парсит. Требует выдирать из системы сборки json с файлами проекта, или использовать костыли из подмены gcc/clang симлинками, которые кроме вызова gcc/clang кормят rtags параметрами.

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

Ну, каждому свое... хотя если бы я прочитал такое от незнакомого перца - подумал бы, что ему лет 60 %)

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

M-x grep

по-моему M-x rgrep круче ) а если ещё и вместе с wgrep(а там ещё и multiple-cursors), то и ваще

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)
Ответ на: комментарий от tailgunner

Вообще, если тебе нужен только автокомплит, то irony-mode возможно и лучше rtags, но автокомплита мне мало.

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

Мне определенно нужна и навигация. Собственно, это главное, что нужно.

tailgunner ★★★★★
() автор топика

Кто чем пользуется для программирования на Си и Си++ в Emacs?

Для программирования на C и C++ в Emacs я использую Vi.

hateyoufeel ★★★★★
()

Emacs как С/C++ IDE

Такими темпами, скоро и на гит эксклюзивно перейдешь, и о боже мой! на лисп!!1

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

Такими темпами, через несколько лет и на гит вернешься

/ffgj

tailgunner ★★★★★
() автор топика

Испольщую magit, M-x compile, M-x rgrep, M-x occur. Пробовал ecb и прочие cedet'ы - не понравилось. Лучше чуть дольше пройтись по выхлопу грепа, чем думать: комплит отвалился или и правда функции такой нет?

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

Лучше чуть дольше пройтись по выхлопу грепа, чем думать: комплит отвалился или и правда функции такой нет?

Если бы это было «чуть дольше», не было бы xrefactory, ECB, CEDET, CDT, JDT, VA, YCM и прочих полезных инструментов.

tailgunner ★★★★★
() автор топика

юзаю cedet, helm-gtags, helm-cmd-t, autocomplete, magit

irony-mode и emacs-ycmd

вроде пробовал, но если ты кросс-компилируешь с gcc, то тебя ждет увлекательное путешествие по граблям. Ну и падучее оно.

x4DA ★★★★★
()
Последнее исправление: x4DA (всего исправлений: 2)
Ответ на: комментарий от x4DA

если ты кросс-компилируешь с gcc, то тебя ждет увлекательное путешествие по граблям

«Кросс-компилируешь с gcc» - это значит, что gcc и clang сконфигурированы для разных архитектур? Valloric говорит, что для YCM это неважно.

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

значит я еще с каким-то сервером енто перепутал, который хочет все компилировать

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

Если бы это было «чуть дольше», не было бы xrefactory, ECB, CEDET, CDT, JDT, VA, YCM и прочих полезных инструментов.

Спорное утверждение. Инструменты VS мне тоже кажутся менее удобными (в большинстве случаев), чем rgrep+occur.

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

в этом весь имакс

Скорее дело в конкретном «имаксере», чем самом имаксе. Ибо имхо даже хваленый VS'ный рефакторинг менее надежен чем греп в связке с емаксом.

Sectoid ★★★★★
()

http://tuhdo.github.io/c-ide.html http://tuhdo.github.io/helm-intro.html http://tuhdo.github.io/helm-projectile.html

Раньше пользовался семантиком для навигации, но он прибит гвоздями к упоротому ede, да и самая интересная команда semantic-symref тормозит.

Сейчас работают projectile и helm-gtags, для автодополнения вроде company-mode и gtags. Flycheck только как морда для checkpatch.pl. irony-eldoc может заменить семантиковый global-semantic-idle-summary-mode...

Еще можно посмотреть в r/emacs/, там такие вопросы почти каждый день задают.

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

http://tuhdo.github.io/c-ide.html http://tuhdo.github.io/helm-intro.html http://tuhdo.github.io/helm-projectile.html

Читал. Смущает, что всё это работает через GNU Global, который, насколько я понимаю, довольно тупой и Си/Си++ не понимает.

Сейчас работают projectile и helm-gtags, для автодополнения вроде company-mode и gtags

Си или Си++?

tailgunner ★★★★★
() автор топика
Ответ на: комментарий от yoghurt
(defun my-ret-hook()
  "Make new lined indented"
  (local-set-key (kbd "RET") 'newline-and-indent))

Емнип эelectric-indent-mode включен по дефолту на 24.4, хуки уже не нужны.

В любом случае projectile гораздо удобней рукопашных грепов и осваивается за 10 минут :)

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

Читал. Смущает, что всё это работает через GNU Global, который, насколько я понимаю, довольно тупой и Си/Си++ не понимает.

Проблемы если и есть, то только с C++, не знаю. Не видел ничего другого, что из коробки может захавать kernel и qemu, да еще и чужой архитектуры.

Сейчас работают projectile и helm-gtags, для автодополнения вроде company-mode и gtags

Си или Си++?

Си, когда писал на С++/Qt был семантик.

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

А GNU Global у тебя какой версии?

kernel и qemu, да еще и чужой архитектуры.

Из чистого любопытства - Qemu тоже для чужой архитектуры?

tailgunner ★★★★★
() автор топика
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

А GNU Global у тебя какой версии?

global - GNU GLOBAL 5.7.1
zpp
()
Ответ на: комментарий от tailgunner

Из чистого любопытства - Qemu тоже для чужой архитектуры?

Да

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