2011년 5월 23일 월요일

[Emacs] js2-mode

옛날에 Emacs에서 JavaScript 편집을 위해 espresso-mode가 있었다. 그게 Emacs 23.2에서 js-mode라는 이름으로 바뀌어서 Emacs안으로 들어가게 되었다. 그냥 역사 이야기.

js2-mode 라는 모드는 js-mode 에 비해 여러가지 기능이 추가된 모드다. 예를 들자면 내장 파서를 이용해 문법(syntax) 오류 등을 미리 확인해 주는 등등...

node.js 코딩 하기에 좋을 것 같아서 한번 설치해서 사용해 봤다.

설치


설치는 subversion 을 통해 그냥 저장소의 버전을 받아서 설치한다.
svn checkout http://js2-mode.googlecode.com/svn/trunk/ js2-mode-read-only
cd js2-mode-read-only
make
cp build/js2-mode.el* ~/.emacs.d/vendor/
마지막 줄의 복사 장소는 자신이 사용하는 곳을 적당히 적으면 된다.

그런데, make 과정에서 emacs22나 emacs23이 없다는 식의 에러메시지가 나올 수 있다. 그냥 이름 오류이므로 Makefile 을 열어서 다음 부분을 적당히 자신의 emacs 실행 바이너리 이름으로 교체해주자. 별 다른 이유가 없다면 그냥 emacs로 설정하면 된다.
EMACS22=emacs
EMACS23=emacs

혹시나 Mac OS X 등에서 Emacs.app을 사용 중이라면 emacs라는 바이너리를 찾지 못 해서 make 시 별도의 설정이 더 필요하다. ~/.bashrc 파일을 열어서 다음 줄을 추가하자.
alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs'
그리고 source ~/.bashrc 를 터미널에서 실행해서 적용 시킨 후 make 하면 아마도 되리라.

그런데 사실 이렇게 귀찮게 make 할 필요는 없다. 받아온 파일의 js2-mode.el 파일만 적당히 이동시켜서 사적절히 byte-compile 하거나 그냥 사용하면 된다. (- _ -)

현재 개발중인 Emacs에 포함된 것으로 알려져 있다. 다음 번 Emacs 릴리즈 때는 굳이 설치하지 않아도 될 듯 하다.

설정


다음 두 줄을 설정했다.
(autoload 'js2-mode "js2-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode))
.js 파일을 열면 자동으로 js2-mode 가 기동된다. 필요하다면 확장자를 추가할 수도 있다.

사용


오류 상황을 한번 테스트 해 봤다. 스크린샷 예를 보이자면
이 처럼 오류가 있는 부분에 특정한 방법으로 오류 색상이 표시된다. 내 경우 붉은색(갈색?) 밑줄로 표시되고 있는데 색상 테마(color-theme)에 따라 달라질 수도 있다.

하단 미니 버퍼에는 오류 내용을 알려주고 있다. 끝에 세미콜론(;) 빼 먹었다는 이야기.

여담


역시나 js-mode와 비슷하게 들여쓰기가 좀 아쉬운 부분이 있다. 예를 들어
var a = 1,
b = 2;
위 코드가 다음처럼 들여쓰기가 되면 좋겠다.
var a = 1,
    b = 2;
아마도 누군가 이미 추가 확장을 만들었거나 했을지도 모르겠으니 좀 더 찾아봐야겠다.

댓글 없음 :