让flymake与Django一起工作?

时间:2012-02-22 07:07:39

标签: html django macos emacs flymake

当我处理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 …</p>
{% endblock %}
</body>
</html>

但是,以下模板中包含了用于flymake错误的font-lock:

{% extends base.html %}

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

用鼠标悬停错误显示flymake抱怨“文字不允许”。

我已经按照this related question中的每个解决方案进行了操作,但是没有一个解决方案禁用了用于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碳。

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

1 个答案:

答案 0 :(得分:0)

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

我目前使用的解决方法是使用django-html-mumamo-mode代替django-mode。这是我在使用django设置emacs的过程中想到的。

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

小马模式

Looks promising,但文档不完整,模板中的语法突出显示对我不起作用。这就是我真正追求的,但其他人可能会喜欢其他功能。

Django的HTML的mumamo模式

这与nXhtml捆绑在一起。没有包含任何代码段,但可以在Google中找到代码段,或者使用yasnippet imported from a Textmate bundle找到代码段。说到这个模式conflicts with the yasnippet-bundle通过ELPA提供,所以请务必遵循开发主干以避免restart emacs everytime you trigger a snippet。顺便说一句,语法高亮很棒,你可能会喜欢nXhtml中的通用Web开发功能。

django的模式

语法高亮和跳转到标签,包括一些片段;但是,django-mode doesn't play nice with flymake,我认为是因为它来自nxml-modedjango-mode不再处于开发阶段,nxml-mode也不再是我可以收集的内容。 django-html-mumamo-mode没有遇到这个flymake问题,因为nXhtml包含了对flymake开箱即用的非常好的支持。