Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让emacs在php控件构造之间缩进html块?_Php_Html_Emacs_Mode_Indentation - Fatal编程技术网

如何让emacs在php控件构造之间缩进html块?

如何让emacs在php控件构造之间缩进html块?,php,html,emacs,mode,indentation,Php,Html,Emacs,Mode,Indentation,我已经尝试了我能找到的每一种php/html模式(包括nxHTML),但是找不到一种按我想要的方式缩进的模式。以下是“我的文件”所包含内容的示例: <?php if (a == 5): ?> <span>test</span> <?php endif; ?> 测试 我希望emacs将代码缩进,将if/endif视为一个元素,如下所示: <?php if (a == 5): ?> <span>test</spa

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

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

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

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

测试
循环和其他构造也是如此。
谢谢。

你可能得自己动手了。如果您想做的只是确保像
这样的块开始缩进,并且
停止该级别的缩进,这取决于您的elisp技能,那么这可能并不难。您甚至可以构建一个从nxml模式派生的新模式,并以这种方式修补缩进

无论如何,试图让它在nxHTML中工作可能是一场彻底的灾难。主要是因为你会试图跨模式边界缩进


好消息是,您可能可以使用regexp来处理所有PHPs goofy替代语法。坏消息是。。。PHPs愚蠢的替代语法

我已经编写了主模式web-mode.el(在上提供)。此模式是为包含CSS/JS/PHP/JSP的HTML模板设计的。它根据块的类型缩进颜色。HTML缩进功能非常强大(标记和属性缩进)。

感谢您的回复。我已经尝试了您的模式,它似乎在正确的轨道上,但仍然没有保留足够的信息来知道何时嵌套在PHP控件结构中。例如,嵌套在foreach循环中(但不在同一PHP块中)的PHP if语句不会缩进,它假定if语句不在任何内容中。@user1628932能否给我发送一个示例(缩进方式与您所需的缩进方式相同)?(我的电子邮件在末尾关闭)网络模式正是我所需要的。谢谢