無料Wikiサービス | デモページ | [広告] サイト検索サービス Sx4
Linuxなどのメモ書き
検索

Adsense

Emacs 編集モードのカスタマイズ の差分
Rev.1→最新版  追加箇所 削除箇所


各言語の編集モードに関する設定のメモ

C言語1.概要

C言語 Emacsでは各言語(C,Perl,PHP,...)編集モードがあり各編集モード設定える各言語編集モードでは変数c-mode-hook構文参照される設定ファイル(init.el)以下のようにいてc-mode-hookいにわせてEmacs挙動設定しておけばよいカスタマイズすることができる

Emacsはモードが設定されると対応するモードフック変数に登録されている関数を呼び出す。このため、各モードのカスタマイズを行うにはEmacsの初期化ファイル(init.el等)でモードフック変数にカスタマイズ設定を行う関数を登録しておけばよい。モードフック変数にはC言語ではc-mode-hook、Perlではcperl-mode-hookなどがある。

2. C言語

C言語の編集モードで参照されるモードフック変数はc-mode-hook。設定ファイル(init.el等)に以下のように書いてc-mode-hookを設定しておけばよい。

(setq c-mode-hook
      '(lambda ()
         (setq c-basic-offset 8)   ; 字下げ
         (setq tab-width 8)        ; Tab幅
         (setq c-auto-newline nil) ; 自動改行をしない
))

lambdaはリストが関数であることを示す識別子。関数の前についているシングルクォート(')は関数を評価せずリストをそのまま返すことを意味する。これによりc-mode-hookには"(lambda nil (setq c-basic-offset 8) (setq tab-width 8) (setq c-auto-newline nil))"というように関数そのものが設定されることになる

上記では、変数c-mode-hookにsetqで関数を代入しているが、c-mode-hookにすでに設定があった場合、上書きされてしまう。設定を追加するには以下のようにadd-hookを使用する。Hook用変数を設定するのはadd-hookの方が推奨らしい。

(add-hook 'c-mode-hook
          '(lambda ()
             (setq c-basic-offset 8)
))

3. Perl

Perlの編集モードの設定にはcperl-mode-hookが使用される。

(add-hook 'cperl-mode-hook
          '(lambda ()
             (setq cperl-indent-level 4)  ; 字下げ幅
))