当我使用emacs(和nXhtml)打开HTML文件时,我从flymake收到以下错误:
错误(flymake):Flymake:无法启动语法检查进程'xml' 与args(val /home/ABC/Downloads/capitals_flymake.html): 搜索程序:没有这样的文件或目录,xml。 Flymake将是 关闭
我认为这意味着我需要安装一个可以在xml
命令行运行的程序。但是,我无法在文档中找到该程序的内容。
我目前还在使用以下gist(其中一位评论者建议修改equal
至>=
)以禁用我{{1}中的Mumamo缓冲区文件名警告1}}:
.emacs
但是,我不确定这是否相关。
如何让flymake与nXhtml一起使用?我目前正在使用GNU Emacs 24.3.1。
答案 0 :(得分:0)
我在我的.emacs
中有这个用于实时验证XML和HTML,看看这是否有帮助。
(defun flymake-xml-init ()
(list "xmllint"
(list "--valid"
(flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))))
(defun flymake-html-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "tidy" (list local-file))))
(add-to-list 'flymake-allowed-file-name-masks
'("\\.html$" flymake-html-init))
此外,重新xml
可执行文件:它可能是http://packages.ubuntu.com/quantal/amd64/xml2/filelist的外观......也可以尝试apt-file /usr/bin/xml
(我不确定是否{{}默认安装1}},如果没有,则apt-file
)。此外,也许这会有所帮助:http://www.emacswiki.org/emacs/FlyMake。我无法找到任何特定于apt-get install apt-file
的设置,可以做些什么来飞行。
答案 1 :(得分:0)
您的计算机上未安装flymake使用的默认程序(xml
),或者其位置不在您的路径中。你需要告诉flymake使用不同的语法检查器,就像@wvxvw所说的那样(参见他们对代码的回答)。
但是,当您更改语法检查程序时,您可能还需要告诉flymake新检查程序将如何输出错误消息,否则flymake将不知道如何读取检查程序的输出。
如果您的新检查程序的退出代码不是0(通常表示错误)并且flymake没有看到任何被识别为错误文本的内容,则flymake将抛出CFGERR并关闭。
来自flymake manual:
以下错误会导致警告消息并将缓冲区的flymake模式设置为OFF。
CFGERR:语法检查进程返回非零退出代码,但未报告错误/警告。这表示可能的配置错误(例如,语法检查工具没有合适的错误消息模式)
所以你需要做的是告诉flymake如何解释更新的解析器中的错误。您可以通过向列表中添加正则表达式来执行此操作,flymake将根据解析器的输出进行检查。在.emacs
文件中添加以下内容:
(add-to-list
`flymake-err-line-patterns
'("at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$" 2 1 nil))
这将告诉flymake,如果您的解析器生成的输出与正则表达式("at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$"
)匹配,则将其标识为错误消息。 2 1 nil
告诉flymake正则表达式中的哪个组分别代表文件,行号和列号。如果错误消息未提供该信息,则将该参数设置为nil
。在此示例中,错误消息仅标识文件(第二组)和行号(第一组),因此该列设置为nil。