如何在html模式下禁用Emacs-Flymake

yil*_*yin 25 emacs flymake

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

 (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")
Run Code Online (Sandbox Code Playgroud)

我想只为.py文件使用flymake.并为其余部分禁用它.但它始终启用.例如,当我打开一个html文件时,我总是得到以下错误错误(flymake):Flymake:无法使用args启动语法检查过程'xml'(val /home/huseyin/vipsatis/templates/cancellation/base_flymake.html):搜索对于程序:没有这样的文件或目录,xml.Flymake将关闭

所以我想把它关闭除了py文件以外的任何东西.可能吗?

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

hek*_*ran 23

从列表中删除HTML条目:

(delete '("\\.html?\\'" flymake-xml-init) flymake-allowed-file-name-masks)
Run Code Online (Sandbox Code Playgroud)

  • 虽然我不知道为什么,但是将行放在.emacs的末尾不会有错误。 (2认同)

yil*_*yin 6

好,我知道了.这就是我所做的:首先我发现了flymake.el文件.(如果你没有它,你可能在emacs安装下有flymake.elc文件.在这种情况下,只需在你的加载路径下复制flymake.el文件,这样它就会在insallation下使用而不是编译版本(.elc文件).比我发现以下功能并注释.xml和.html绑定.

(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)
    )
Run Code Online (Sandbox Code Playgroud)

其他评论outed线已经存在.现在,flymake不适用于html和xml文件