LoginSignup
4
4

More than 5 years have passed since last update.

ファイルパスによってインデントを変更する

Last updated at Posted at 2013-08-20

(この記事には補足があります。最後までお読みください)

個人的に書くコードはソフトタブ(空白文字でインデント)だけど、仕事のJavaScriptのコーディングルールはハードタブ(水平タブ文字でインデント)なんだよー、仕事で書くコードは全て hoge が含まれるディレクトリにあるよー、な場合。

なんか適当。正規表現も setq する内容もフックの名前も各自よしなに。要するにモードにフックを追加するだけです。 .emacs.d/init.el とかにどうぞ。

(add-hook
 'js-mode-hook
 (lambda ()
   (when (string-match ".*hoge.*/.*\\.js"
                       (or (buffer-file-name) ""))
     (setq indent-tabs-mode t tab-width 4))))

追記

js2-mode とか使ってる場合は js2-mode-hook、PHPなら php-mode-hook とか、よしなに書いてくださいね。

メジャーモードによってはフックが提供されてない場合は、さあどうすれば良いのでせうね ヾ(〃><)ノ゙☆

補足

@yasuyk@github さんのおっしゃる通り、 .dir-locals.el による ディレクトリ変数 を活用するのも良い方法です。 (僕もコメントで指摘いただくまで存じ上げませんでした…!)

ただし、ディレクトリ変数が階層構造による「変数の制禦」を目的とするものであること、上記のコード断片はディクトリ階層ではなく パス中に含まれる文字列 による判定を主眼としたもの (階層に依存しない) であることを理解の上で、目的に合致したものを活用するのが良いですね ヾ(〃><)ノ゙☆

4
4
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4