2012-08-27 16 views
2

我試過每一個php/html模式(包括nxHTML),我可以找到,但找不到縮進我想要的方式。下面是我的文件包含的內容的例子:我想emacs的縮進代碼處理的if/endif作爲一個元素,像這樣我如何獲得emacs縮進php控制結構之間的html塊?

<?php if (a == 5): ?> 
<span>test</span> 
<?php endif; ?> 

<?php if (a == 5): ?> 
    <span>test</span> 
<?php endif; ?> 

這同樣適用於for循環和其他構造。 謝謝。

回答

0

你可能會不得不推出自己的。如果你想要做的就是確保像<?php if ....: ?>這樣的塊開始縮進,並且<?php endif; ?>根據你的elisp技能停止縮進,這可能並不那麼困難。您甚至可以構建一個從nxml模式派生的新模式,並用這種方式修改縮進。

爲了什麼值得,試圖讓它在nxHTML中工作可能是一個完全的災難。主要是因爲你會試圖在模式邊界上縮進。

好消息是,您可以使用regexp來處理所有PHP高速替代語法。壞消息是...... PHPs愚蠢的替代語法!

1

我寫了主要模式web-mode.el(可在http://web-mode.org上獲得)。此模式專爲包含CSS/JS/PHP/JSP的HTML模板而設計。它根據塊的類型壓縮合成色彩。 HTML縮進相當健壯(縮進標籤和屬性)。

+0

感謝您的回覆。我試過了你的模式,它似乎在正確的軌道上,但仍然沒有足夠的信息來知道你何時嵌套在PHP控制結構中。例如,在foreach循環中嵌套(但不在同一個php塊中)的PHP if語句不會縮進,它假定if語句不在任何內部。 – user1628932

+0

@ user1628932你可以給我一個例子(縮進你想要的方式)? (我的電子郵件是關閉http://web-mode.org) – fxbois

+0

Web模式正是我所需要的。謝謝! –