雑文発散

«前の日記(2014-01-03) 最新 次の日記(2014-01-05)» 編集
過去の日記

2014-01-04 [長年日記]

[Emacs] EditorConfig を Emacs から使う

ひさびさに CakePHP を clone したら、.editorconfig という見慣れないファイルがあった。

ファイル内はこんな感じ。

; This file is for unifying the coding style for different editors and IDEs.
; More information at http://editorconfig.org

root = true

[*]
indent_style = tab
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.bat]
end_of_line = crlf

http://editorconfig.org/ を見に行くと、EditorConfig というのは、複数のエディタや IDE 間で設定を共用しようというプロジェクトで、各エディタ用には、このドットファイルを解釈するためのプラグインが用意されているのであった。

当然、あるだろうと思って見てみると、やはり Emacs 用のプラグインも用意されていたので、早速インストールしてみた。

M-x package-install editorconfig

よっしゃ、簡単じゃん!と、プロジェクトのトップディレクトリにある index.php を Emacs で読み込んでみたものの、インデントがスペースのまま。 .editorconfig で定義されているタブによるインデントにならない。

あれ?なんで?と php-mode の設定とかを触っていたんだけど、実はこの辺は全く関係がなかった。よくよく調べてみると(というか、EditorConfig のページを読み込んでみると)、このプラグインを使うには外部の実行コマンド editorconfig が必要だったのだ。

こいつは Homebrew に存在しているということだったので、そっち経由でインストール。

$ brew install editorconfig

今度こそ大丈夫だろ!と Emacs を再起動しつつ index.php を読み込んでも変わらず。うーん、と悩みつつ、 editorconfig.el のソースを読み始めたら、 edconf-exec-path という設定と、それを使ったファイルの存在確認処理を発見。

あぁ、これにフルパス設定したろ、と次の記述を init.el で読み込まれるファイルに追記した。

(setq edconf-exec-path "/usr/local/bin/editorconfig") ; Homebrew でインストールしたコマンドのパス

(後で発見した「EmacsでPATHの設定が引き継がれない問題をエレガントに解決する」を使って、シェルに設定している Homebrew 用の PATH を引き継ぐ方法の方が良さそうな気がする)

これで再び CakePHP の index.php を読み込んでみたところ、インデントがタブに切り替わった。

いままで、Emacs の php-mode には、 php-enable-symfony2-coding-style やら php-enable-wordpress-coding-style のような個別プロジェクト用にコーディングスタイルの一括設定関数とかが用意されていたんだけど、プロジェクトが増えていくごとに破綻して行きそうだし、この EditorConfig プロジェクトの方がスマートだね。