1

当我使用 emacs(和 nXhtml)打开一个 HTML 文件时,我从 flymake 收到以下错误:

错误(flymake):Flymake:无法使用 args 启动语法检查过程“xml”(val /home/ABC/Downloads/capitals_flymake.html):搜索程序:没有这样的文件或目录,xml。Flymake 将关闭

我假设这意味着我需要安装一个可以在命令行上运行的程序xml。但是,我无法在文档中找到该程序的内容。

我目前也在使用以下要点(其中一位评论者建议进行修改以更改equal>=)来禁用我的 Mumamo 缓冲区文件名警告.emacs

;; 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。

4

2 回答 2

0

flymake 被告知使用的默认程序 ( xml) 未安装在您的计算机上,或者它的位置不在您的路径中。您需要告诉 flymake 使用不同的语法检查器,就​​像@wvxvw 所说的那样(请参阅他们的代码答案)。

但是,当您更改语法检查器时,您可能还需要告诉 flymake 新检查器将如何输出错误消息,否则 flymake 将不知道如何读取检查器的输出。

如果您的新检查程序的退出代码不是 0(通常表示错误)并且 flymake 没有看到任何它识别为错误文本的内容,那么 flymake 将抛出 CFGERR 并关闭。

从flymake手册

以下错误会导致警告消息并关闭缓冲区的 flymake 模式。

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]+\\)\"$") 匹配的输出,以将其识别为错误消息。告诉 flymake 正则表达式中的2 1 nil哪个组分别代表文件、行号和列号。如果错误消息未提供该信息,则将该参数设置为nil. 在此示例中,错误消息仅标识文件(第二组)和行号(第一组),因此该列设置为 nil。

于 2013-09-16T19:04:47.317 回答
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(我不确定是否apt-file默认安装,如果不是,那么apt-get install apt-file)。另外,也许这会有所帮助:http ://www.emacswiki.org/emacs/FlyMake 。我找不到任何特定于nXhtml对flymake有用的设置。

于 2013-06-11T11:34:11.593 回答