prettify-symbols-mode로 lambda를 더 예쁘게

prettify-symbols-mode
;;; prettify-symbols-mode
(add-hook 'prog-mode-hook 'prettify-symbols-mode)

왜 prog-mode-hook을 사용?

Prog mode is a basic major mode for buffers containing programming language source code. Most of the programming language major modes built into Emacs are derived from it.

- 22.2.5 Basic Major Modes

프로그래밍 언어 메이저(major) 모드가 대부분 상속받는 모드. 여기에 걸면 대부분 적용된다.

특정 모드의 parent 모드는 어떻게 구할 수 있나?

parent 정보는 어디에 저장될까? 궁금해서 emacs-lisp-mode 관련 코드를 살펴봤다.

(define-derived-mode emacs-lisp-mode prog-mode "Emacs-Lisp" ...)

define-derived-mode 함수를 호출해 모드를 상속받는다.

(defmacro define-derived-mode (child parent name &optional docstring &rest body)
  ...
  (put ',child 'derived-mode-parent ',parent)

내부를 보면 put 함수 호출이 보인다. 이건 뭘까?

심볼은 Print name, Value, Function, Property list 이렇게 총 4개의 컴포넌트를 가지고 있다. 여기서 프로퍼티 리스트에 관련된 함수다. put 함수는 프로퍼티 리스트에 값을 넣는다.

(get 'emacs-lisp-mode 'derived-mode-parent)
;;=> prog-mode
(get 'prog-mode 'derived-mode-parent)
;;=> nil

put 함수로 넣었으니 get 함수로 가져올 수 있다.

예쁘게 바꾸고 싶은 심볼이 더 있는데, 어디에서 설정하면 되나?

C-h v prettify-symbols-alist
(("lambda" . 955))

prettify-symbols-alist 변수에 추가하면 된다. 화살표도 많이 쓰는데, 난 아직 눈에 안 익어서 기본값 유지.

24.4 이전 버전에는 어떻게 사용해야 하나?

prettify-symbols-mode 마이너 모드는 버전 24.4부터 내장됐다. 이전 버전에서는 pretty-mode를 사용하면 된다.

참고

C-x C-s C-x C-c

크리에이티브 커먼즈 라이선스

Published: November 22 2015


Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com