LINUX.ORG.RU

Настройка emacs для работы с C


2

2

Подскажите пожалуйста годный мануал со списком пакетов и описанием их настройки для работы с С. Собственно нужен автокомплит, фолдинг (хотя его нагугливал), и базовая работа с проектами(просмотр файлов проекта, перемещение). И есть ли красивый способ номера строк показывать, (column-number-mode t) всё таки не то.

★★★★

Последнее исправление: aptyp (всего исправлений: 1)

Я использую clang-овский auto-complete для дополнения и допиленным my-desktop для хранения сессий. Организация проектов осуществляется созданием директории проекта и специальным Makefile, из емакса вызываются async-shell-command длы выполнения make и запуска программы.

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

А какой именно auto-complete, вики несколько показывает. Допиленный my-desktop нигде не выложен?

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

http://emacswiki.org/emacs/AutoComplete и https://github.com/brianjcj/auto-complete-clang

Допил, ЕМНИП, несущественный. Мне показалось нелогичным, что при работе с некоторой сессией во время выхода из емакса, она не сохраняется (вместо этого создается сессия last-session).

Вот мой немного исправленный хук:

(defun my-desktop-kill-emacs-hook ()
 "Save desktop before killing emacs."
 (let ((name (my-desktop-get-current-name)))
  (if name
    (my-desktop-save name)
   (progn
    (when (file-exists-p (concat my-desktop-session-dir "last-session"))
     (setq desktop-file-modtime
           (nth 5 (file-attributes (desktop-full-file-name (concat my-desktop-session-dir "last-session"))))))
    (my-desktop-save "last-session")))))
staseg ★★★★★
()
Ответ на: комментарий от staseg

Не в тему немного, но у меня возникла проблема, может подскажете что-нибудь?
Компилирую GNU Emacs 24.1 с gtk+ gui, xft включен, но всеравно нету сглаживания
шрифтов в ubuntu 12.04. А в openSUSE 12.1, с которым я работал раньше, таких проблем нет.
Как я понимаю, это проблема настроек системы, но где же искать его.

P.S. Gui нужен только для лучшей настройки подсветки кода. Сейчас работаю в терминале.

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

Да, похоже на то. Поставил полный хинтинг — заработало, но только в gnome.
Видимо, тут уже надо выбирать меншее зло: сидеть в gnome с красивым emacs gui,
или в красивом kde4 с emacs в эмуляторе терминала.

Хорошо было бы сделать qt4 gui для emacs :-)
Правда, не знаю смогу ли найти время для этого когда-нибудь.

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

в терминале вообще говно, в gtk - нормально

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

Поставил полный хинтинг — заработало, но только в gnome.

настроить ~/.Xresources, ~/.fonts.conf и будет работать везде

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

сглаживание gtk2( точнее - cairo) вне всяких разных DE делается через файл ~/.Xresources

!! Fonts settings
! http://www.freedesktop.org/wiki/ScreenFontSettings
! Settings read by both Cairo and libXft: 
! Xft.antialias:  (bool)// FC_ANTIALIAS Whether glyphs can be antialiased
Xft.antialias: true
! Xft.dpi:        (double)// FC_DPI  Target dots per inch
Xft.dpi: 120.0
! Xft.hinting:    (bool)// FC_HINTING  Whether the rasterizer should use hinting
Xft.hinting: true
! Xft.hintstyle:  (int) // FC_HINT_STYLE Automatic hinting style - hintnone hintslight hintmedium hintfull
Xft.hintstyle: hintnone
! Xft.rgba:       (int) // FC_RGBA unknown, rgb, bgr, vrgb, vbgr, none - subpixel geometry
Xft.rgba: none 
! Xft.lcdfilter   (int) // FC_LCD_FILTER type of lcd filter to use - lcdnone lcddefault lcdlight lcdlegacy
Xft.lcdfilter: lcddefault
! Settings specific to libXft:
! Xft.scale (double) // FC_SCALE
! Xft.render (bool) // XFT_RENDER
! Xft.embolden (bool) // FC_EMBOLDEN true if emboldening needed
! Xft.autohint (bool) // FC_AUTOHINT Use autohinter instead of normal hinter
Xft.autohint: false
! Xft.minspace (bool) // FC_MINSPACE use minimum line spacing
! Xft.maxglyphmemory (int) // XFT_MAX_GLYPH_MEMORY 

