GNU EmacsGNU Emacs для начинающих Си программистов

По своему опыту знаю, что при изучения какого-либо языка программирования, вторым шагом, после нахождения учебника по желаемому языку программирования, начинающий программист ищет необходимый редактор, компилятор и т.д. для написания исходных текстов и компилирования их в готовую программу. В этой небольшой, вводной статье рассказать о том как можно сделать из GNU/Emacs простую IDE, пока для простых Си программ.

Бытует мнение что GNU/Emacs слишком громоздкая и сложная программа, которая не под силу новичкам. Я попытаюсь разубедить вас в этом. Для того что бы использовать GNU/Emacs в роли редактора для написания и компилирования Си программ, нам понадобится запомнить всего лишь несколько команд и написать небольшой конфигурационный файл.

Для начала заполним наш файл. Файл конфигурация GNU/Emacs располагается в вашей домашней папке и называется .emacs Если данного файла нет, то попросту создайте его.

Теперь приступим к заполнению нашего файла:

;; Для начала привяжем несколько горячих клавиш

;; Предыдущая ошибка - F11
(global-set-key [f11] 'next-error)

;; Следущая ошибка - F12
(global-set-key [f10] 'previous-error)

;; Компиляция - F9
(global-set-key [(f9)] 'compile)

;; Переход на строчку - Alt-g номер строки перехода
(global-set-key "\M-g" 'goto-line)


;; Затем непосредственно для работы с Си
;; Подключаем режим cc-mode с подсветкой для Си
(require 'cc-mode)

(global-font-lock-mode 1)

;; Устанавливаем ширину табуляции 
;; переносы строк
(setq tab-width 4)
(define-key c-mode-map "\C-m" 'reindent-then-newline-and-indent)
(define-key c-mode-map "\C-ce" 'c-comment-edit)
(setq c-auto-hungry-initial-state 'none)
(setq c-delete-function 'backward-delete-char)
(setq c-tab-always-indent t)

;; compilation-window-height
(setq compilation-window-height 8)

;;
;; Функция скрывания буфера компиляции 
;;если все произошло без ошибок
;;
(setq compilation-finish-function
      (lambda (buf str)
        (if (string-match "exited abnormally" str)
            ;;there were errors
            (message "compilation errors, press C-x ` to visit")
          ;;no errors, make the compilation window go away in 0.5 seconds
          (run-at-time 0.5 nil 'delete-windows-on buf)
          (message "NO COMPILATION ERRORS!"))))

(add-hook 'c-mode-hook        
	  '(lambda ( ) 
	     (c-set-style "k&r")))

;; Автоопределение подсветки
(defvar font-lock-auto-mode-list 
        (list 'c-mode 'c++-mode 'c++-c-mode 'emacs-lisp-mode 'lisp-mode 'perl-mode 'scheme-mode)
         "List of modes to always start in font-lock-mode")


После добавления, сохраните конфигурационный файл. И можно приступать непосредственно к программированию на Си.

Откройте GNU/Emacs. Затем наберите: Ctrl+x Ctrl+f и введите имя файла, в котором будет наш код, например test.c. После чего откроется новое с именем только что созданного нами файла. Наберем исходный текст программы. Выглядит это примерно так:



После чего нажимаем f9 для компиляции, набираем gcc test.c, после чего появляется новое окно compilations с выводом результатов нашей компиляции, если будут ошибки в тексте программы то там они все отобразятся. Если программа собрана верно, без ошибок, можем запустить ее на исполнение.

Вот вкратце и описал как сделать из GNU/Emacs простую ide для начинающих Си программистов. В следующих статьях будем разбираться как сделать из GNU/Emacs полноценную IDE.
  • +6
  • sterh
  • 01 июля 2010, 13:06

Комментарии (4)

у меня не включается cc-mode, всегда пользовался c-mode или c++-mode
хм файл cc-mode сам загружается по необходимости, его не надо явно объявлять.
а это вообще для какой версии emacs написано?
;; Переход на строчку — Alt-g номер строки перехода
(global-set-key "\M-g" 'goto-line)
в версии 23 уже есть M-g M-g для перехода на строчку
подсветка синтаксиса вроде всегда работала зачем ее отдельно включать или font-lock-mode что то другое делает?
за compile спасибо! теперь буду пользоваться, действительно полезно
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.