3

在处理 Django 模板时如何禁用 flymake?

Flymake 非常适合编辑 python 文件,但确实给我带来了 django 模板的问题。例如,以下模板不会引发错误,尽管语法突出显示不适用于模板标签:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
  <title>{% block title %}Page title{% endblock %}</title>
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>

<body>
{% block content %}
  <p>… Your HTML content here …&lt;/p>
{% endblock %}
</body>
</html>

但是,以下模板充满了用于 flymake 错误的字体锁定:

{% extends base.html %}

{% block content %}
<h1>Welcome!</h1>
{% endblock %}

用鼠标将鼠标悬停在错误上表明 flymake 正在抱怨“不允许文本”。

我已经关注了这个相关问题中的每个解决方案,但它们都没有为 html 缓冲区禁用 flymake。我什至尝试将所有模板文件重命名为以.djhtml而不是结尾.html,但重新访问文件后 flymake 仍然处于活动状态。我确实更改了自动模式列表以应用于django-html-mode文件.djhtml,所以问题可能就在那里。

更新:我发现切换到html-mode没有这个问题,因为我已经实现了前面提到的解决方案。但是,如果我切换到nxml-modedjango-html-mode(我想使用的),flymake 会再次启动并告诉我它是:

Using schema /usr/local/Cellar/emacs/HEAD/share/emacs/24.0.93/etc/schema/xhtml.rnc

雪豹上的 Emacs24 Carbon。

GNU Emacs 24.0.93.1 (i386-apple-darwin10.8.0, NS apple-appkit-1038.36) of 2012-02-21 on hook
4

1 回答 1

0

django wiki列出了使用 emacs的几个选项,但没有提供关于每种模式的特定优势和劣势的大量指导。

我目前使用的解决方法涉及使用django-html-mumamo-mode而不是django-mode. 这是我在使用 django 设置 emacs 时发现的。

请记住,随着这些软件包的开发,其中一些观察结果可能会发生变化。

小马模式

看起来很有希望,但文档不完整,模板中的语法突出显示对我不起作用。这是我真正追求的,但其他人可能会喜欢其他内置的功能。

django-html-mumamo-mode

这与nXhtml捆绑在一起。不包含任何片段,但可以通过 Google 找到片段,或者使用 yasnippet从 Textmate 捆绑包中导入片段。说起来,这个模式和 ELPA提供的yasnippet -bundle 有冲突,所以一定要遵循开发主干,避免每次触发一个片段都要重启 emacs。顺便说一句,语法高亮很棒,您可能喜欢作为 nXhtml 一部分的通用 Web 开发功能。

django 模式

语法高亮和跳转到标签,包括一些片段;但是,django-mode 与 flymake 并没有很好的配合,我认为这是因为它是从nxml-mode. django-mode不再处于开发阶段,也不是nxml-mode我能收集到的。django-html-mumamo-mode不会受到这个 flymake 问题的影响,因为 nXhtml 包含对开箱即用的 flymake 的非常好的支持。

于 2012-02-24T02:50:35.353 回答