! These ones seem to be unused?
! Xft.core (bool) //  XFT_CORE
! Xft.xlft (string) // XFT_XLFD

Сглаживание остальных Xft шрифтов - через настройку файла ~/.fonts.conf

lazyklimm ★★★★★
()

Но почему емакс. Почему ты не хочешь использовать еклипс/кутэ-креатор/что там ещё..

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

Вот основные преимущества, лично для меня:
1)Если надо что-то открыть для быстрого просмотра/копирования — просто делишь окно на 2(или больше) мини-буфферов, открываешь нужный файл, смотришь(keys: C-x 3 C-x C-f filename).
А в IDE — это диалог открытия файла, клацать директории, выбор файла и [OK]. Это долго.

2) Удобный доступ к списку буфферов(файлов) в любое время в текущем окне(C-x C-b). не висит оно где-нибудь в панельке, место не занимает. Точно также вызывается shell или что-либо другое.

3) Не надо стрелочек клавиатуры, навигация клавишами C-n C-p C-f C-b(быстрее, не надо отрывать правую руку от центральных клавиш), правда я меняю местами Ctrl и Caps-lock, т.к. к оному легче тянуть палец.

4)При работе с кодом на удалённом сервере просто незаменим. Абсолютно всё работает точно также в терминале (кроме отображения рисунков каких-то).

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

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

кутэ-креатор как то больше всё таки под qmake/cmake заточен; а эклипс всё таки тормозит, даже после загрузки; да и убогий же текстовый редактор там (кт)

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

В виме мне не нравятся режимы, поэтому для меня не вим.

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

А что есть нормальные средства?

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

Вообще отлично, практически то, что нужно.

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

cedet мне показался каким-то громоздким и запутанным.

п.с. расскжи как ты удобно будешь работать с GDB, когда получится =)

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

Возможно имелся ввиду find-grep-dired. Использую постоянно.

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

а grep это M-x grep? смысл?

нет, это grep по всему дереву сырцов ;)

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

gtags + emacs abbreviations + grep

Большее для C не нужно

Для Си не нужно больше, чем ed. Доказано UNIX.

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

Недавно прошел «обучение» с помощью vim-tutor. Мне понравились клавиши навигации больше, чем в emacs. 'j', 'k', 'l', ';' — вообще самое оно, ибо не надо зажимать клавишу-модификатор, от чего часто левая рука устает.
Но вот работа с множеством файлов совчем неудобная. Решение есть: буду писать VIM edit-mode для Emacs :-)

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

так есть же, или он чем то не нравится?))))

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

Недавно прошел «обучение» с помощью vim-tutor. Мне понравились клавиши навигации больше, чем в emacs. 'j', 'k', 'l', ';' — вообще самое оно, ибо не надо зажимать клавишу-модификатор, от чего часто левая рука устает.

Но вот работа с множеством файлов совчем неудобная. Решение есть: буду писать VIM edit-mode для Emacs :-)


Неужели Emacs совсем не позволяет сделать custom bindings для navigation keys?

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

Там есть разные режимы: режим редактирования, режим навигации по тексту, режим поиска.
Войти в режим редактирования: нажать i(вставка), либо a(дописать) и там ещё много других команд.
Чтобы выйти в режим навигации из редактирования — жать кнопку Escape, например.
Пройди туториал, интереса ради. Vim, кстати, есть во всех дистрибутивах по умолчанию, иногда полезно знать.

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

Очень советую ergo-emacs, на который указал тов. adzeitor. За один день уже освоил.
Правда надо вычитать всё внимательно, наример, я долго не мог понять куда делся C-x C-f, он там обозначен как C-o.

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