2011-10-11 3 views
0

Flymake에서 작동하도록 JSHint를 얻으려고합니다.Emacs - JSHint와 함께 작동하도록 Flymake를 가져올 수 없습니다.

jshint은 실제로 /opt/bin에 설치되어 작동합니다. /opt/bin은 이맥스의 exec-path에 있습니다.

내가 the directions on the EmacsWiki을 따라이있는 한 내 init.el : 나는 자바 스크립트 파일을 열 때

(defun flymake-jshint-init() 
    (let* ((temp-file (flymake-init-create-temp-buffer-copy 
        'flymake-create-temp-inplace)) 
     (local-file (file-relative-name 
         temp-file 
         (file-name-directory buffer-file-name)))) 
    (list "jshint" (list local-file)))) 

(setq flymake-err-line-patterns 
     (cons '("^ [[:digit:]]+ \\([[:digit:]]+\\),\\([[:digit:]]+\\): \\(.+\\)$" 
       nil 1 2 3) 
      flymake-err-line-patterns)) 

(add-to-list 'flymake-allowed-file-name-masks 
      '("\\.js\\'" flymake-jshint-init)) 

, 내 modeline 줄은 다음과 같이 나타납니다

[(Javascript Flymake* AC)] 

* 보통 아무튼 때문 홀수 ' 내가 플라이 메이크를 C++이나 파이썬으로 사용할 때 나타납니다. Flymake 문서에 따르면 Flymake*은 "현재 Flymake가 실행 중입니다."라는 의미입니다. 그러나 Flymake는 오류를 표시하지 않습니다.

*Messages* 버퍼를 확인했지만 Fontifying foo.js... (regexps...................)의 몇 줄만 나열했습니다. 오류 없음.

기타 제안 사항?

답변

0

나는 jshint-mode이라는 프로젝트를 발견하고 그것을 시도했다. *jshint-mode*이라는 버퍼를 생성하여 JSHint가 강력한 모듈을 찾지 못했습니다.

나는 실행 M-X에서는 setenv 이맥스에서 그래서 그 jshint이 방대한 라이브러리를 찾을 수 NODE_PATH을 설정합니다. NODE_PATH/etc/profile으로 설정합니다.

1

을 사용하여 (setq flymake-log-level 3)을 실행하면 flymake가 디버그 정보를 *Messages*에 인쇄합니다.

Here's how I use flymake with jslint 나를 위해 잘 작동합니다.이 코드는 여러분에게 잘못된 점을 알려줍니다.

js2-mode 또한 외부 프로세스를 실행하지 않고도 언어를 인식하는 보풀 같은 경고를 제공합니다.

0

jshint-mode (Linux Mint 14 'Nadia'사용) - "flymake의 구성"으로 curl을 실행하면 jshint 스크립트를 실행하는 동안 오류가 발생합니다. 이것은 당혹스럽고,파일을 망쳐 버리는 ELisp에 익숙하지 않습니다.

나는 내장 (이 차례로 npm를 설치해야하는 npm -g install jshint으로 설치해야하는 대신 지금 jshint에 대한 지원을하고 GitHub의에서 이맥스 flymake project 포크로 바로 이동하여이 문제를 해결하고 경우에 피난처를 Node.js를 '이미). 이것은 일을 만들었습니다.

한 가지 더주의해야 할 점은 내 리눅스 박스에, node 이미 /usr/sbin에 존재하는 실행하고 있었고, 난 전자를 대체 할 /usr/local/binnode라는 이름의 심볼릭 링크를했습니다. Linux Mint 용 Node.js 바이너리 (아마도 Ubuntu뿐만 아니라, 내가 확인하지 않은)는 nodejs으로 대신 명명되었으며, 이진 이름이 node 인 것으로 가정하여 작성된 많은 스크립트가 실패하게됩니다.node을 입력하여 테스트 할 수 있습니다. 기존 바이너리 인 경우 일반적으로 자동으로 프롬프트에 반환하지만 Node.js 인 경우 >으로 메시지를 표시합니다 (Ctrl-D를 사용하여 종료 할 수 있음)