私は崇高なテキスト用のパッケージをいくつか開発しており、大量のコードをコピーして貼り付けるのを避けるために、クラスを別のファイルに移動し始めました。現在のワークフローでは、メインのプラグイン ファイルにないファイルへの変更は、保存時に更新されず、Sublime を再起動したときにのみ有効になるため、これまでのところこれを避けてきました。
Sublime Text を再起動せずに、すべてのファイルを含むパッケージをリロードする方法はありますか?
私は崇高なテキスト用のパッケージをいくつか開発しており、大量のコードをコピーして貼り付けるのを避けるために、クラスを別のファイルに移動し始めました。現在のワークフローでは、メインのプラグイン ファイルにないファイルへの変更は、保存時に更新されず、Sublime を再起動したときにのみ有効になるため、これまでのところこれを避けてきました。
Sublime Text を再起動せずに、すべてのファイルを含むパッケージをリロードする方法はありますか?
実際にエディターを再起動する必要はありません。これを利用するには、プラグインを再構築する必要があります。基本的に、最上位ファイルからプラグイン ファイルをロードできます。例として、 Package Controlを見てください。私はPersistentRegexHighlightでもそれを行います (ただし、パッケージ コントロール ソリューションはより堅牢である可能性があります (私はそれに基づいています)。特定のファイルを単純に保存するほどではありませんが、再起動するよりはましです!実際、おそらくon_post_save
子ファイルを変更するときに最上位ファイルを自動的に保存するイベント。
個人的に最も簡単な解決策は、Package Reloaderをインストールし、新しいファイルをプラグインの最上位ディレクトリに配置することであることがわかりました.build
。最上位のプラグイン ファイルを保存して、再起動する必要はありません。
コードの再構築はほとんど必要ありません。
非公式ドキュメントから:
Sublime Text は、パッケージが変更されると (おそらく .py ファイルを編集しているため)、トップレベルの Python モジュールをパッケージからリロードします。対照的に、Python サブパッケージは自動的に再読み込みされないため、プラグインの開発中に混乱を招く可能性があります。一般的に言えば、プラグイン ファイルに変更を加えた後に Sublime Text を再起動して、すべての変更を有効にすることをお勧めします。
残念ながら、プラグインはコンソール ( ) から見えるスコープに読み込まれないCtrl`ため、それだけではできませんreload()
。EDITただし、 @skurodaの回答で詳しく説明されているように、最上位のプラグインファイル内から呼び出すことができます。reload()
クラスを個別のファイルに分割するか、1 つのモノリシック コレクションにまとめておくかを決定する必要があります。50 個のファイルがあり、それぞれに関数定義が 2 つまたは 3 つしかないのは一方向ではやり過ぎですが、1 つのファイルに 10 個または 15 個のメソッドがすべて含まれる 20 個のクラスがあると、もう一方のファイルではやり過ぎになるため、特定のプロジェクトに最適な方法を実行してください。私の経験では、ST2 の強制終了/再起動は、サポートされているオペレーティング システムのいずれでも (何らかの理由で XP を除く) あまり時間がかからないため、ワークフローの遅延がそれほど大きくないことを願っています。起動時間が長すぎる場合は、追加のプラグインに最低限必要なものだけを含むポータブル インストールを作成することをお勧めします (Windows を使用している場合)。
幸運を!