다음 이전 차례

4. 커스터마이징 이멕스

사실 모든 이멕스 커스터마이징은 Lisp코드를 통해 이루어진다. 이멕스를 수행하는데 필요한 변수를 바꿀 수 있으며 새로운 함수를 더하거나 기존에 있는 함수를 대체할 수도 있다.

4.1 일시적 커스터마이즈

이멕스를 커스터마이징할 때 여러분들이 이러한 것들을 일단 임시로 실행해 보길 원할 것이다. 만약 여러분들이 엄청 이상한 것을 했다면 단순히 C-x C-c입력해 이멕스를 닫은 다음 다시 실행하면 된다. 여러분이 수정한 내용이 지속적으로 유지되기 위해서는 그러한 내용을 여러분의 .emacs에 넣어서 이멕스가 실행될 때마다 읽히도록 하면 될 것이다. 이것은 다음 섹션에서 다루겠다.

변수에 대입

가장 쉽게 수정하는 방법은 이멕스 변수의 값을 바꾸는 방법이다. 이렇게 하는 코드는 다음과 같다.

(setq variable-name new-value)

(setq variable-name new-value)

variable-name는 변수의 이름이고 new-value는 여러분이 변수에 지정할 값이다. (Lisp에서 얘기를 할 때에는 변수에 값을 바인딩 했다고 한다.) lisp에서 setq 함수는 다른 프로그램에서 대입연산자(일반적으로 =)이다.

주의: 나는 여기서 간단히 얘기하기 위해서 자세한 내용은 대강 얼버무렸다. 아마도 여러분들은 나나 다른 사람들이 Lisp함수 set이나 심지어 setq-default를 사용하는 것을 보게 될 것이다. 여러분이 이 부분에 대해 많은 관심이 없다면 단지 그러한 것들은 이멕스의 Lisp과 관련된 것이라고 보면 된다.

자 이제 내 .emacs 파일의 한 줄을 보자.

(setq-default transient-mark-mode t)

transient-mark-mode은 문서의 일부분을 마크했을 때 그 부분이 강조될 것인가를 결정하는 변수이다. 많은 GUI 응용프로그램에서는 마우스를 이용해서 원하는 부분을 클릭 끌어 선택을 하면 화면과 반대색이나 다른 색으로 바꾸게 된다. 이멕스에서는 이러한 것을 transient-mark-mode를 설정하므로 할 수 있다.(nil이 아닌 값으로)

어떠한 값 ?

좋다. 간단히 얘기를 하자. 많은 프로그래밍 언어는 참값과 거짓값에 대한 기호를 가지고 있다. C/C++에서는 0이 아닌 값이 참값이다. Perl에서는 0이 아니거나 비어있는 값이 아니면 참이다. Lisp에서도 비슷한 것을 사용하는데 이름과 기호가 다르다.

참값은 t라고 하고 거짓은 nil이라고 한다. 다른 언어들과 동일하게 nil이 아닌 어떠한 값도 참이다.

transient-mark-mode에 대한 자세한 정보를 얻기 위해서는 온라인 도움말을 사용할 수 있다. C-h vM-x describe-variable를 입력하고 난 후 transient-mark-mode를 입력해라. 여러분이 나처럼 게으른 사람이라면 Tab을 사용해 완성기능을 이용할 수도 있다. 간단히 변수이름만 입력하고 Tab을 입력하면 된다. 만약 여러분이 이멕스가 유일하게 알고 있는 단어를 입력하는 경우 여러분을 위해서 단어가 완성되어 있는 것을 보게 될 것이다.

다른 사람들이 자주 셋팅을 해 두는 변수는 fill-column이다. 이 변수는 워드 랩핑을 위해 사용하는 화면을 크기를 결정해준다. (auto-fill-mode는 이 값을 사용한다.) 좀 이상하게 해 보기 위해서 다음과 같이 해봐라.

(setq fill-column 20)

위의 명령어는 어떠한 값을 지정하는 것은 아니다. 그러므로 여러분이 입력한 표현의 결과를 이멕스가 계산하라고 할 필요가 있다. 이렇게 하기 위해서는 표현의 마지막으로 가서 C-x C-e를 입력하면 된다. 이 명령은 eval-last-sep이라는 함수를 불러 값을 계산하도록 할 수 있다. 그렇게 하면 20이라는 숫자가 화면의 밑에 있는 미니 버퍼에 나오는 것을 볼 수 있다. 이것은 단순히 여러분이 계산을 원하는 표현의 값을 표시해준다.

위의 명령어가 작동하는 것을 확인하기 위해 한두 줄의 문장을 입력해 봐라. auto-fill-mode를 작동하게 했다면 문서가 20번째 컬럼에서 잘려지는 것을 보게 될 것이다. 그렇지 않으면 이미 여러분이 어떠한 문장이 타이핑된 후라면 M-q를 쳐서 fill-paragraph함수를 불러서 워드랩핑을 해 볼 수도 있다.

파일 연결

여러분들은 어떠한 특정한 파일을 열었을 때 이멕스가 자동으로 뭔가를 하도록 설정할 수 있다. (어떤 GUI 프로그램들은 여러분이 특정 파일에 대한 아이콘을 클릭 했을 때 자동으로 프로그램이 실행된다.) 예를 들어 .txt 확장자를 가지는 파일을 열 때마다 이멕스가 자동으로 text-mode로 설정되어 있도록 하는 것이다. 음.. 그런데 이건 이미 되어 있다. :-) 그래서 이번에는 여러분들이 ``README'' 파일을 열때 이멕스가 text-mode가 되도록 해보자.

(setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist))

헉?

