2

この質問によると、Flymakeが機能するには、makefileに特別なターゲットを追加する必要があります。私はこれをしたくありません。makefileをいじる必要のないFlymakeの代替手段はありますか?

4

1 に答える 1

5

違います。

flymakeを実行するためにmakefileを変更する必要はありません。jtahlbornのコメントが言ったように、flymakeは、バッファが変更されたときに何かを実行するためのフレームワークです。それは何でもかまいません。何を実行するかをflymakeに指示するだけです。

たとえば、csslintというプログラムがあります。CSSファイルをチェックし、警告や非標準の使用法にフラグを立てます。CSSのLint。(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)))

これは、flymakeがロードされたときにfnを実行します。fnは、CSSファイルのflymakeの関連付けリストにエントリをインストールします。そのリストのエントリは、flymakeに実行するコマンドを指示します。

flymakeにCSSlintエラーメッセージを解析する方法を伝える方法はもう少しあります。しかし、それが一般的な考え方です。

于 2012-03-26T05:00:08.050 に答える