首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何禁用html模式的Emacs-Flymake

如何禁用html模式的Emacs-Flymake
EN

Stack Overflow用户
提问于 2010-11-04 17:08:25
回答 4查看 4.3K关注 0票数 25

下面是我在.emacs文件中的flymake设置:

代码语言:javascript
运行
复制
 (when (load "flymake" t) 
         (defun flymake-pyflakes-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 "pyflakes" (list local-file)))) 

         (add-to-list 'flymake-allowed-file-name-masks 
                  '("\\.py\\'" flymake-pyflakes-init))) 

   (add-hook 'find-file-hook 'flymake-find-file-hook)
(load-library "flymake-cursor")

我只想对.py文件使用flymake。剩下的就停用。但它始终处于启用状态。例如,当我打开一个html文件,我总是得到以下错误(flymake):Flymake:无法启动语法检查进程' xml‘与args (val /home/huseyin/vipsatis/templates/cancellation/base_flymake.html):搜索程序:没有这样的文件或目录,xml。Flymake将被关闭

所以我想对除py文件以外的任何文件都关闭它。有可能吗?

(对于有相同问题的人,我想解释一下错误消息: Flymake使用xmlstarlet进行xml和html验证。它试图将其称为"xml val……“但它必须将其命名为"xmlstarlet val...“要解决这个问题,您必须找到flymake.el文件并使用xmlstarlet更改xml调用。)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-29 15:25:36

从列表中删除HTML条目:

代码语言:javascript
运行
复制
(delete '("\\.html?\\'" flymake-xml-init) flymake-allowed-file-name-masks)
票数 23
EN

Stack Overflow用户

发布于 2010-11-04 22:48:15

好的,我知道了。这是我所做的:首先,我找到了flymake.el文件。(如果你没有它,你可能在emacs installation.In下有flymake.elc文件,这种情况下,只需在你的加载路径下复制flymake.el文件,这样它就会被使用,而不是insallation下的编译版本(.elc文件))。然后我找到了下面的函数,并注释了.xml和.html绑定。

代码语言:javascript
运行
复制
(defcustom flymake-allowed-file-name-masks
  '(("\\.\\(?:c\\(?:pp\\|xx\\|\\+\\+\\)?\\|CC\\)\\'" flymake-simple-make-init)
    ;("\\.xml\\'" flymake-xml-init)
    ;("\\.html?\\'" flymake-xml-init)
    ("\\.cs\\'" flymake-simple-make-init)
    ("\\.p[ml]\\'" flymake-perl-init)
    ("\\.php[345]?\\'" flymake-php-init)
    ("\\.h\\'" flymake-master-make-header-init flymake-master-cleanup)
    ("\\.java\\'" flymake-simple-make-java-init flymake-simple-java-cleanup)
    ("[0-9]+\\.tex\\'" flymake-master-tex-init flymake-master-cleanup)
    ("\\.tex\\'" flymake-simple-tex-init)
    ("\\.idl\\'" flymake-simple-make-init)
    ;; ("\\.cpp\\'" 1)
    ;; ("\\.java\\'" 3)
    ;; ("\\.h\\'" 2 ("\\.cpp\\'" "\\.c\\'")
    ;; ("[ \t]*#[ \t]*include[ \t]*\"\\([\w0-9/\\_\.]*[/\\]*\\)\\(%s\\)\"" 1 2))
    ;; ("\\.idl\\'" 1)
    ;; ("\\.odl\\'" 1)
    ;; ("[0-9]+\\.tex\\'" 2 ("\\.tex\\'")
    ;; ("[ \t]*\\input[ \t]*{\\(.*\\)\\(%s\\)}" 1 2 ))
    ;; ("\\.tex\\'" 1)
    )

其他评论流出的线路已经存在。现在flymake不适用于html和xml文件。

票数 6
EN

Stack Overflow用户

发布于 2011-10-08 19:03:08

在收到的错误消息中,它告诉您无法找到命令行XML验证工具xml。您可以通过安装一个兼容的XML验证工具来修复它(我想xmllint是正确的选择)。

但是,如果您真的只想禁用HTML和XML文件的Flymake,则不必复制整个flymake.el文件并对其进行更改。只需在init文件中添加以下行:

代码语言:javascript
运行
复制
(defun flymake-xml-init ())

这会用一个空函数覆盖Flymake为HTML和XML文件调用的函数。

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

https://stackoverflow.com/questions/4095153

复制
相关文章

相似问题

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