当我用emacs (和nXhtml )打开一个HTML文件时,我会从flymake中得到以下错误:
错误(flymake):Flymake:未能用args启动语法检查进程' xml‘(val /home/ABC/下载/capitals_Flymake.html):搜索程序:没有这样的文件或目录,xml。Flymake将被关闭
我假设这意味着我需要安装一个可以使用xml在命令行运行的程序。然而,我没有能够找到这个程序是什么在文档中。
我目前还在使用以下要旨 (其中一位评论者建议将equal更改为>=)来禁用.emacs中的Mumamo缓冲区文件名警告
;; Workaround the annoying warnings:
;; Warning (mumamo-per-buffer-local-vars):
;; Already 'permanent-local t: buffer-file-name
(when
(and
(>= emacs-major-version 24)
(>= emacs-minor-version 2))
(eval-after-load "mumamo"
'(setq mumamo-per-buffer-local-vars
(delq 'buffer-file-name mumamo-per-buffer-local-vars))))但是,我不确定这是否相关。
我怎样才能让flymake与nXhtml一起工作呢?我目前使用GNU Emacs 24.3.1。
发布于 2013-06-11 11:34:11
我在我的.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 (我不确定默认情况下是否安装了apt-file,如果没有安装,则安装apt-get install apt-file)。而且,也许这会有所帮助:http://www.emacswiki.org/emacs/FlyMake。我找不到任何特定于nXhtml的设置,这些设置都是用来做飞的。
发布于 2013-09-16 19:04:47
让flymake使用的默认程序(xml)不在您的计算机上安装,或者它的位置不在您的路径中。您需要告诉flymake使用不同的语法检查器,就像@wvxvw说的那样(代码见他们的答案)。
但是,当您更改语法检查器时,您可能还需要告诉flymake,新的检查器将如何输出错误消息,否则就不知道如何读取检查器的输出。
如果您的新检查程序的退出代码不是0(通常表示错误),并且flymake没有看到它识别为错误文本的任何内容,那么flymake将抛出一个CFGERR并关闭。
从flymake 手册
下列错误会导致警告消息,并为缓冲区关闭flymake模式。 语法检查进程返回非零退出代码,但没有报告错误/警告。这表示可能存在配置错误(例如,语法检查工具没有合适的错误消息模式)。
因此,您需要做的是告诉flymake如何从更新的解析器中解释错误。要做到这一点,可以将regex表达式添加到一个列表中,并在该列表中根据解析器的输出进行检查。将类似的内容添加到.emacs文件中:
(add-to-list
`flymake-err-line-patterns
'("at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$" 2 1 nil))然后,这将告诉flymake,如果解析器生成与regex ("at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$")匹配的输出以将其识别为错误消息。2 1 nil告诉flymake,regex中的哪个组分别表示文件、行号和列号。如果错误消息没有提供该信息,则将该参数设置为nil。在本例中,错误消息只标识文件(第二组)和行号(第一组),因此该列被设置为零。
https://stackoverflow.com/questions/17038953
复制相似问题