emacs에서 C++ 사용하기 2편 사용편의 설정

2015. 1. 20. 21:30

사용편의를 위해서 괄호 자동완성과 compile-command 자동화를 해 보겠습니다. 먼저
https://github.com/capitaomorte/autopair/blob/master/autopair.el
에 방문하여 autopair.el파일을 site-lisp디렉토리에 저장합니다.


또 앞서 올린 emacs 기본 설정에서 해준 것처럼 .emacs에 다음과 같은 코드를 추가하여 f3으로 컴파일을, f4로 디버거를 실행할 수 있도록 해줍니다.

;;#useful shortcut setting
(global-set-key [f3] 'compile)
(global-set-key [f4] 'gdb)


하지만 기본 컴파일 커맨드는  'make -k'이므로, 원하는 형태로 프롬프트되도록 .emacs파일에 다음과 같은 내용도 추가해줍니다. 더불어 매크로로 자동으로 autopair.el을 로드하도록 지정해줍니다. 매크로로 지정하는 이유는 c-mode와 c++-mode에 일괄적으로 적용하기 위함입니다.


;;c/cpp settings
(require 'autopair)
(mapc (lambda (mode)
	(let ((hook (intern (concat (symbol-name mode)
				    "-mode-hook"))))
	  (add-hook hook (lambda () (autopair-mode +1)))
	  (add-hook hook
		    (lambda ()
		      (set (make-local-variable 'compile-command)
			   (let ((file (file-name-nondirectory buffer-file-name)))
			     (format "%s %s -o %s -g"
				     "g++"
				     file
				     (file-name-sans-extension file))))))))
      '(c c++))


이제 괄호도 자동완성되고, f3과 엔터를 누르면 해당 소스파일의 위치 폴더에 해당소스파일 이름.exe로 컴파일되고 f4를 누르면 바로 gdb실행이 가능합니다. c는 c++의 하위호환이고, c++을 주로 공부할 것이므로 g++로 컴파일하도록 정해두었지만 gcc로 컴파일하고싶으시면 g++을 gcc로 고치시면 됩니다.


기존에 emacs관련하여 올린 auto-complete 등도 함께 설정하여 이제 emacs에서 c++을 열심히 공부하기만 하면 됩니다.


p.s. 저는 google style guide대로 tap-size 2로 작성할 것이므로 상관없지만(emacs기본설정), linux-style등의 8 tab 혹은 4 tab이 좋으신분들은 'c-basic-offset'과 'c-default-style' 변수를 구글링해보시면 됩니다.

emacs/for C++