2013-07-25 7 views
12

PHP開発用emacsの私の現在の設定には、さまざまな欠点があります。私はしばしばhtmlとphpの混在モードを使用します。私はモードが私がどのコンテキストにいるのかを認識し、適切にフォーマットできるようにしたい。私は特に適切なタブに興味があります。これは私にとって最も重要な機能です。正しい色づけはいいだろうが、それがしばらくしてうんざりしていればそれは大丈夫だ。適切なPHP開発のためにemacsを設定するには?

私は現在

最もイライラする問題の一つは、ヒアドキュメント構文を取り入れているのMacOS X上でmulti-web-modeとのEmacs 24.3でのデフォルトphp-modeを使用しています

echo <<<私の現在のシステムでは、この構文があることが必要であることを認識しません。タブではありません。私は通常、このような警告が表示されます:私はすでにmumao/nxhtmlを使用してみましたが、それは私が望んでいた結果が得られなかった

Indentation fails badly with mixed HTML/PHP in the HTML part in 
plaín `php-mode'. To get indentation to work you must use an 
Emacs library that supports 'multiple major modes' in a buffer. 
Parts of the buffer will then be in `php-mode' and parts in for 
example `html-mode'. Known such libraries are: 
    mumamo, mmm-mode, multi-mode 
You have these available in your `load-path': 
    mumamo 

。いくつかの点では、それはより悪かった。私は本当にemacsのためのphp開発環境の設定を得るために人々が持っているヒントをありがとう。

+7

Re:この質問を閉じるための投票。ヘルプセンターは、 'プログラマーが一般的に使用するソフトウェアツール'に対処する質問は、スタックオーバーフローの範囲内にあると述べています。 – Avery

答えて

11

私は、混合HTML/PHPファイルの場合はweb-modehttp://web-mode.org/)、純粋なPHPファイルの場合はphp-modeを使用します。 php-modeの最新バージョンは、https://github.com/ejmr/php-mode#avoid-html-template-compatibilityのHTML/PHP混在ファイル用にweb-modeをお勧めします。

バッファの異なる部分に異なる振る舞いを適用しようmmm-modemumamoまたはmulti-web-modeのような他のモードとは異なり、web-modeはHTMLと混合することができ、利用可能なすべての構文/テンプレートを認識しています。また、Twig、Django、ERBなどの混合HTMLファイル/テンプレートにweb-modeを使用することもできます。実際には、HTMLを使用するものについてはweb-modeを使用しています。

しかし、PHPテンプレートのキャッチがあります:他のテンプレートシステムは異なるファイル拡張子を持っているため、自動的にモードを切り替えるのは簡単ですが、PHPテンプレートでは通常同じ拡張子.phpを使用します。私はそれをフォルダに切り替えるか、または手動でM-xウェブモードを手動で呼び出さなければなりません。ここに私の現在の設定です:

(defun add-auto-mode (mode &rest patterns) 
    (mapc (lambda (pattern) 
      (add-to-list 'auto-mode-alist (cons pattern mode))) 
     patterns)) 

(add-auto-mode 'web-mode 
       "*html*" "*twig*" "*tmpl*" "\\.erb" "\\.rhtml$" "\\.ejs$" "\\.hbs$" 
       "\\.ctp$" "\\.tpl$" "/\\(views\\|html\\|templates\\)/.*\\.php$") 

ところで、あなたのPHPファイルとテンプレートを分離し、(純粋なファイル内の関数へのリファクタリング長いPHPブロック)混合できるだけ単純なHTML/PHPファイルを維持しようとします。コードは読みやすく/従うのが簡単です。

関連する問題