Doom Emacs 설정 관련 팁

2021년 7월 28일 수정

설정 파일 위치

기본적으로 ~/.doom.d 디렉터리를 개인 설정 파일 위치로 이용할 수 있다. install 커맨드로 설치할 때 자동으로 보일러플레이트 코드들이 여기에 준비된다.

설정 파일 쉽게 열기

SPC f p 를 누르면 개인 설정 파일 목록이 뜨기 때문에 쉽게 열 수 있다.

설정 파일 용도

  • init.el 은 둠의 핵심인 모듈 설정이 들어간다. 원하는 모듈을 목록에 추가하면 sync 시 자동으로 설치된다.
  • config.el 은 일반적인 설정 코드를 넣을 수 있다.
  • packages.el 은 추가로 필요한 패키지나 혹은 필요 없는 패키지들을 나열할 수 있다. 해당 패키지는 sync 시 설치되거나 삭제된다.

설정을 고친 후

Doom Emacs는 설정 후 동기화가 성능 이슈로 자동화가 지원되지 않는다. 따라서 설정, 특히 패키지를 추가하거나 제거하는 등의 설정을 한 이후에는 반드시 sync 커맨드를 실행키셔 주어야 한다.

~/.emacs.d/bin/doom sync

참고로 sync는 과거에는 refresh와 purge라는 이름으로 양분되어 있던 커맨드가 합쳐지면서 새롭게 만들어진 커맨드다.

만약 삭제하려는 패키지가 제대로 삭제가 안 되는 경우는 -p (purge) 옵션을 추가해서 시도해보자.

~/.emacs.d/bin/doom sync -p

폰트 설정

폰트나 텍스트 크기는 config.el 에 아래와 같은 식으로 설정할 수 있다.

(setq doom-font (font-spec :family "Menlo" :size 14))

이 설정은 고정폭 폰트에만 유효하다.

줄 간격 설정

줄 간격(line spacing 혹은 line height) 설정은 아래와 같은 식의 코드를 config.el 에 넣으면 설정할 수 있다.

(setq-default line-spacing 2)

이 설정은 Emacs 기본 설정이라 굳이 Doom Emacs 설정에 넣을 필요는 없었던 것 같지만 일단 썼으니 그냥 남겨둔다.

창 초기 위치 및 크기 설정

아래 예제는 위에서 120픽셀, 좌측에서 50픽셀 떨어진 곳에 80x24 크기로 Emacs 창을 배치 시키는 코드다.

(when window-system
  (setq initial-frame-alist
        '((top . 120)
          (left . 50)
          (width . 80)
          (height . 24))))

이 코드도 적당히 config.el 에 넣으면 된다.

참고로 top, left 값은 픽셀인 반면, width와 height 값은 문자 개수로 표현한다. 즉 width 80 height 24 값은 가로 80행 세로 24열의 의미다.

배경 색이 버퍼마다 다른 경우

Doom Emacs에 포함된 solaire-mode 는 배경 색을 임의로 변경하는 확장이다. 이걸 비활성화 하면 배경 색이 바뀌는 문제는 해결된다.

packages.el 파일을 열어서 아래 한 줄을 넣어주자.

(package! solaire-mode :disable t)

수정 후에는 ~/.emacs.d/bin/doom sync 커맨드를 잊지 말자.

이모티콘 입력기

이모티콘(emoji) 입력은 emojify 라는 확장으로 해결할 수 있다. packages.el 에 아래 내용을 넣고 sync 하면 쉽게 설치할 수 있다.

(package! emojify)

특정 문자가 자동으로 이모티콘으로 표시되게 하고 싶다면 아래 코드를 config.el 에 넣어주자.

(add-hook! 'after-init-hook #'global-emojify-mode)

위 코드는 옵션이고 유니코드 기반 이모티콘만 사용 할거라면 없어도 된다.

sync가 완료된 후 Emacs를 재시작하고 SPC : 를 눌러 emojify-insert-emoji 함수를 찾아서 실행시키면 이모티콘 입력기가 뜬다.

프로젝트 추가하기

Git 저장소 등 몇몇 디렉터리는 방문 시 자동으로 Projectile로 프로젝트 디렉터리로 인식되고 자동으로 등록된다. 하지만 이런 특수한 디렉토리 말고 일반 디렉터리의 경우는 프로젝트로 인식되지 않는다.

이런 일반 디렉터리도 프로젝트로 등록해 줄 수 있다. 아래와 같은 코드를 config.el 에 넣어보자.

(projectile-add-known-project "~/boo/bar/project")

물론 개수는 상관 없다. 원하는 만큼 등록할 수 있다.

컬러 테마 커스터마이징

컬러 테마를 커스터마이징 하기 위해서 doom-themes-set-faces 함수가 준비되어 있다.

(doom-themes-set-faces nil
  '(foo-face :foreground #123456)
  '(bar-face :background nil))

첫 매개변수 nil 은 테마 이름인데 nil 로 설정할 경우 모든 테마에 적용된다.

페이스(색상이나 폰트 등의 정보)를 찾을 때는 커서를 원하는 위치에 놓고 SPC h F 를 눌러보면 쉽게 알 수 있다.

visual-line-mode와 커서 이동

visual-line-mode 가 켜졌을 때 커서 키를 위 혹은 아래로 이동시키는 경우 visual wrap된 라인을 그대로 통과해버리고 만다. 즉 물리적으로 다음 혹은 이전 라인으로 커서를 이동시키기 때문에 가상으로 줄바꿈된 것을 인지하지 못 하도 통과해 버리는 것이다.

이 경우 아래 코드를 ~/.doom.d/init.el 최상단에 넣어놓자.

(setq evil-respect-visual-line-mode t)

왜 하필 config.el 도 아니고 init.l 의 최상단이냐 하면, 관련된 모든 설정이 로드되기 전에 정의되어 있어야만 효과가 나타나기 때문이다.