Emacsの設定についての質問です。

今までphp-modeでphpを書いていたのですが、最近になってhtmlタグとphpスクリプトが混在しているファイルを扱うようになりました。
そこでmmm-modeを導入したのですが、php-modeのインデント規則は引き継げるのですが、着色設定をどうしても引き継げません。
実現したいことは
htmlタグ->html-modeのインデント
phpスクリプト->php-modeのインデント+着色
です。
回答はできれば.emacsに書くEmacs Lispで書いていただけると助かります(が、必須ではありません)。


ちなみに設定の際に参考にしたURLは
http://bluestar.s32.xrea.com/text/php-mode.php
http://d.hatena.ne.jp/Tetsujin/20070430
です。
以上、よろしくお願いいたします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/08/06 09:48:56
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:tmasao No.3

回答回数77ベストアンサー獲得回数20

ポイント60pt

着色設定というのは、おそらく 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 の実行エラーが出たことがあります。

その他の回答2件)

id:yosuke_ss No.1

回答回数260ベストアンサー獲得回数2

ポイント10pt

php-modeのlispを見れば書いてあるだろ。

id:k1LoW

確かにphp-modeのLispを見ればどのような着色設定なのかはわかると思います(自分が読みきるかはおいておいて)。

ただ、mmm-modeのsub modeにphp-modeの着色設定(もしくは近い設定)を書く方法がわかっていないというのが現状です。

2007/08/02 07:12:12
id:minkpa No.2

回答回数4178ベストアンサー獲得回数55

id:k1LoW

これはColor-Mateですね。

使ったことはないのですが、これは全体的なカラーリング設定を決めるものだと解釈しております。

自分が実現したいことはhtmlタグはhtml-modeのインデント設定を"引継ぎ"、phpスクリプトはphp-modeのインデント設定と着色設定を"引き継ぐ"ことなのです。

2007/08/02 07:14:31
id:tmasao No.3

回答回数77ベストアンサー獲得回数20ここでベストアンサー

ポイント60pt

着色設定というのは、おそらく 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 の実行エラーが出たことがあります。

  • id:k1LoW
    みなさん、回答ありがとうございました。
    解決まではまだ至っていませんが、状況の解析と原因究明をしていただいたtmasaoさんに重みをつけてさせてもらいました。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません