Альтернатива Flymake, которая не требует изменения make-файла - PullRequest
2 голосов
/ 19 марта 2012

Согласно этому вопросу, чтобы Flymake заработал, вы должны добавить специальную цель в make-файл. Я не хочу этого делать. Есть ли альтернатива Flymake, которая не требует от вас возиться с make-файлами?

1 Ответ

5 голосов
/ 26 марта 2012

Не верно.

Вам не нужно менять make-файл для запуска flymake. Как сказано в комментарии jtahlborn, flymake - это фреймворк для запуска что-то при изменении буфера. Это может быть что угодно. Вам просто нужно сказать Flymake, что бежать.

Например, есть программа csslint. Он проверяет файл CSS и помечает любые предупреждения или нестандартные использования. Lint для CSS. Когда я редактирую файл css (в режиме css), я хочу, чтобы flymake запустил CSSlint и показал мне проблемы. Вот как я это делаю.

(defun cheeso-flymake-css-init ()
  "the initialization fn for flymake for CSS"
  (let* ((temp-file (flymake-init-create-temp-buffer-copy
                       'cheeso-flymake-create-temp-intemp))
         (local-file (file-relative-name
                      temp-file
                      (file-name-directory buffer-file-name))))
    (list (concat (getenv "windir") "\\system32\\cscript.exe")
          (list "c:\\users\\cheeso\\bin\\csslint-wsh.js" "--format=compiler" local-file))))

(defun cheeso-css-flymake-install ()
  "install flymake stuff for CSS files."
  (add-to-list
   'flymake-err-line-patterns
   (list css-csslint-error-pattern 1 2 3 4))

  (let* ((key "\\.css\\'")
         (cssentry (assoc key flymake-allowed-file-name-masks)))
    (if cssentry
        (setcdr cssentry '(cheeso-flymake-css-init))
      (add-to-list
       'flymake-allowed-file-name-masks
       (list key 'cheeso-flymake-css-init)))))


(eval-after-load "flymake"
  '(progn
     (cheeso-css-flymake-install)))

Запускает fn при загрузке flymake. Fn устанавливает запись в ассоциативном списке flymake для файлов CSS. Запись в этом списке сообщает flymake, какую команду запустить.

Еще немного, чтобы рассказать flymake, как анализировать сообщения об ошибках CSS lint. Но это общая идея.

...