Ответ 1
Извлеките HTML-запись из списка:
(delete '("\\.html?\\'" flymake-xml-init) flymake-allowed-file-name-masks)
Вот моя установка flymake в файле .emacs:
(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")
Я хочу использовать flymake только для .py файлов. и отключить его для остальных. но он всегда включен. Например, когда я открываю 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 и изменить вызов xml с помощью xmlstarlet, )
Извлеките HTML-запись из списка:
(delete '("\\.html?\\'" flymake-xml-init) flymake-allowed-file-name-masks)
ОК, я понял. вот что я сделал: в первую очередь, я нашел файл flymake.el. (Если у вас его нет, у вас, вероятно, есть файл flymake.elc под установкой emacs. В этом случае просто скопируйте файл flymake.el под свой путь загрузки, чтобы он использовался вместо скомпилированной версии (.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)
)
Другие строки с комментариями уже были там. Теперь flymake не работает для файлов html и xml
В сообщении об ошибке вы получите сообщение о том, что он не может найти инструмент проверки XML-команд командной строки xml
. Вы можете исправить это, установив совместимый инструмент проверки XML (xmllint
- правильный выбор, я думаю).
Но если вы действительно хотите отключить Flymake для файлов HTML и XML, вам не нужно копировать весь файл flymake.el и изменить его. Просто добавьте эту строку в файл инициализации:
(defun flymake-xml-init ())
Это переопределяет функцию, которую Flymake вызывает для HTML и XML файлов с пустой функцией.
Настроить переменную с именем flymake-allowed-file-name-masks
.
Вы тоже можете сделать это:
M-x customize-variable RET
flymake-allowed-file-name-masks RET