mode-line-format 변경하기
잠깐 powerline같은 걸로 갈아타 보기도 했으나 이쁘기만 하지 실속은 그다지 없어서 기본 mode-line을 써 왔다. 그러나 nyan-mode를 쓰다 보면 아무래도 필요 공간이 많아지는데, 별 쓸 데 없는 마이너 모드 리스트가 쌓이다 보면 정작 필요한 게 안보이는 사태가 발생하더라. 그래서 아예 내 입맞에 맞도록 싹 뜯어 보기로 했다.
일단 버퍼가 read-only인지는 확실하게 구분이 가능해야 한다. 오죽하면 기본 mode-line 쓸 때도 아예 my:read-only-mode라는 마이너 모드를 만들어 놓고 lighter도 씨뻘건 색으로 달아 놓도록 해 놨겠느냐 말이지. 이번에도 비슷하게 구별이 가능하도록 read-only일 경우 버퍼 이름의 배경색을 빨갛게 만들어 두었다. 사실 모르는 사람이 보면 이게 뭔가 하겠지만, 어차피 나만 잘 알아먹으면 됐지.
뭐 그 외에 내 경우 Emacs에서 System IME를 사용하지 않고 자체 IME를 사용하니까, 현재 버퍼의 IME 모드도 표시될 필요가 있고.... nyan-mode(!!!)와 vc-mode는 포기할 수 없는 것들 이다. 그래서 나름 간단하게 구성해 본 mode-line은 아래와 같다:
그리고 mode-line-format은 다음과 같다:
;; my custom mode-line (inspired from emacs-fu) (defface my:mode-line-readonly-buffer-id '((t :inherit mode-line-buffer-id :background "red" :foreground "yellow")) "Used for highlight readonly buffer") (setq-default mode-line-format (list " %I " ; buffer size ;; modified '(:eval (propertize (if (buffer-modified-p) "* " " ") 'face 'compilation-mode-line-fail)) ;; relative position, size of file ;; buffer name '(:eval (propertize " %20b " 'face (if buffer-read-only 'my:mode-line-readonly-buffer-id 'mode-line-buffer-id) 'help-echo (buffer-file-name))) " " ;; line/column (propertize "%02l" 'face 'font-lock-type-face) ":" (propertize "%02c" 'face 'font-lock-type-face) " " ;; input method '(:eval (propertize (if current-input-method-title current-input-method-title "ENG") 'face '(:height 0.8))) " " ;; major mode (propertize "%m" 'face 'bold) ;; process status; eg. compilation buffer '("" mode-line-process) " " ;; nyan-mode!!!!! '(:eval (list (nyan-create))) " %p " ; percent of buffer ;; vc-mode '(:eval (propertize (if vc-mode vc-mode "") 'face '(:foreground "sky blue" :height 0.9 :weight bold))) )) (when (display-graphic-p) (setq-default nyan-wavy-trail t) (setq-default nyan-bar-length 24) (nyan-mode 1) (nyan-start-animation))
%-constructs 라고 하는 특수 문자열은 %b이면 버퍼 이름을 찍는다든가 하는 특수한 기능을 가지고 있다. C-h v mode-line-format RET 으로 살펴 보면 어떤 %-constructs가 정의되었는지 살펴 볼 수 있다.
'Emacs' 카테고리의 다른 글
fill-column-indicator를 쓸 때 popup이 깨지는 문제 수정 (0) | 2017.07.03 |
---|---|
Tramp Mode 소개 (0) | 2016.10.31 |
rfcview.el : Emacs RFC Viewer (0) | 2016.10.31 |
framemove.el : Emacs frame간 이동 (0) | 2016.06.25 |
ido에서 helm으로 넘어오다 (0) | 2016.05.17 |