2011-10-11 46 views
0

我試圖讓JSHint與Flymake一起工作。Emacs - 無法讓Flymake與JSHint一起工作

jshint確實安裝在/opt/bin並正常工作。 /opt/bin位於Emacs'exec-path

我已經按照the directions on the EmacsWiki在這個我​​:

(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)) 

當我打開JavaScript文件,我的模式行顯示爲:

[(Javascript Flymake* AC)] 

這很奇怪,因爲通常*沒有按」當我用C++或Python使用Flymake時,不會出現。根據Flymake文檔,Flymake*表示「Flymake目前正在運行」。但是,Flymake沒有顯示任何錯誤。

我檢查了*Messages*緩衝區,但它只列出了幾行Fontifying foo.js... (regexps...................)。沒有錯誤。

其他建議?

回答

0

我找到了一個名爲jshint-mode的項目並試過。它創建了一個名爲*jshint-mode*的緩衝區,它顯示錯誤:JSHint無法找到強大的模塊。

我跑M-X SETENV在Emacs設置NODE_PATH使jshint能找到強大的庫。我還在/etc/profile中設置了NODE_PATH

1

嘗試使用M-:執行(setq flymake-log-level 3),這將導致flymake打印調試信息爲*Messages*

Here's how I use flymake with jslint,它對我很好 - 這段代碼可能會給你一些關於你的錯誤的線索。

您可能還會考慮js2-mode,它提供了一些語言感知的絨毛般的警告,而不訴諸外部進程。

0

jshint-mode並沒有爲我工作(我使用Linux Mint的14「納迪婭」) - 我是越來越有「flymake的配置」的錯誤當它運行curl交談運行jshint腳本Node.js的實例。這是令人困惑的,我不熟悉ELisp去繞過.el文件。

我解決了這個由而是直接去github上的Emacs flymake project叉現在有jshint支持內置(需要安裝爲npm -g install jshint這反過來又要求你安裝npm和Node.js的,如果你的避風港已經)。這使事情工作。

還有一個警告:在我的Linux機器,node/usr/sbin已經存在的可執行文件,我不得不做出/usr/local/bin名爲node的符號鏈接覆蓋前者。這是必要的,因爲用於Linux Mint的Node.js二進制文件(可能還有Ubuntu,我沒有選中)被命名爲nodejs,而且會導致許多假設二進制名稱爲node的腳本失敗。你可以通過輸入node來測試它:如果它是預先存在的二進制文件,它通常會靜靜地返回到提示符,但是如果它是Node.js,它會提示你一個>(你可以按Ctrl-D退出)

相關問題