.emacs

OSX 2010. 6. 10. 16:21

   윈도우용 Emacs 설정

이 문서는 윈도우용 Emacs의 설정에 관한 내용을 요약 한 것이다.


고친 과정
최초 작성 2007-04-30 작성자 kei

1. 설정 기본

emacs의 설정 파일은 .emacs 이고 계정 루트에 있다.

(XP - C:\Documents and Settings\사용자명\Application Data)

EmacsW32 설치시 위의 디렉터리에 .emacs.d 디렉터리 추가됨

설정파일 안에서 세미콜론(;)은 주석 표시이다.


2. 실행시 창 크기/위치 설정

; 창 사이즈
; emacs -g 80x40 or
(set-frame-width (selected-frame) 90)
(set-frame-height (selected-frame) 50)

; 창 생성 위치
(set-frame-position (selected-frame) 10 10)


3. 들여쓰기

;C 들여쓰기 기본 스타일 설정
(setq c-default-style "k&r")
; (setq c-default-style "cc-mode")
; (setq c-default-style "gnu")
; (setq c-default-style "bsd")
; (setq c-default-style "stroustrup")
; (setq c-default-style "whitesmith")

; 엔터 입력시 자동 들여쓰기 다른 방법
(load "cc-mode")
(define-key c++-mode-map "\r" 'reindent-then-newline-and-indent)
(define-key c-mode-map "\r" 'reindent-then-newline-and-indent)
(define-key java-mode-map "\r" 'reindent-then-newline-and-indent)

; 엔터 입력시 자동 들여쓰기 다른 방법
;(require 'cc-mode)
;(define-key c-mode-base-map (kbd "RET") 'newline-and-indent)

; { , ; 입력시 자동 줄 추가
;(add-hook 'c-mode-common-hook '(lambda () (c-toggle-auto-state 1)))


4. 탭 설정

;emacs tab 설정
(setq c-basic-offset 4
tab-width 4
indent-tabs-mode t)
;(add-hook 'c-mode-common-hook '(lambda () (c-toggle-auto-state 1)))

; 탭 대신 공백 넣기
(setq-default indent-tabs-mode nil)

; c-toggle-auto-state 기능에 backspace입력시 모든 공백(줄 바꿈 포함) 삭제
;(add-hook 'c-mode-common-hook '(lambda () (c-toggle-auto-hungry-state 1)))


5. 키 설정

GOTO LINE 키 설정

22버전은 M-g M-g 혹은 M-g g 로 설정되어 있음

; 라인 바로가기
(global-set-key "\M-g" 'goto-line)


6. 단어 자동완성

단어 자동 완성

M-x dynamic-completion-mode

;최근 사용된 word list를 가지고, 자동 완성구현, 3글자 이후에M-RET
(dynamic-completion-mode)


※ 참고
dynamic-completion-mode
http://kltp.kldp.org/stories.php?story=03/11/16/1067964&topic=26


7. vim o 키 흉내내기

; vim o 키 흉내내기 ; 함수 선언 후 키 맵핑
(defun my-insert-line ()
"Insert blank line below the cursor."
(interactive)
(end-of-line)
(newline-and-indent))
(global-set-key "\M-o" 'my-insert-line);M-o 는 원래 face바꾸기 임


8. HideShow모드 설정(Folding모드)

모드 활성화 시키기(.emacs에 추가)
;; hideshow for programming
(load-library "hideshow")
(add-hook 'c-mode-hook 'hs-minor-mode)
(add-hook 'c++-mode-hook 'hs-minor-mode)
(add-hook 'emacs-lisp-mode-hook 'hs-minor-mode)
;(add-hook 'java-mode-hook 'hs-minor-mode)
;(add-hook 'perl-mode-hook 'hs-minor-mode)

; hide상태에서 goto-line했을 때 자동으로 show로 변경
(defadvice goto-line (after expand-after-goto-line
activate compile)
"hideshow-expand affected block when using goto-line in a collapsed buffer"
(save-excursion
(hs-show-block)))
기본 키
For Emacs 20:
* C-c S show all
* C-c H hide all
* C-c s show block
* C-c h hide block

For Emacs 21(이후버전):
* C-c @ ESC C-s show all
* C-c @ ESC C-h hide all
* C-c @ C-s show block
* C-c @ C-h hide block
* C-c @ C-c toggle hide/show
키 복잡하니까
'hs-hide-all
'hs-hide-block
'hs-show-all
'hs-show-block
맵 핑해서 쓸 것.
ex.>
(global-set-key (kbd "ESC <f5>") 'hs-toggle-hiding)
(global-set-key (kbd "ESC <f6>") 'hs-show-all)
(global-set-key (kbd "ESC <f7>") 'hs-hide-all)

※ 참고
http://www.emacswiki.org/cgi-bin/wiki/HideShow


9. cscope 설정

Cscope on Win32
http://iamphet.nm.ru/cscope/
윈도우즈용으로 컴파일 된 cscope-16.0a-win32.7static.zip 다운
전역에서 쓸 수 있도록 PATH 처리된 디렉터리에 압축 해제(emacs설치 디렉터리/emacs/bin/)
혹은 아무 폴더에 압축해제후 시스템 환경변수의 PATH에 경로추가

http://cscope.sourceforge.net/
에서 최신버전 다운
(압축 폴더 안의 contrib\xcscope\xcscope.el 사용하기 위해)

emacs 설치 디렉터리/emacs/site-lisp/에 xcscope.el 복사

.emacs에 다음 줄 추가
(require 'xcscope)


윈도우용 find유틸 설치
GNU Win32
http://gnuwin32.sourceforge.net/
에서 find 다운
설치 후 시스템 환경변수 PATH에 경로 추가
Windows\system32 \find.exe와 겹치므로 GNU Win32 find.exe의 이름을 바꿔서 쓰거나
시스템 변수의 PATH 맨 앞에 추가 할 것
예> C:\Program Files\GnuWin32\bin;%SystemRoot%\system32;……

※ 참고
KLDP Wiki - Emacs Gdb Etags Cscope
http://wiki.kldp.org/wiki.php/EmacsGdbEtagsCscope


10. 라인넘버 표시하기

http://www.wonderworks.com/download/setnu.el.gz 다운.
emacs설치디렉터리/lisp/ 에 압축해제

.emacs(사용자 설정파일) 추가 아래 내용.

(load-library "setnu.el")
(add-hook 'c-mode-hook 'turn-on-setnu-mode)
(add-hook 'text-mode-hook 'turn-on-setnu-mode)
(add-hook 'c++-mode-hook 'turn-on-setnu-mode)

기타 필요한 모드 위의 방식(add-hook 'MODE.....)으로 추가

setnu-mode on/off 토글키
M-x setnu-mode RET

※ 참고
Emacs에서 vi 스타일(: set nu)의 줄 번호
http://kltp.kldp.org/stories.php?story=00/07/01/9629703&topic=26


11. Visual Studio에 emacs 등록하기

External Tools
Title : 이름
Command : C:\Program Files\Emacs\emacs\bin\runemacs.exe
(이맥스 실행파일 경로)

Arguments : +$(CurLine) $(ItemFileName)$(ItemExt)

Initial directory : $(ItemDir)


12. ECB / CEDET(미완성)

ECB
http://ecb.sourceforge.net/
CEDIT
http://cedet.sourceforge.net/



13. 상용구 설정

.abbrev_defs 파일 안에서 설정(.emacs 에서 해도 됨)

("준말" "본말" nil 0) 형태로 삽입. 준말에 특정 기호(@같은···) 및 한글은 안됨.

ex.)
(define-abbrev-table 'c++-mode-abbrev-table '(
("$l1"
"////////////////////////////////////////////////////////////////////////////////"
nil 0)
("$l2"
"//********************************************************************************"
nil 0)
("$h"
"// title :
// Author : "
nil 0)
))


14. ...

;emacs 외부에서 파일 변경시 현재 버퍼 자동으로 다시 읽게 하기
.emacs에 다음 내용 추가
(global-auto-revert-mode 1)

무 슨 말?
예를들어, test.txt 라는 파일을 emacs에서도 열고 메모장(notepad)에서도 열었다.
그런데 메모장에서 test.txt를 수정한 후 저장하면 emacs에서 자동으로 test.txt를 다시 읽는다.

그 외...
일회용으로 적용할려면
M-x auto-revert-mode RET

수동으로 버퍼 갱신할려면
M-x revert-buffer RET
참고 emacs 매뉴얼 항목 14.4 Reverting a Buffer
그외 참고해서 추가 할것...
14.5.1 Auto-Save Files
14.5.2 Controlling Auto-Saving
14.5.3 Recovering Data from Auto-Saves


※ 참고 사이트

emacs wiki
http://www.emacswiki.org/cgi-bin/wiki


EmacsKR
http://emacs.kldp.org/wiki/doku.php

kldp.org - 검색

http://kldp.org


kldp wiki - 검색

http://wiki.kldp.org/wiki.php

: