Hatena::ブログ(Diary)

日記

2012-10-19

Windowsでシンボリックリンクを使っているときに設定ファイルがリロードされない(続き)

2012/10/21追記: この方法ではプラグインのリロードは反映されませんでした。なのでこの記事に書いてあることは間違いです。

なぜ反映されないかというと、TextCommandはコマンド実行時ではなく、Viewが新しく作られた時にインスタンスが作られるため、単にモジュールをリロードするだけでは反映されませんでした。

id:chikatoike:20121008 の続きです。

Sublime Text 2 がリロードしないよりも Dropbox が同期しないほうがより致命的なので、Dropbox 側に実体を置いて、Sublime Text 2\Packages\User にリンクを置くことにしました。

Sublime Text 2 のリロードに関しては以下のプラグインを作って、保存時に自動的にリロードされるようにしました。

これを適当なファイル名でUserディレクトリの下に置けば良いです。

このプラグインは、.py と .sublime-keymap で動作します。.sublime-keymap の方は、別ファイルの .sublime-keymap のタイムスタンプを更新することによりリロードさせています。 .sublime-settings も同じ方法でいけるかと思いましたが、リロードされませんでした。

.sublime-* というファイルは他にもいろいろありますが、とりあえず上記2つのみ対応しています。

NOTE:

このプラグインシンボリックリンクで作られたディレクトリ下のファイルをリロードするためのものです。普通のディレクトリ下のファイルを保存するときも動作しますがこちらは元々自動リロードされるので意味がありません。

ショートカットキーで外部コマンドを実行して結果を表示する (execコマンド)

Python の subprocess を使って自分で実行することもできますが、標準搭載の exec コマンドを使うのが簡単です。

.sublime-keymap に以下のように書きます。

[
    { "keys": ["alt+r"],
        "command": "exec",
        "args": {
            "cmd": "python --help"
        }
    }
]

この設定で altr+r を押すと、"python --help" を実行した結果が画面下部のパネルに表示されます。

[Decode error - output not utf-8] が出る場合

標準出力のエンコーディングutf-8 以外で日本語等を含む場合、上記エラーが表示されてしまいます。その場合は "args" に "encoding" を指定します。

[
    { "keys": ["alt+r"],
        "command": "exec",
        "args": {
            "cmd": "help.exe",
            "encoding": "cp932"
        }
    },
]