2008-06-30

Carbon Emacsのphp-mode.elとmumamo

かなり以前に「Carbon Emacsでmumamoとphp-modeをうまく連携できない」と叫んでいたが、なんとか解決できた。解決できたと言っても、「やっぱり、僕ってお間抜けね。てへ。」みたいな感じ。結論から言うと、本家のphp-modeを使ってはいたのが原因ぽい。あと、この記事で言及しているCarbon Emacsは2008年春版ね。 Carbon EmacsにはnXhtml modeが最初からインストールされていて、設定までがすんでいる。で、nXhtml modeにはmumamoに適応した、というよりもnXhtml modeに最適化されたphp-modeが入っている。ちなみに、nXml modeに付属しているphp-modeのバージョンは1.4.1-nxhtmlで本家で配布しているバージョンは1.4.0だった。 というわけで、自前の環境にあるphp-mode.elを読み込まずに、nXhtml modeに付属しているphp-mode.elを読み込むようにしたら問題は解決。mumamoも問題なく有効になって、幸せなphp開発環境が手に入りましたとさ。ちなみに、php-mode.elは1.4.0からmumamoなどの複数メジャーモードを1つのバッファで扱える環境を作っておかないと文句を言います。 自分のメモとして現状のphp-mode用の設定を書いときます。 ;; load from ~/site-lisp/php-mode.el ;(load "~/site-lisp/php-mode.el") (autoload 'php-mode "php-mode" "PHP mode" t) ;; phpでのアウトラインモード (outline-mode) (defun php-outline-level () (save-excursion (looking-at outline-regexp) (let ((title (buffer-substring (match-beginning 1) (match-end 1)))) (cond ((equal (substring title 0 2) "") 0) ((equal (substring title 0 6) "public") 1) ((equal (substring title 0 7) "private") 1) ((equal (substring title 0 8) "function") 1) ((equal (substring title 0 5) "class") 1) ((equal (substring title 0 2) "**") 15) (t (length title)))))) ;; PEARコーディング規約 (custom-set-variables '(php-mode-force-pear t)) (add-hook 'php-mode-hook '(lambda () (setq outline-level 'php-outline-level) (setq outline-regexp "^[ \t]*\\(<\\?\\|\\?>\\|public\\|private\\|class\\|function\\|/\\*\\*\\)") (outline-minor-mode t) ))