2012-03-19 10 views
2

thisフライメイクを動作させるためには、特別なターゲットをメイクファイルに追加する必要があります。私はこれをしたくありません。 Flymakeの代替手段はありますか?それはあなたがmakefileを使いこなす必要がありますか?メイクファイルを変更する必要のないフライメイクの代替品

+0

どのようにファイルの構文チェックを正しく行うかをこの代替方法で知りたいですか? – jtahlborn

+0

自動的に。実際のIDEで同じように動作します。例えば、独自の特別なmakefileを使用して、リポジトリの外にある独自の特別なフォルダに格納することができます。 – EpsilonVector

+2

既存の設定を使用してIDEで動作します。 Flymakeは_something_を実行して構文をチェックするためのフレームワークです。既存のMakefileを少し変更して使用する既存の「何か」があります。その「何か」として独自のスクリプトを簡単にプラグインして独自のカスタム設定を使用することができます(例:http://www.emacswiki.org/emacs/FlyMakeを参照)。 – jtahlborn

答えて

5

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

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

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

flylakeにCSSのlintエラーメッセージを解析する方法を教えてください。しかしそれは一般的な考えです。