Emacs缩进HTML(web-mode)无法正常工作

6
我可以使用Emacs中的web-mode来获得PHP和HTML的语法高亮和缩进。
如果我在一个.php文件中有以下代码:
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</p>

然后把光标放在中间一行,按tab键却没有反应。

我希望它看起来像这样:

<p>
     Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</p>

如果我将文本放在一行标签中并尝试缩进,它是有效的。

这样做:

<p>
<a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</a>
</p>

变成这样,这也是应该的

<p>
    <a>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</a>
</p>

我的 .emacs 文件

(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.jsp\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))

(setq web-mode-markup-indent-offset 4)
(setq web-mode-css-indent-offset 4)
(setq web-mode-code-indent-offset 4)
(setq web-mode-indent-style 4)

enter image description here


你好,我的缩进正常,你使用的web-mode版本是多少? - user2053036
我在Emacs 24.3.1中使用web-mode 8.0.9。 - Oskar Persson
我正在使用相同的版本,缩进对于代码`<p> Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>`有效。即使您在php文件中只有上述代码,缩进是否仍然无效? - user2053036
这很奇怪,我这里是好使的,你试过在emacs -Q下运行吗?如果还是不行,那可能是web-mode的bug,你应该在它的github上报告。 - user2053036
对不起,我的缩进现在无法工作。实际上,它适用于扩展名为“html”的文件,但对于扩展名为“php”的文件则失败了。这绝对是一个错误,你应该报告它。 - user2053036
显示剩余4条评论
2个回答

9

尝试将这些设置放在钩子函数中:

(defun my-web-mode-hook ()
  "Hooks for Web mode."
    (setq web-mode-markup-indent-offset 4)
    (setq web-mode-css-indent-offset 4)
    (setq web-mode-code-indent-offset 4)
    (setq web-mode-indent-style 4)
)
(add-hook 'web-mode-hook  'my-web-mode-hook)

1
你能添加这个吗?
(add-to-list 'auto-mode-alist '("\\.php\\'" . web-mode))

似乎没有任何区别。 - Oskar Persson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接