• このエントリーをはてなブックマークに追加

ss-1331910135

はじめに

ちょっと SCSS をかじろうと思って,かじるんだったら,Emacs でそれ用の編集モードがあるとうれしいよねとか思って,見つけたのが SCSS Mode for Emacs

そこでの README にある一スクリーンショットが気になった次第です:

ss-1331915364

「emacs」「indent」「highlight」あたりでググって意外にあっさりたどり着いたのが,「Highlighting indentation」です.

インデント迷子になることがしばしばあるので,まずは試しに使ってみることにします.

導入

ソースコードを落としてきます:

% cd ~/.emacs.d/vendor/
% git clone https://github.com/antonj/Highlight-Indentation-for-Emacs.git

で,~/.emacs.d/init.el に次を追記します:

(add-to-list 'load-path "~/.emacs.d/vendor/Highlight-Indentation-for-Emacs")
(require 'highlight-indentation)

これで,次の2つを実行できるようになります.

M-x highlight-indentation-mode

4カラムごとにインデントがハイライトされます:

ss-1331917967

M-x highlight-indentation-current-column-mode

現在の行に関連する(?)インデントのみハイライトされます:

ss-1331918079

設定いくつか

ハイライトの色


highlight-indentation-mode におけるハイライトの色を指定します:

(set-face-background 'highlight-indentation-face "#0000ff")

highlight-indentation-current-column-mode における,現在行に関連する(?)インデントのハイライト色を指定します:

(set-face-background 'highlight-indentation-current-column-face "#ff0000")

これら2つの設定を組み合わせると,次のような感じになります:

ss-1331914585

本家 GitHub の README にある例:

Appearance of guidelines is customizable by changing the face highlight-indentation-face and highlight-indentation-current-column-face.

Example, colors from screenshot:

(set-face-background ‘highlight-indentation-face “#e3e3d3″)
(set-face-background ‘highlight-indentation-current-column-face “#c3b3b3″)
antonj/Highlight-Indentation-for-Emacs

では,次のような色になります:

ss-1331911275
ss-1331914439

ハイライトするインデントのカラム数

highlight-indentation-offset の値を設定します.デフォルトは 4 です.

(setq highlight-indentation-offset 2)

カラム数を 2 にした場合,次のようになります:

ss-1331914500

特定のメジャーモードにフックする

CoffeeScript書くときだけ最初からインデントをハイライトしたい,とかしたい場合は,次のようにします:

(add-hook 'coffee-mode-hook 'highlight-indentation-mode)

highlight-indentation-current-column-mode も併用したいときは,次のように書けます:

(add-hook 'coffee-mode-hook 'highlight-indentation-mode)
(add-hook 'coffee-mode-hook 'highlight-indentation-current-column-mode)

しかし,対象のモードがいくつもある場合に,それぞれ2行ずつ追記するのもメンドイので,次のようにしておけばよさげです:

;; highlight-indentation-mode が呼ばれたら highlight-indentation-current-column-mode も実行する
(add-hook 'highlight-indentation-mode-hook 'highlight-indentation-current-column-mode)
 
;; 各種モードで highlight-indentation-mode が実行されるようにする
(add-hook 'coffee-mode-hook 'highlight-indentation-mode)
(add-hook 'cperl-mode-hook  'highlight-indentation-mode)
(add-hook 'scss-mode-hook   'highlight-indentation-mode)

ひとまずこの設定で

まぁいろいろ表示されるのもうっとうしそうなので,結局のところ,highlight-indentation-current-column-mode で現在行のインデントのみを,薄めの色でハイライトするようにしてみてます.

ss-1331914727

設定をまとめると,次のような感じです:

(add-to-list 'load-path "~/.emacs.d/vendor/Highlight-Indentation-for-Emacs")
(require 'highlight-indentation)
(setq highlight-indentation-offset 4)  ;; default: 4
(set-face-background 'highlight-indentation-face "#e3e3d3")
(set-face-background 'highlight-indentation-current-column-face "#e3e3d3")
 
(add-hook 'coffee-mode-hook 'highlight-indentation-current-column-mode)
(add-hook 'cperl-mode-hook  'highlight-indentation-current-column-mode)
(add-hook 'scss-mode-hook   'highlight-indentation-current-column-mode)
...  ;; 必要に応じて追記

おわりに

以上,Emacsでインデントをハイライトしてくれる「Highlighting Indentation」をたまたま見つける機会があったので,紹介してみました.

これでインデント迷子になる頻度がけっこう減るんじゃないかと思ってます.

おっと,SCSS勉強せねば...