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