이맥스 개종 가이드 5 - 혼자서 설정할 때 도움되는 정보

이맥스 개종 가이드 5 - 혼자서 설정할 때 도움되는 정보

이맥스 설정을 하면서 걲었던 일을 팁으로 정리했다. 잘 읽고 여러분은 해메지 않도록 하자.

생각날 때마다 추가

init.el 이 비대해질 경우

leaf를 써서 설정을 블록 단위로 깔끔하게 정리해도 패키지를 100개 200개씩 깔다보면 init.el이 비대해지는 것은 당연하다. 이렇게 되면 관리하기 어려워지고, 신경쓰지 않으면 바로 패키지 구분이 난잡해진다. 설정 파일이 leaf 블록으로만 구성되어있다면 하나의 거대한 파일로도 충분하겠지만, 자기만의 함수를 선언하거나 블록에 구애받지 않는 설정을 할 때도 있다. 따라서 우리는 서로 연관된 패키지들을 묶어서 파일 단위로 분할할 것이다.

init.el 파일에서 M-x mkdir RET 를 치면 디렉토리를 만들 수 있다. 여기선 config 디렉토리를 만들자. 그리고 SPC fconfig/python.el 로 파이썬 설정파일을 만들자. 이제 이 파이썬 설정파일에 파이썬에 관련된 설정들만 옮긴 뒤, init.el 에 기존 파이썬 설정 코드를 지우고 다음 함수를 추가하자.

(load-file "~/.emacs.d/config/python.el")

load-file 함수는 파일을 읽는 함수이다. 이맥스를 처음 시작할 때 init.el 을 일고 인터프리터에 로드한다는 것은 기억하고 있을 것이다. 까먹었어도 방금 말했으니 기억한거다. 이 때 저 load.file 함수를 읽으면 재귀적으로 그 파일을 읽고 인터프리터에 로드한다. 즉 init.el 에 코드 뭉치가 있는 것과 똑같다! 이런 식으로 evil 설정도 파일화하고 magit 설정도 파일화하고 전부 파일화하면 훨씬 깔끔한 설정 파일을 만들 수 있다.

패키지 매니저에 패키지가 없을 경우

패키지를 깔려고 인터넷을 떠돌다 보면 패키지 저장소에 패키지가 올라와있지 않는 일이 종종 있다. 보통 신생 패키지라서 아직 올라가지 않았거나, 메인테이너가 자의로 올리지 않는 등의 이유다. 물론 이래도 패키지를 깔 수 있다. 수동이지만.

터미널에서 git clone 으로 해당 패키지를 클론한다. 이때 이 패키지들도 한 곳에 모아두면 좋다. 여기선 ~/.emacs.d/git 이라고 하자. git에 올라와있는 패키지를 init.el 에 다음과 같이 설정해주면 바로 로드된다.

(leaf some-package
  :load-path "~/.emacs.d/git/some-package/some-package.el")

이 때 경로는 해당 패키지의 메인 파일의 경로여야 한다. 보통 패키지의 이름과 같으니 그걸 로드해주면 된다.

LSP가 느릴 경우

혹시 자신의 이맥스 버전이 26.3일 경우, 27.1버전을 설치해볼 것을 권한다. 최신버전 이맥스에서는 JSON 라이브러리가 emacs-lisp 대신 C로 작성되어 더 나은 성능을 기대할 수 있다.

이맥스 시작이 느릴 경우 또는 이맥스 사용 중 느려질 경우

이맥스에는 벤치마킹 패키지도 잘 되어있다. benchmark-init은 이맥스 시작 시 로드 시간을 측정해 띄워주는 패키지이므로, 로드 병목을 확인하고 로드 지연을 거는 등의 조치를 취하면 된다. 물론 최고의 해결책은 켜고 끄지 않는 것이다.

사용 중 느려질 경우에는 내장된 프로파일러를 사용하면 된다. M-x profiler-start 후 평소처럼 작업하다가 M-x profiler-report 로 병목을 확인하면 된다. 프로파일링을 시작하고 얼마 지나지 않아 리포트를 열 경우 M-x 메뉴를 여는 비용이 높게 잡히므로 주의한다.

' 의 기준

함수를 변수로 넘기고 싶을 때 ' 을 붙인다. 이때 함수는 평가되지 않은 살태로 매개 변수가 된다.

커스텀 키맵이 which-key 에서 prefix 로만 보일 때

(defalias 'keymap-name your-new-keymap)
(evil-leader/set-key
  "key" 'keymap-name)

으로 설정하면 이름이 잘 뜬다.

메뉴와 스크롤 바가 거슬릴 경우

(menu-bar-mode 0)
(tool-bar-mode 0)
(setq-default scroll-bar-mode nil)
(toggle-scroll-bar nil)

패키지를 깔고 설정하는데 오류가 나는 경우

깃헙 이슈나 레딧에서 검색하면 먼저 해당 오류를 경험한 사람들이 제시한 해결책들이 있다.

국내 최대 이맥스 커뮤니티

어둠의 개발자 비밀 결사