MacのSublimeLinterで日本語エラーが出る症状を治す方法

 · 4 min read

こんにちは。
SublimeText2でSublimeLinterという構文チェックパッケージを使っているのですが、
いつからかアップデートがかかって、日本語を含むコードがエラーになってしまいました。

日本語というか、マルチバイト文字なんでしょうが、
この不具合がタチ悪いのが、コメントの中に日本語を含めてもエラーになります。

コメントの中に日本語を含めてもエラー

なんという英語養成ギブス。
日本のエンジニアの未来は明るいかもしれませんが、
日本語ゼロは不便なので直してみたいと思います。

なぜエラーが起こるのか

GithubのREADMEを読んだら書いてありました。

On Mac OS X, you must install Node.js if you plan to edit JavaScript or CSS files that use non-ASCII characters in strings or comments, because JavaScriptCore is not Unicode-aware.

どうやら、このエラーはMac+JavaScript時のみ発生する不具合のようです。
なぜjsだけダメなのかというと、
他の言語と異なり、Nodejsのコマンドラインは入っていない場合が多いため、
Nodejs依存ではなく、JavaScriptCoreというMacのデフォルトjsエンジンを使っているようです。

このJavaScriptCoreがマルチバイト文字に対応していないため、
非ASCII文字はエラーになるようです。

治らなかった対応策

Mac OS X + SublimeLinterでJavascriptの日本語エラーを回避する方法 | kwLog

「SublimeLinter 日本語」でググるとまずこの記事が出てくるのですが、
僕はこの記事の内容(Nodejsをインストールすれば勝手に治る)では治りませんでした。

もともとNodejsはインストールしてあったのですが、それが使われていない感じがします。
Nodejsが使われているなら日本語エラー出ないし。
ということで、インストール済みのNodejsを使うように切り替える設定がありそうだと思って探してみました。

治った対応策

解决Mac下SublimeLinter的Unsafe Characters警告 – 专注web前端开发

中国語は全く読めないのですが、タイトルに釣られて読んでみたら当たりでした。

設定>SublimeLinter>設定 - ユーザに以下を追加します。

“sublimelinter_executable_map”: {
“javascript”: “/Users/leon/.nvm/v0.10.8/bin/node” // which node
},

which nodeとコマンドを打って出てきたパスを設定するらしいです。

僕の場合boxen経由で入れているので、/opt/boxen/nodenv/shims/nodeでした。
これをパッケージのユーザ設定に追加します。

"sublimelinter_executable_map": {
    "javascript": "/opt/boxen/nodenv/shims/node"
}

保存してSublimeTextを再起動したら治りました!

コメントの中に日本語を含めてもエラーなし

Sublime Text2
© 2012-2021 Leko