spidermonkey 的 UTF-8 支援

JSLint 其實是用 javascript 寫的 javascript 語法檢查工具, jslint.vim 並沒有把它轉成 vim script ,而是呼叫 JS 引擎來跑 JSLint ,最好找的 JS 引擎就是 mozilla 的 spidermonkey ,很多 linux 有包好的套件,FreeBSD 也有 port ,不過實際上用的時候發現有個問題,就是不支援 UTF-8 字串,結果就是在 JSLint 的字元檢查時會把一些中文當成不安全字元,例如:「下」。

其實要 spidermonkey 支援 UTF-8 字串也不難,FreeBSD 的話在裝 port 時加個參數就可以了,OSX 的話把 MacPorts 更新到新版的再裝就可以了,Linux 的話就沒辦法用套件安裝,要自己抓來編, 1.7 的話要去修改 Makefile 讓 CFLAGS 加上 "-DJS_C_STRINGS_ARE_UTF8" 這個參數,或是參考 mongoDB 的作法,如果是 1.8 版的話有內建支援,不用修改 makefile,但是以後要執行的 js 檔案裡面都要先呼叫 JS_CStringsAreUTF8 這個函式,以 jslint.vim 來說就要加到 ~/.vim/plugin/jslint/runjslint.js 這個檔案。

其實要解決 UTF-8 問題還有其他方法,就是換其他的 JS 引擎,像是 Google V8 , 要用 V8 的話 編譯 時要編 developer shell ,產生的執行檔檔名叫 d8 ,弄個鏈結讓 js 這個指令可以執行就可以了,V8 直接支援 UTF-8 ,弄起來就可以用了,不用再去改其他東西,理論上速度應該也比較快吧,JSLint 都跑很快,無從比較XD。