[Emacs] js3-mode

js2-mode에서 fork된 프로젝트 중 하나로 역시나 JavaScript IDE를 위한 메이저모드이다.

https://github.com/thomblake/js3-mode

아래는 ~/.emacs.d/vendor/js3-mode 디렉토리에 js3-mode가 설치되었다는 가정 하에 설정한 내용이다.
(add-to-list 'load-path "~/.emacs.d/vendor/js3-mode")
(autoload 'js3-mode "js3" nil t)
(add-to-list 'auto-mode-alist '("\\.js$" . js3-mode))

(setq js3-lazy-commas t)
(setq js3-lazy-operators t)
(setq js3-lazy-dots t)
(setq js3-expr-indent-offset 2)
(setq js3-paren-indent-offset 2)
(setq js3-square-indent-offset 2)
(setq js3-curly-indent-offset 2)
(setq js3-auto-indent-p t)
(setq js3-enter-indents-newline t)
(setq js3-indent-on-enter-key t)
js2-mode에 몇 가지 들여쓰기(indentation) 기능이 추가된 것 같다. 가장 눈에 띄는 변화점은 comma-first indentation, 즉 콤마로 시작되는 들여쓰기 변경에 있다. js3-lazy-commas 가 바로 그 설정이다. comma-first indentation의 예는 아래와 같은 식이다.
var a = 1
  , b = 2
  , c = 3;
자바스크립트의 경우 IE 덕분에(?) 콤마를 앞쪽에 적는 경우가 많아서 이 경우 도움이 되는 모드이다. IE 에서는 콤마 갯수가 쓸 데 없이 넘치면(?) 오류가 발생하는 문제가 있다 보니 습관화 되는 경향이 있는 것 같다.

자체 파싱 및 에러 체크 기능도 여전히 동작한다. 기본적으로 코딩이 시작된 이후 0.5초 간 입력이 없으면 파싱에 들어가게 되는데 느린 컴퓨터라면 답답할지도 모르겠다. 아마도 js3-idle-timer-delay 라는 변수가 지원될 것 같지만... 0.5초 동안도 쉬지 않고 코딩하겠다는 마인드를 가지는게 더 좋을지도 모르겠다. (즉, 코딩하기 전에 코딩이 끊기지 않을 정도로 미리 머릿속에서 코드를 생각하라는 의미)

댓글

이 블로그의 인기 게시물

버전(Version)을 제대로 이해하기

소수점 제거 함수 삼총사 ceil(), floor(), round()