这是我在.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")
我想只为.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调用。 )
答案 0 :(得分:23)
从列表中删除HTML条目:
(delete '("\\.html?\\'" flymake-xml-init) flymake-allowed-file-name-masks)
答案 1 :(得分:6)
好的,我明白了。这是我做的: 首先我找到了flymake.el文件。(如果你没有它,你可能在emacs安装下有flymake.elc文件。在这种情况下,只需在你的加载路径下复制flymake.el文件,这样它就会被用来代替编译版本( .elc文件)在insallation下)。 我找到了以下函数并注释了.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)
)
其他评论outed lines已经存在。现在,flymake不适用于html和xml文件
答案 2 :(得分:3)
在收到的错误消息中,它告诉它无法找到命令行XML验证工具xml
。您可以通过安装兼容的XML验证工具来修复它(我猜是xmllint
是正确的选择)。
但是,如果您真的只想禁用Flymake for HTML和XML文件,则无需复制整个flymake.el文件并进行更改。只需在初始文件中添加以下行:
(defun flymake-xml-init ())
这将覆盖Flymake使用空函数调用HTML和XML文件的函数。