質問: Emacsの設定についての質問です。 今までphp-modeでphpを書いていたのですが、最近になってhtmlタグとphpスクリプトが混在しているファイルを扱うようになりました。 そこでmmm-modeを導入したのですが、php-modeのインデント規則は引き継げるのですが、着色設定をどうしても引き継げません。 実現したいことは htmlタグ->html-modeのインデント phpスクリプト->php-modeのインデント+着色 です。 回答はできれば.emacsに書くEmacs Lispで書いていただけると助かります(が、必須ではありません)。 ちなみに設定の際に参考にしたURLは です。 以上、よろしくお願いいたします。
回答: 着色設定というのは、おそらく font-lock によるハイライト表示機能のことをさしているのかと思いますが、mmm-mode にはその設定はありません。単にサブモード側の設定を呼び出しているだけですので、php-mode側の設定ができていない、もしくはどこかでエラーになっている可能性を疑ったほうがよいかと思います。 手元で簡単なPHPスクリプトを対象に試してみた限りでは、以下の設定だけであとは何も設定しなくとも、ハイライト表示できました(Emacs 21.3)。 > > (autoload 'php-mode "php-mode" "Mode for editing PHP files") > > > (require 'mmm-mode) > > > (require 'mmm-sample) > > > (setq mmm-global-mode 'maybe) > > > (mmm-add-mode-ext-class nil "\\.php\\'" 'html-php) > > > いったん、mmm-modeをオフにしてみて、当該ファイルを php-mode として読み込んでみて、うまくハイライトされるか確認してみるとよいのではないかと思います。 また、M-x toggle-debug-on-error でエラー時にデバッグがかかるようにして、php-modeのサブモード設定時に途中でエラーになる箇所が出ていないか、確認してみるのもよいと思います。php-mode ではありませんが、mmm-modeでの呼び出し時に hook の実行エラーが出たことがあります。