2012-03-19 3 views
2

Flymake가 작동하도록하려면 this 질문에 따라 특수 대상을 makefile에 추가해야합니다. 나는 이것을하고 싶지 않다. Flymake 대신 Makefile을 사용하지 않아도 될 대안이 있습니까?Flymake makefile을 변경하지 않아도되는 대안

+0

어떻게이 대체 방법으로 파일 구문 검사를 올바르게 수행 할 수 있는지 알고 싶습니까? – jtahlborn

+0

자동으로. 실제 IDE에서와 같은 방식입니다. 예를 들어 저장소의 외부에있는 고유 한 폴더에 저장된 자체의 특수 makefile을 사용할 수 있습니다. – EpsilonVector

+2

기존 구성을 사용하여 IDE에서 작동합니다. Flymake는 구문을 검사하기 위해 _something_을 실행하기위한 프레임 워크입니다. 사소한 변경으로 기존 Makefile을 사용하는 기존 "무언가"가 있습니다. 당신은 그 "뭔가"로 당신 자신의 스크립트를 쉽게 플러그인 할 수 있고 당신 자신의 커스텀 설정을 사용할 수있다. (여기의 예제를 보라 : http://www.emacswiki.org/emacs/FlyMake). – jtahlborn

답변

5

사실이 아닙니다.

flymake를 실행하기 위해 메이크 파일을 변경할 필요가 없습니다. jtahlborn의 의견에 따르면, flymake는 버퍼가 변경 될 때 something을 실행하는 프레임 워크입니다. 그것은 무엇이든 수 있습니다. 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))) 

플라이 메이크가로드 될 때 fn이 실행됩니다. fn은 flymake의 CSS 파일 연관 목록에 항목을 설치합니다. 이 목록의 항목은 flymake에게 실행할 명령을 알려줍니다.

플라이 메이크에게 CSS lint 오류 메시지를 구문 분석하는 방법에 대해 설명해 드리겠습니다. 그러나 그것은 일반적인 생각입니다.