2012년 9월 5일 수요일

Emacs 24의 새로운 기능: theme

예전부터 Emacs에서 색상 문법 강조(Syntax Highlighting)을 위해서 color-theme 라는 확장을 주로 이용해 왔었다. 어떻게 보면 Emacs에서 가장 필수적인(?) 확장이 아니었을까 생각된다.

Emacs 24부터는 이런 color-theme 기능을 흡수하여 theme라는 기능으로 아예 built-in이 되어버렸다. 더이상은 color-theme를 사용할 이유가 없어진 것이다. (하지만 API가 흡수된 것이 아니라 기능이 흡수되었기 때문에 호환되지 않는다는 점을 주의하자)

공식 Emacs 홈페이지에서 이 theme를 만들기 위한 방법 역시 설명되어 있다. 하지만, 개인적으로 Emacs 공식 홈페이지는 너무 읽기 어렵다! ㅠㅠ 그래서 찾아보니 아래 사이트의 설명이 간략하고 이해가 잘 되는 것 같았다.

http://batsov.com/articles/2012/02/19/color-theming-in-emacs-reloaded/

그렇다고 굳이 위 사이트의 내용을 볼 필요가 있을까 생각이 들기도 한다. 테마를 만드는 사람은 거의 한정되어 있고 만드려면 굉장히 많은 지식(?)이 필요하다 보니 그냥 남이 만들어 놓은 것을 가져다 쓰는 사람들이 대부분일 것이다.

Emacs 24.2에서는 이런 테마 관련 기능이 더욱 확장되었다. 릴리즈 노트에도 쓰여져 있지만 customize-themes 라는 기능이 제공된다. 하지만 귀찮아서 이것도 별로 쓸 일이 없을 것 같다. -_-;;;;

하여간 특정 테마를 로드하기 위해서는 다음과 같은 코드가 필요하다.
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
(load-theme 'theme-name t)
그런데 이 코드를 쓸 일도 있을까 없을까 궁금하기도 하다. 그냥 require만 해도 되는 경우도 있기 때문이다.

개인적으론 Tomorrow 컬러 테마를 사용하고 있다. github 저장소의 GNU Emacs 디렉토리를 보면 몇 개의 파일이 있는데, 이 중 color-theme-로 시작하는 이름의 파일을 제외하고 나머지는 Emacs 24 테마를 이용하는 파일이다. 이 파일을 그냥 require만 하면 테마가 적용된다.

아래는 개인적으로 사용하고 있는 세팅이다.
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
(add-to-list 'load-path "~/.emacs.d/themes")
(require 'tomorrow-night-bright-theme)
위 내용은 https://github.com/seorenn/dotemacs/blob/master/renn-theme.el 의 일부 내용이다. 이 세 줄, 아니 정확히 필요한 건 두 줄 뿐이지만 어쨌든 Tomorrow night bright 테마가 적용된다.
흡수되는게 좋은 것일 수도 있다. 신경써야 하는 부분이 줄어드는 것이기 때문이다. 간혹 별도의 오픈소스로 개발되던 프로젝트가 다른 프로젝트로 흡수가 되었을 때 발전이 더디어지는 경우를 종종 봐왔기 때문에 과연 Emacs 24의 테마 기능은 이대로 잘 진행될지 걱정되기도 한다.

여전히 color-theme는 별도의 프로젝트로 진행되고 있으니 잘 사용하고 있다면 굳이 Emacs 24의 테마기능을 이용할 필요는 없으리라 생각된다.

댓글 없음 :