LINUX.ORG.RU

Какие пакеты Emacs лучше использовать для С++ в 2016 году?

 ,


0

8

Хочу попробовать Emacs при изучении С++, а может и дальше буду использовать для своих небольших поделок. Начал искать руководства и нашёл несколько:
https://www.youtube.com/watch?v=HTUE03LnaXA
http://tuhdo.github.io/c-ide.html
http://syamajala.github.io/c-ide.html
https://github.com/atilaneves/cmake-ide
Наверное, есть и другие. Так же читал темы на этом форме. Решил попробовать первое руководство, заметил что некоторые пакеты не работают, некоторые давно не обновляются (скорее всего заброшены). И решил создать эту тему. Что посоветуете для С++ под занавес 2016?

Что посоветуете для С++ под занавес 2016?

Visual Studio.

utf8nowhere ★★★
()

Не советую изучать C++ и emacs одновременно. Но для C++ в emacs стоит использовать cmake-ide + irony-mode + rtags + flycheck.

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

Не советую изучать C++ и emacs одновременно.

В свою очередь, вообще не советую их изучать. Никак.

utf8nowhere ★★★
()

Хочу попробовать Emacs при изучении С++

Плохая идея. Не выучишь ничего в итоге.

Norgat ★★★★★
()

Для редактирования кода и навигации по исходникам неплох eclipse

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

irony значительно приятнее для автодополнения, но не умеет в навигацию по коду.

feofan ★★★★★
()

helm, magit, projectile (+/-), yasnippet paredit, flymake, electric-operator ...

anonymous
()

Под занавес 2016 стоит изучать какой-нибудь язык программирования, не несущий крест (а то и два) обратной совместимости за несколько десятилетий.

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

Это не кресты, это плюсы!

Аутотренинг крестанутых.

anonymous
()

я использую company+helm+clang+ggtags(global). В большинстве своем меня устраивает, подсказки в том числе и по с++11 выдает. Из минусов не понимает вот такие конструкции

using fs=boost::filesystem;
пример конфига (пакеты подключает emerge, мне их подключать не надо, на другой системе придется):

