首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用nXhtml打开HTML文件会产生错误

用nXhtml打开HTML文件会产生错误
EN

Stack Overflow用户
提问于 2013-06-11 07:45:59
回答 2查看 772关注 0票数 1

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

错误(flymake):Flymake:未能用args启动语法检查进程' xml‘(val /home/ABC/下载/capitals_Flymake.html):搜索程序:没有这样的文件或目录,xml。Flymake将被关闭

我假设这意味着我需要安装一个可以使用xml在命令行运行的程序。然而,我没有能够找到这个程序是什么在文档中。

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

代码语言:javascript
复制
;; 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。

EN

回答 2

Stack Overflow用户

发布于 2013-06-11 11:34:11

我在我的.emacs中有一个用于对XML和HTML进行实时验证的方法,看看这是否有帮助。

代码语言:javascript
复制
(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的设置,这些设置都是用来做飞的。

票数 0
EN

Stack Overflow用户

发布于 2013-09-16 19:04:47

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

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

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

从flymake 手册

下列错误会导致警告消息,并为缓冲区关闭flymake模式。 语法检查进程返回非零退出代码,但没有报告错误/警告。这表示可能存在配置错误(例如,语法检查工具没有合适的错误消息模式)。

因此,您需要做的是告诉flymake如何从更新的解析器中解释错误。要做到这一点,可以将regex表达式添加到一个列表中,并在该列表中根据解析器的输出进行检查。将类似的内容添加到.emacs文件中:

代码语言:javascript
复制
(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。在本例中,错误消息只标识文件(第二组)和行号(第一组),因此该列被设置为零。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17038953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档