SublimeLinterがVer.4になって動かなくなったので対応したよ


まえがき

Sublime Text3をメインエディタに開発してるんですが、
2018/03/05週(のどっか)でSublimeLinterがエラーになって動かず・・・・(´・ω・`)
その対応した内容を書きます。

原因

SublimeLinterのメジャーバージョンアップがされたためです。

この際、どうも設定ファイル(SublimeLinter.sublime-settings)の記載法も大幅に変わったようで、以前の設定ファイルがエラーとなり読み込めないことに。。。

まぁ、アップデートログとか出るけど読む人少なそうだし、バージョンアップを通知するにはいいかもしれんけどさ・・・・せめて設定例とかREADMEとかどっかに載せてほしかったなぁ・・・・(;´Д`)

対応

また使えるように対応していくわけですが、
問題は設定ファイルの記述法なので、たぶん再インストールは不要です。

・・・・や、色々やってる最中で再インストールも試したんで、全然確証がないですが・・・・(´・ω・`)
色々みて動かなかったらとりあえず再インストールするじゃないですか・・・・するよね・・・・?

もし↓の方法で出来ないようであれば、再インストールもしてみてください。。

設定ファイルを開く

まず、設定ファイルを開きましょう。

Preferences > Package Settings > SublimeLinter > Settings

すると、新しい設定ファイルが表示されます。
当然、右側に表示されるユーザー設定は空JSONです。。('A`)

旧設定ファイルを開く

次に、設定ファイルがあるディレクトリを確認しましょう。
以前の設定ファイルがSublimeLinter (old).sublime-settingsという名前で残っているハズです。

旧設定からトライ・アンド・エラー

この古い設定ファイルの中身をコピーして、空になってるユーザー設定へ貼り付けて保存します。
すると、たぶん↓のエラーがでます。

SublimeLinter: ERROR:

 Invalid settings in 'Packages/User/SublimeLinter.sublime-settings':
Additional properties are not allowed ('user' was unexpected)

以前は必ずついていた一番大きなくくりであるuserキー、これがまずエラーになります。。
・・・・大幅改修過ぎませんかね・・・・(;゚Д゚)

まぁ、エラーになったものは仕方ない。。
userキーをのぞいて1段下げて、再度保存。

SublimeLinter: ERROR:

 Invalid settings in 'Packages/User/SublimeLinter.sublime-settings':
Additional properties are not allowed ('wrap_find', 'tooltip_theme_excludes', 'rc_search_limit', 'show_errors_on_save', 'tooltip_theme', 'error_color', 'tooltips', 'warning_color', 'gutter_theme_excludes', 'mark_style', 'shell_timeout', 'python_paths', 'use_current_shell_path', 'tooltip_fontsize', 'passive_warnings' were unexpected)

(((( ;゚Д゚))))

・・・・とまぁ、こんな感じでひたすらエラーを潰します。

色々設定を書いてる人は大変かもしれんです。。(;・∀・)ガンバレ
自分の場合、設定ファイルをそんなにいじってなかったし、
linterspathsは新設定にも残ったままだったので、エラー箇所を消しただけ\(^o^)/

すべてのエラーを対応しきれば、以前のようにlintされるかと思います。

対応後

一応、自分が対応しおわた際の設定を・・・・サンプルは多い方がいい・・・・。

SublimeLinter.sublime-settings
{
    "debug": false,

    "delay": 0.3,

    "gutter_theme": "Danish Royalty",

    "linters": {
        "php": {
            "cmd": "C:\\php\\php.exe"
        }
    },

    "paths": {
        "linux": [],
        "osx": [],
        "windows": [
            "C:\\php\\",
        ]
    },

    "styles": [
        {
            "mark_style": "fill",
            "priority": 1,
            "scope": "region.yellowish markup.changed.sublime_linter markup.warning.sublime_linter",
            "icon": "warning",
            "types": [
                "warning"
            ]
        },
        {
            "mark_style": "fill",
            "priority": 1,
            "scope": "region.redish markup.deleted.sublime_linter markup.error.sublime_linter",
            "icon": "error",
            "types": [
                "error"
            ]
        }
    ],

    "syntax_map": {
        "html (django)": "html",
        "html (rails)": "html",
        "html 5": "html",
        "javascript (babel)": "javascript",
        "magicpython": "python",
        "php": "html",
        "python django": "python",
        "pythonimproved": "python"
    }
}

ほとんどそのままなんだけど、変えたところは以下です。

  • gutter_themeDanish Royaltyを設定。色々みたけど、これが見た目良さげだったので。

    • gutter_themeを使う場合はstyles.iconにはテーマのスタイルを入れる必要があるので注意。
    • この対応やってる間に再インストールした覚えがあるので、gutter_theme変える場合は気をつけて。
  • SublimeLinter-phpを使ってるので、linterspathsにその設定を記載。

    • lintersには実行ファイルのパスを、pathsには実行ファイルがあるディレクトリのパスを。
  • styles.mark_styleは、エラーになった箇所が目立つようにfillにしました。

あとがき

いままで動いていたものが急に動かなくなるってのは開発あるあるですが、
まさか設定ファイルの書き方が変わってると思わず、ちと時間がかかりました。。
一応ポップアップ(だったかな?)で設定ファイルが置き換えられたメッセージが出ていたので、
まだ気づくことが出来ただけよかったかな・・・・。