ㅈㅅㄹ

Trailing white space이라는 것은 일반 문자와 개행 문자 사이에 쓸 데 없이 들어 있는 공백 문자를 말하는 데, 이건 불필요 할 뿐 아니라 실제로 코드에 이런게 있다 보면 버전 컨트롤 시스템에 의미 없는 변경 사항이 추가 될 수 있어서 공동 개발하는 코드에서는 실수로 소스에 추가되지 않도록 주의해야 할 필요가 있다. 처음엔 redspace.el을 사용했었는데 이건 미니버퍼에 있는 trailing white space들도 highlight 해버려서 쓰기에도 좀 그렇고 애매하게 퍼포먼스도 떨어지는 느낌이고 해서 갖다 버리고, http://www.emacswiki.org/emacs/ShowWhiteSpace에서 이것 저것 쓸만한게 있나 뒤적거렸다. 실제로 내가 가장 원하는 기능은 그냥 간단하게 원하는 특정 메이저 모드 (가령 prog-mode)에서만 trailing white space만 표시해 주면 되는 심플한 기능이었는데 딱 입맛에 맞는 녀석은 없더라. VIM 쓰던 시절에는 아래 두 줄이면 됐었는데 말이지 (물론 VIM이니만큼 메이저 모드 이런거 없이 다 적용 되는 거지만).

highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace  /\s\+$/


없으면 뭐 어쩌나... 만들어야지.


이맥스에서는 기본적으로 show-trailing-whitespace 라는 버퍼 로컬 변수를 non-nil로 세팅하면 해당 영역을 빨간 색으로 표시해 주는 기능이 찾아 보니 있었다

(define-minor-mode my:trailing-whitespace-mode
  "Simple minor mode to highlight trailing white spaces."
  :variable show-trailing-whitespace)

결과는?



실제로 trailing white space를 꼭 신경 써야할 것들은 프로그래밍 언어와 관련 된 major mode들이 대부분이라 prog-mode-hook (아마 버전 24 때부터 들어갔다고 알고 있는데... 23 이전 버전에서는 일일히 쓰는 언어별 메이저 모드마다 hook을 추가해야 할 지도 모르겠다)에 추가 해주면 끝... (이 아니라 몇 가지 prog-mode를 상속 받지 않는 변태 모드들은 별도로 추가해 줘야 하긴 한다.)

(add-hook 'prog-mode-hook 'my:trailing-whitespace-mode)

물론 일일히 나 처럼 일부 버퍼에 대해서만 지정하는게 아니라 모든 버퍼에 다 적용하고 싶으면 :global 키워드를 지정해 주면 되겠다.

(define-minor-mode my:global-trailing-whitespace-mode
  "Simple minor mode to highlight trailing white spaces."
  :global t
  :variable show-trailing-whitespace)

그리고 add-hook으로 hook 추가 하는 대신 (my:global-trailing-whitespace-mode t) 하면 전체 버퍼에 대해 trailing white space를 표시해 준다. 그런데 애초에 글로벌로 적용할려면 뭐하러 이러나 (setq-default show-trailing-whitespace t) 해주면 되지...


그나저나 trailing white space를 일일히 영문으로 안 적고 쓸만한 단어로 번역해서 쓰고 싶은 데 적당한 단어가 없나...?? 후행 공백??? 뭔가 딱 와닿는 게 없네. 

'Emacs' 카테고리의 다른 글

Emacs의 ansi color 설정  (0) 2016.03.07
auto-complete-c-headers 설정  (1) 2016.03.03
자동 byte-compile 설정  (0) 2016.03.03
Emacsclient의 활용  (0) 2016.03.02
Emacs를 쓰고 싶지만 허들이 높아 보이는 사람들을 위한 조언  (0) 2015.07.27