Открытие HTML-файла с помощью nXhtml приводит к ошибке с flymake

Когда я открываю HTML-файл с помощью emacs (и nXhtml,), я получаю следующую ошибку от flymake:

Ошибка (flymake): Flymake: не удалось запустить процесс проверки синтаксиса "xml" с аргументами (val /home/ABC/Downloads/capitals_flymake.html): поиск программы: такого файла или каталога нет, xml. Flymake будет выключен

Я предполагаю, что это означает, что мне нужно установить программу, которая может быть запущена из командной строки с xml, Однако я не смог выяснить, что это за программа в документации.

Я также в настоящее время использую следующую суть (с модификацией, предложенной одним из комментаторов для изменения equal в >=), чтобы отключить предупреждение об именах буферов Mumamo в моем .emacs:

;; 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.

2 ответа

Программа по умолчанию, которую flymake велит использовать (xml) не установлен на вашем компьютере или не находится на вашем пути. Вы должны указать flymake использовать другую проверку синтаксиса, как сказал @wvxvw (см. Их ответ для кода).

Однако, когда вы изменяете проверку синтаксиса, вам также может понадобиться сообщить flymake, как этот новый контролер будет выводить сообщения об ошибках, иначе flymake не будет знать, как прочитать выходные данные этой проверки.

Если ваша новая программа проверки имеет код выхода, отличный от 0 (который обычно указывает на ошибку) И flymake не видит ничего, что он распознал как текст ошибки, тогда flymake сгенерирует CFGERR и выключится.

Из руководства по изготовлению мухи:

Следующие ошибки вызывают предупреждающее сообщение и отключают режим flymake для буфера.

CFGERR: процесс проверки синтаксиса возвратил ненулевой код завершения, но об ошибках / предупреждениях не сообщалось. Это указывает на возможную ошибку конфигурации (например, нет подходящих шаблонов сообщений об ошибках для инструмента проверки синтаксиса)

Так что вам нужно сказать flymake, как интерпретировать ошибки из вашего обновленного парсера. Вы делаете это, добавляя выражение regex в список, который flymake будет проверять по сравнению с выводом вашего парсера. Добавьте что-то вроде этого в свой .emacs файл:

(add-to-list
    `flymake-err-line-patterns
    '("at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$" 2 1 nil))

Это тогда скажет flymake, что если ваш парсер сгенерирует вывод, соответствующий регулярному выражению ("at line \\([0-9]+\\) of \"\\([^ \n]+\\)\"$") идентифицировать его как сообщение об ошибке. 2 1 nil скажите flymake, какая группа в регулярном выражении представляет файл, номер строки и номер столбца соответственно. Если сообщение об ошибке не предоставляет эту информацию, установите для этого параметра значение nil, В этом примере сообщение об ошибке идентифицирует только файл (вторая группа) и номер строки (первая группа), поэтому для столбца установлено значение nil.

У меня есть это в моем .emacs для проверки в реальном времени XML и HTML, посмотрите, поможет ли это.

(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 что-то делает мухи.

Другие вопросы по тегам