(require 'company)
(require 'cc-mode)

(setq
 helm-gtags-ignore-case t
 helm-gtags-auto-update t
 helm-gtags-use-input-at-cursor t
 helm-gtags-pulse-at-cursor t
 helm-gtags-prefix-key "\C-cg"
 helm-gtags-suggested-key-mapping t
 )


(require 'helm-gtags)
;; Enable helm-gtags-mode
(add-hook 'dired-mode-hook 'helm-gtags-mode)
(add-hook 'eshell-mode-hook 'helm-gtags-mode)
(add-hook 'c-mode-hook 'helm-gtags-mode)
(add-hook 'c++-mode-hook 'helm-gtags-mode)
(add-hook 'asm-mode-hook 'helm-gtags-mode)
(add-hook 'c++-mode-hook 'ggtags-mode)
(add-hook 'asm-mode-hook 'ggtags-mode)
(add-hook 'c-mode-hook 'linum-mode)
(add-hook 'c++-mode-hook 'linum-mode)
(add-hook 'asm-mode-hook 'linum-mode)
add-hook 'lisp-mode-hook 'linum-mode)
(define-key helm-gtags-mode-map (kbd "C-c g a") 'helm-gtags-tags-in-this-function)
(define-key helm-gtags-mode-map (kbd "C-j") 'helm-gtags-select)
(define-key helm-gtags-mode-map (kbd "M-.") 'helm-gtags-dwim)
(define-key helm-gtags-mode-map (kbd "M-,") 'helm-gtags-pop-stack)
(define-key helm-gtags-mode-map (kbd "C-c <") 'helm-gtags-previous-history)
(define-key helm-gtags-mode-map (kbd "C-c >") 'helm-gtags-next-histor)

(add-hook 'after-init-hook 'global-company-mode)
(setq company-backends (delete 'company-semantic company-backends))
(define-key c-mode-map  [(control return)] 'company-complete)
(define-key c++-mode-map  [(control return)] 'company-complete)
(define-key lisp-mode-map  [(control return)] 'company-complete)
(global-set-key  [(control return)] 'company-complete)
(add-to-list 'company-backends 'company-c-headers)
(add-to-list 'company-backends 'company-latex-commands)
(add-to-list 'company-backends 'company-auctex-bibs)
(add-to-list 'company-backends 'company-auctex-environments)
(add-to-list 'company-backends 'company-auctex-init)
(add-to-list 'company-backends 'company-auctex-labels)
(add-to-list 'company-backends 'company-auctex-symbols)
(add-to-list 'company-backends 'company-auctex-macros)
(add-hook 'c++-mode-hook (lambda() (setq company-clang-arguments
   (quote
    ("-I/usr/include" "-I/usr/include/fltk" "-std=c++1z")))))
(add-hook 'c-mode-hook (lambda() (setq company-clang-arguments
   (quote
    ("-I/usr/include" "-I/usr/include/fltk")))))
(add-hook 'c-mode-common-hook 'hs-minor-mode)
(dolist (hook '(text-mode-hook))
      (add-hook hook (lambda () (flyspell-mode 1))))
    (dolist (hook '(change-log-mode-hook log-edit-mode-hook))
      (add-hook hook (lambda () (flyspell-mode -1))))
 (add-hook 'c++-mode-hook
          (lambda ()
            (flyspell-prog-mode)
            ; ...
	    ))
Silerus ★★★★
()
Ответ на: комментарий от Softwayer

Под занавес 2016 стоит изучать какой-нибудь язык программирования, не несущий крест (а то и два) обратной совместимости за несколько десятилетий.

Куда пречислить 10руб. за проповедь?

ashot ★★★★
()

Emacs годен для цепепе :-) Если ты чайник в том и в другом, то просто начни с учебника по Emacs (вызывается по C-h t) :-) Полностью проштудируй этот учебник :-) Затем, изучи команду compile (M-x compile), прочитай про compilation mode, про Dired (M-x dired) и, желательно, про shell mode :-) Дальше бери Страуструпа 4-е издание и вперёд :-) Удачи :-)

anonymous
()

PS. Не советую на данном этапе заморачиваться настройкой всяких автодополнений, подсказок, проджект-менеджеров и прочих «полезностей» :-) А то тебе сейчас накидают портянок со своими конфигами со всех сторон :-) Ты учти, что конфиги Emacs составляются постепенно - годами и даже десятилетиями :-) Emacs - это же комбайн :-)

anonymous
()

мой набор: projectile, ycmd, company, flycheck

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

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

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

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

Это из той же оперы, как писать на цепепе без использования его стандартной библиотеки :-)

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

Да я не про продакшен речь веду. У меня на работе вижла 2012 стоит вообще :-) я дома clion использую. И мне бы очень хотелось иметь поддержку последнего стандарта в ide. Про то, что парсер ломается иногда на бусте, я молчу (конкретно вчера не смог парсер в boost.tti has_member_function. Но мы все знаем, что грех жаловаться на такое :-))

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

Если есть время - напиши открытый language server. За бэкэнд можно взять тот же rtags :)

Будет как минимум работать в visual studio code, ну и по идее в любом совместимом клиенте (eclipse пока что только в списке).

Кстати qtc очень даже жрёт буст и похожий по шаблонным историям код. Да и написан не на жабке, у меня сейчас 3 инстанса запущенно (~100kL кода, не считая зависмостей) и жрут они суммарно что то около 800м.

UPD,а забыл что в одной сессии ещё проект на ~800kL подгружен:)

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

Мне тут недавно коллега-фанатик CLion радостно заявил — теперь при отладке можно ходить и назад!!! Киллер-фича! В вашем креаторе такого точно нет! Очень удивился, что в gdb reverse-step работает с 2009 года :)

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

Я это к тому, что никто так внятно и не смог написать преимущества CLion, а то я б может и купил бы.

Преимущества перед чем? :-) Перед всякими Vim/Emacs? :-) Настраивать не надо всякие semantic, rtags, gtags, helm, auto-complete, всякие менеджеры пакетов и т.д. и т.п. :-) Шрифты настроил с цветами, гайдлайны свои вбил в формы и пусть дальше за остальное отвечает поставщик :-) Кто к этим самым Vim/Emacs не привык, тому CLion имеет смысл купить и радоваться :-)

anonymous
()

Какие пакеты Emacs

Для С++? В 2016-м? Никакие. Брат жив.

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