Carpe Diem

  Top > スポンサー広告> PHP > EmacsでPHP-mode  

スポンサーサイト

-- - --/-- [--] - --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

EmacsでPHP-mode

2011 - 11/11 [Fri] - 16:28

Emacsを使用していて、JavaやC++などはデフォルトでTabインデントやら関数の色分けなどがされますが、PHPはそうではありません。そこでPHPでも同じような環境に出来るよう、PHP-modeを導入します。

まずはファイルのダウンロード

Project: PHP mode for Emacs: Summary

次にダウンロードしたphp-mode.elファイルを site-lisp ディレクトリにコピーします。
僕の場合は
/usr/local/share/emacs/23.2/site-lisp/
でした。環境にによって違うでので適宜変えてください。そして、コピーした *.el ファイルをバイトコンパイルします。

$ sudo su
# emacs -nw

M-x byte-compile-file ←ミニバッファ

次に.emacs ファイルを編集します。ホームフォルダにて
$ emacs -nw .emacs
(load-library "php-mode")
(require 'php-mode)
(add-hook 'php-mode-hook
          '(lambda ()
             (c-set-style "stroustrup")
             (setq tab-width 8)
             (setq c-basic-offset 8)
             (setq indent-tabs-mode t)
             (c-set-offset 'arglist-intro '+)
             (c-set-offset 'arglist-close 0)
             ;;(setq php-mode-force-pear t)
         ))


これで関数に色が付き、Tabでインデントが揃えられます。インデント幅を変更したい場合は8を修正してください。また最後のコメントアウトを外すと、読み込み時や改行時などに強制的にインデントされるようになります。

ただこのままではPHP-HTMLの混合ファイルでは警告が起きるので、それが嫌な場合はmmm-modeを導入する(ひとつのバッファで html-mode と php-mode を一緒に使える)か、先ほどのphp-modeを修正します。僕の場合一度前者を試しましたが、うまくいかなかったので(PHP側でインデントが効かなくなる)、後者を実行しました。

先ほどのphp-mode.elファイルを以下のように修正します。

;; Do it but tell it is not good if html tags in buffer.
;(defun php-check-html-for-indentation ()
;  (let ((html-tag-re "^\\s-*<!--?\\sw+.*?-->")
;        (here (point)))
;    (if (not (or (re-search-forward html-tag-re (line-end-position) t)
;                 (re-search-backward html-tag-re (line-beginning-position) t)))
;        t
;      (goto-char here)
;      (setq php-warned-bad-indent t)
;      (lwarn 'php-indent :warning
;             "\n\t%s\n\t%s\n\t%s\n"
;             "Indentation fails badly with mixed HTML and PHP."
;             "Look for an Emacs Lisp library that supports \"multiple"
;             "major modes\" like mumamo, mmm-mode or multi-mode.")
;      nil)))

;(defun php-cautious-indent-region (start end &amp;optional quiet)
;  (if (or php-warned-bad-indent
;          (php-check-html-for-indentation))
;      (funcall 'c-indent-region start end quiet)))

;(defun php-cautious-indent-line ()
;  (if (or php-warned-bad-indent
;          (php-check-html-for-indentation))
;      (funcall 'c-indent-line)))


256~280行目の部分をコメントアウト。

さらにここで定義されてる関数を使ってる箇所

  ;(setq indent-line-function 'php-cautious-indent-line)
  ;(setq indent-region-function 'php-cautious-indent-region)


379, 380行目あたりもコメントアウト。

これが終わったら、最初のようにバイトコンパイルし直します。
以上です。


ソース:
emacs で PHP-mode と mmm-mode を使う
[php]emacsのphp-modeのウザいwarningを消す

コメントの投稿





管理者にだけ表示を許可する

 | ホーム | 

プロフィール

Cicatrice

Author:Cicatrice
備忘録

検索フォーム

カテゴリ

最新記事

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。