2012년 3월 31일 토요일

js3-mode와 auto-complete

최근 Emacs를 다시 사용하기 시작하면서 js3-mode 혹은 js2-mode를 사용 할 때 auto-complete가 동작하지 않는다는 것을 알게 되었다. 어떻게 보면 굉장히 치명적인 문제다.

문제는 auto-complete가 동작하지 않는게 아니라 js3-mode에서 auto-complete-mode가 활성화 되지 않는 것이다. 모드 라인에 'AC'라는 마크가 보이지 않는다면 활성화가 되지 않은 것이다.

따라서 자동으로 활성화 하려면 auto-complete를 수정해야 할 것이다. 수정을 원한다면 이 포스트 마지막의 참고 링크를 따라가면 어디를 수정해야 하는지 알 수 있다. 하지만 auto-complete 자체를 수정해 버리면 업데이트 때 귀찮은 일이 발생 할 수 있다.

다행히도 일부 변수를 수정하는 것으로 해결 할 수 있다. 아래 코드를 하나 삽입한다.
(setq ac-modes (append ac-modes (list 'js2-mode 'js3-mode)))
js2-mode도 적용되도록 했는데 js2-mode를 안 쓴다면 js3-mode만 넣어도 된다. 이 사항을 적용(M-x eval-buffer 등)한 후 자바스크립트 파일을 열면 js3-mode가 기동되면서 모드라인에 'AC'가 표시되는 것을 확인 할 수 있다. 문제가 고쳐진 것이다.

다만 아직 완벽하지 않은 점이 있는데, auto-complete에 기본적으로 포함되어 있는 자바스크립트 사전을 제대로 참조하지 않는다. 그냥 코드 상의 심볼 자동완성 정도로 밖에 사용이 안된다는 것이다. 이 문제는 해결하는 대로 포스팅 할 계획이다.

참고: https://github.com/thomblake/js3-mode/issues/46

댓글 없음 :