2

我已经尝试了我能找到的每一种 php/html 模式(包括 nxHTML),但找不到一种能以我想要的方式缩进的模式。这是我的文件包含的示例:

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

我希望 emacs 缩进将 if/endif 视为元素的代码,如下所示:

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

for 循环和其他结构也是如此。谢谢。

4

2 回答 2

1

我已经编写了主要模式 web-mode.el(可在http://web-mode.org上找到)。此模式专为包含 CSS/JS/PHP/JSP 的 HTML 模板而设计。它根据块的类型缩进和合成颜色。HTML 缩进非常健壮(标签和属性的缩进)。

于 2012-08-30T08:49:36.440 回答
0

你可能不得不自己动手。如果您要做的只是确保像<?php if ....: ?>开始缩进这样的块,并<?php endif; ?>停止该级别的缩进,这取决于您的 elisp 技能,这可能不是那么难。您甚至可以构建一个从 nxml 模式派生的新模式,并以这种方式修改缩进。

对于它的价值,试图让它在 nxHTML 中工作可能是一场彻底的灾难。主要是因为您会尝试跨模式边界缩进。

好消息是您可能可以使用正则表达式来处理所有 PHP 愚蠢的替代语法。坏消息是... PHP 愚蠢的替代语法!

于 2012-08-28T06:53:27.693 回答