GNU Emacs21 を使っていて、主にPHPで開発をしています。

拡張子.incでPHPとHTMLが混在したファイルを扱うことがあり、
その際、mmm-modeを使って色分けを行っております。

Emacsを立ち上げて、はじめの一回はちゃんと開くのですが、
開いた後一度killして、再度開くとphp-modeメインでmmm-modeが開いてしまい、結局全部分がphp-modeになってしまいます。

2回目以降もM-x html-modeとコマンドを実行すればちゃんと色分けがされるのですが、必ず自動で判別されるようにしたいです。
もちろんauto-mode-alistでの拡張子設定は行っています。

こうじゃない?みたいな軽いアドバイスでも構いませんので、よろしくお願いします。

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

ベストアンサー

id:ffmpeg No.2

回答回数1202ベストアンサー獲得回数9

ポイント40pt

php-modeをロードしないように設定すれば。

id:shiroxcom

なるほど。

デフォルトでphp-modeがロードされるようになっているので、

それを無効にしてphp-modeはmmm-modeで管理するということですよね。

思いつきませんでした。やってみます。

ありがとうございます!

2008/03/03 13:13:33

その他の回答1件)

id:pyopyopyo No.1

回答回数377ベストアンサー獲得回数98

ポイント30pt

emacs はファイルの先頭部分に

-*- hogehoge -*-

という文字列があると,そのファイルを hogehoge-mode で開くようになっています

一般的な使い方としては,ファイルの頭にコメント文を追加して,

そのコメント文中に -*- hogehoge -*- という文字列を含めるようにします.

たとえば php-mode で開きたいファイルであれば,先頭部分にコメント文を追加して

<?php
// -*- php -*- 
?>

html-mode で開きたいファイルがあれば

<!-- -*- html -*- -->

と書いておけば良いです.

具体的な例は google の codesearch を参考にしてください

http://www.google.co.jp/codesearch?q=%22-*-+php+-*-%22&hl=ja&btnG=%E3%82%BD%

id:shiroxcom

初めて知りました!

試して見ましたところ、ちゃんと何度も開けております!

しかし、拡張子の判別だけでできないもなのでしょうか?

.emacsの設定を変更しただけで済む方法が無ければこの方法で行きたいと思います!

ありがとうございました!

2008/02/28 10:53:08
id:ffmpeg No.2

回答回数1202ベストアンサー獲得回数9ここでベストアンサー

ポイント40pt

php-modeをロードしないように設定すれば。

id:shiroxcom

なるほど。

デフォルトでphp-modeがロードされるようになっているので、

それを無効にしてphp-modeはmmm-modeで管理するということですよね。

思いつきませんでした。やってみます。

ありがとうございます!

2008/03/03 13:13:33
  • id:shiroxcom
    しろっくす 2008/02/27 19:41:41
    因みに.emacsは下記の通りです。

    (set-language-environment "Japanese")
    (setq default-input-method "japanese-anthy")

    (load "emacs-256color-hack.el")

    (load "color-theme")
    (color-theme-initialize)
    (color-theme-tty-dark)

    (setq c-default-style "linux")
    (setq indent-tabs-mode t)
    (setq c-basic-offset 4)
    (setq default-tab-width 4)
    (setq tab-width 4)

    (setq inhibit-startup-message t)
    (define-key global-map "\C-h" 'delete-backward-char)
    (define-key global-map "\C-c\C-l" 'toggle-truncate-lines)
    (global-font-lock-mode t)
    (show-paren-mode 1)
    (line-number-mode t)
    (setq scroll-step 1)
    (transient-mark-mode 1)
    (setq make-backup-files nil)
    (setq auto-save-default nil)
    (setq-default truncate-lines t)
    (menu-bar-mode nil)

    (require 'mmm-auto)
    (setq mmm-submode-decoration-level 2)
    (invert-face 'mmm-default-submode-face t)
    (setq mmm-font-lock-available-p t)
    (setq mmm-global-mode 'maybe)
    (set-face-background 'mmm-default-submode-face "midnight blue")

    (mmm-add-mode-ext-class nil "\\.inc?\\'" 'html-php)
    (mmm-add-classes
    '((html-php
    :submode php-mode
    :front "<\\?"
    :back "\\?>")))

    (add-to-list 'auto-mode-alist '("\\.inc?\\'" . html-mode))
  • id:shiroxcom
    しろっくす 2008/03/03 13:25:46
    ffmpegさんの言う通りphp-modeをロードしないように設定したところ、解決しました。
    -*-の件も勉強になりました。ありがとうございました!

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

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

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

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