사실 별로 알고 싶어하지 않는 Lisp 프로그래밍에 대해 배우는 것보다 일단 auto-mode-alist는 여러 가지의 조합을 가지고 있다라고 하자. 각각의 조합은 정규 표현과 이멕스모드를 가지고 있다. 여러분이 여는 파일이 정규표현과 일치한다면 (이 경우에는 README라는 단어) 이멕스는 여러분이 정의한 모드를 실행할 것이다.

그런데 재미있는 것은 그러한 모드에 다른 또 하나의 조합을 설정할 수 있다는 것이다. 여러분은 auto-mode-alist가 이미 가지고 있는 값에 대해서 정확히 알기 전에는 그것에 대응시키지 않을 것이다.

이멕스가 .html이나 .htm의 확장자를 가지는 파일을 열 때 자동으로 html-helper-mode로 바뀌도록 하려면 .emacs에 다음과 같은 것을 추가해두면 된다.

(setq auto-mode-alist (cons '("\\.html$" . html-helper-mode) auto-mode-alist))
(setq auto-mode-alist (cons '("\\.htm$" . html-helper-mode) auto-mode-alist))

이러한 가능성은 사실 끝도 없다.

4.2 .emacs파일 이용하기

여러분들이 이멕스를 사용해보고 여러 가지 기본적인 커스터마이징에 대해 알고 난 후에는 아마도 계속적으로 이러한 커스터마이징을 사용하고 싶을 것이다. (맘이 안 바뀌면 계속 사용하겠죠.) 여러분이 계속적으로 이멕스를 사용하다가 보면 여러분의 .emacs 파일이 날로 증가되는 것을 알게 될 것이다. 이러한 현상은 아주 좋다. 왜냐면 여러분은 이멕스가 어떻게 작동을 하는지 그리고 어떻게 하면 여러분이 원하는 것을 할 수 있는지 알고 있다는 얘기가 되기 때문이다. 여러분들이 이렇게 하지 못하는 소프트웨어는 좀 부끄럽다는 것을 알아야 된다.

여러분이 이미 이것을 예상하지 못했는지 모르겠지만 매번 여러분이 이멕스를 실행할 때 여러분의 홈 디렉토리에서 .emacs라는 파일을 찾을 것이다. 여러분의 .emacs파일에는 자동으로 실행이 되길 원하는 Lisp 코드와 지금 여기서 다루고 있는 커스터마이징에 관련된 부분들이 들어 있다.

.emacs 파일에서 볼 수 있는 다른 예제:

(setq inhibit-startup-message t)

inhibit-startup-message 변수는 이멕스가 시작될 때 환영 메시지를 나타낼지를 결정한다. 한동안 난 이것을 찾느라 고생을 했으나 (왜냐면 난 어떻게 도움말을 찾는지는 알고 있었기 때문에) 곧 찾아서 이 기능을 꺼버렸다.

연습삼아 직접 여러분의 .emacs파일을 만들고 위의 줄을 추가해 봐라. 이멕스를 나가거나 들어갈 때 더 이상 환영메시지를 볼 수 없을 것이다.

이멕스 모드나 팩키지에 관한 글을 읽을 때 종종 그 문서에는 모드나 팩키지가 정확히 작동하기 위해 여러분의 .emacs 파일을 수정할 필요가 있다고 할 것이다.

GNU 이멕스 FAQ(C-h F)에는 .emacs파일과 관련된 여러 가지 유용한 아이템들이 있다.

4.3 커스터마이즈 팩키지

이멕스가 계속적으로 사용되어지고 발전해 나감에 따라 ``초보자들이 좀더 쉽게 수정할 수 있는 방법이 있어야만 한다''고 많은 사람들이 얘기를 해왔다. 그리고 커스터마이즈가 탄생했다.

커스터마이즈는 이멕스를 좀더 쉽게 자기 입맛에 맞게 고칠 수 있는 방법을 제공한다. 직접 한번 해보기 위해 Help메뉴의 부메뉴인 Customize를 보거나 M-x customize를 입력하면 된다.

커스터마이즈는 ``Editing'', ``Programming'', ``File''과 같은 세부 그룹으로 구분된다. 어떤 그룹은 세부그룹으로 구성되어 있다.

여러분이 커스터마이즈 환경을 이용해서 수정을 하는 경우 이멕스는 여러분의 .emacs 파일에 기록을 한다. 이 방법은 좀더 다루기 쉽다. 왜냐면 이렇게 하면 바꾼 것을 보던가 아님 다시 되돌리는 것을 좀더 쉽게 해 볼 수 있기 때문이다.

난 이런 커스터마이즈 환경으로 수정하지 않기 때문에 이것에 대해서는 더 이상 얘기를 하지 않겠다.

4.4 X윈도우 디스플레이

다른 X윈도우 응용프로그램과 같이 이멕스는 여러분의 X 리소스에 따라 결정이 된다. 이 말은 사용자가 초기 색, 크기나 다른 여러 X에 관련된 것들을 여러분이 마치 xterm이나 nxterm을 수정하듯이 조절할 수 있다.

여기에 관련된 나의 ~/.Xdefault파일이 있다.

emacs*Background: DarkSlateGray
emacs*Foreground: Wheat
emacs*pointerColor: Orchid
emacs*cursorColor: Orchid
emacs*bitmapIcon: on
emacs*font: fixed
emacs.geometry: 80x25

X 리소스에 대한 것은 여러분의 X 메뉴얼 페이지를 참고하기 바란다.

Chris Gray ( cgray4@po-box.mcgill.ca)는 다음과 같이 얘기한다.

데비안에서는 ~/.Xdefaults를 사용하지 않는다. 대신 데비안 사용자들은 /etc/X11/Xresources/emacs 파일에 관련된 사항을 넣어두면 RedHat를 사용하는 경우와 동일한 결과를 얻을 수 있다.


다음 이전 차례