-->

2010-04-11

emacs の php-mode の設定の例

この例では pear の標準コーディング規約にある設定をベースにします。
http://pear.php.net/manual/ja/standards.indenting.php (空白 4 つのインデントを使用します。タブは使いません。)

(require 'php-mode)
(add-hook
 'php-mode-hook
 (defun php-mode-hook ()
   ;; c-mode のスタイル (コメントアウトした場合 "gnu")
   (c-set-style "bsd")

   ;; 連続する空白の一括削除 (必要なければコメントアウトする)
   (c-toggle-hungry-state t)

   ;; コメント行のインデント (必要なければコメントアウトする)
   (setq c-comment-only-line-offset 0)

   ;; コメントのスタイル (必要なければコメントアウトする)
   (setq comment-start "// "
         comment-end   ""
         comment-start-skip "// *")

   ;; 勝手に改行モード (必要なければコメントアウトする)
   (c-toggle-auto-hungry-state t)
   (setq c-hanging-braces-alist
         '(
           (class-open nil)
           (class-close nil)
           (defun-open before after)
           (defun-close nil)
           (inline-open nil)
           (inline-close nil)
           (brace-list-open nil)
           (brace-list-close nil)
           (block-open nil)
           (block-close nil)
           (substatement-open before after)
           (statement-case-open before after)
           (extern-lang-open nil)
           (extern-lang-close nil)
           ))

   ;; PEAR のスタイル (indent-tabs-mode nil を pear だけに反映させる場合はこちら)
   (setq tab-width 4
         c-basic-offset 4
         c-hanging-comment-ender-p nil
         indent-tabs-mode nil)
   ))
(setq
 auto-mode-alist
 (append
  '(
    ("/\\(PEAR\\|pear\\)/" . php-mode)
    ("\.php$" . php-mode)
    )auto-mode-alist))

c-set-style は慎重に選ぶことを、お勧めします。
M-x c-set-style
Possible completions are:
awk            bsd            ellemtel       gnu            java
k&r            linux          python         stroustrup     whitesmith

例えば、サンプルとなるソース (多次元配列, オブジェクト, クラス, 関数, if, else, for, while, switch, case などが書かれたインデント無しの状態の phpファイル) を用意して C-x h C-M-\ をスタイルごとに実行します。その都度 emacs を再起動した方が良いかもしれません。

0 件のコメント: