CudaText プラグイン: 「ディスクの勝利」 (外部変更時に自動リロードを強制)¶
CudaText には、ファイルが読み込まれた瞬間にサイレントにファイルをリロードする組み込みオプションがありません。 ディスク上の変更 — すべての組み込みの「ディスク上の変更」モードでは、引き続きいくつかの変更が表示されます。 リロード前のプロンプトの種類(モーダルまたはモーダルレス) (「default.json」の「ui_notif_confirm」を参照、値は「0」から「4」、すべて 聞く)。このプラグインはそのギャップを埋めます。ディスクは常に優先されます。プロンプトは一切表示されません。
ここにアーカイブされているため、誰もこのために CudaText プラグイン API を再派生する必要はありません
また。プラグイン自体の信頼できる情報源は次のとおりです。
このフォルダー内のcuda_disk_wins/。
何をするのか¶
開いているすべての名前付きファイルを 1 秒に 1 回ポーリングします (次のように構成可能) 「init.py」の「TIMER_INTERVAL」)。
ディスク上のファイルの mtime が変更された場合、プラグインはそれを再読み込みして呼び出します。
Editor.set_text_all()— 保存されていない変更を上書きします。 何も尋ねずにエディタータブ。その後「変更済み」フラグをクリアします (
PROP_MODIFIED = False)。 タブは何も分岐していないかのようにきれいに見えます。ベストエフォートにより、キャレットの位置と表示されている上部の行が復元されます。 リロードします。
Plugins → Disk Winsの下に 2 つのコマンドを追加します。自動リロードのオン/オフを切り替えます「今すぐチェック」 (手動ワンショットチェック)
設定ではなくプラグインを使用する理由¶
CudaText 独自のファイルウォッチャー (ui_notif) は、「ask」動作のみを提供します。
|
行動 |
|---|---|
0 |
モーダルなしのプロンプト、常に |
1 |
モーダルなしのプロンプト (エディターが変更された場合、または Undo が空でない場合) |
2 |
モーダルなしのプロンプト (エディターが変更された場合) |
3 |
モーダル プロンプト、常に |
4 |
モーダルプロンプト (エディターが変更された場合) |
「自動的にリロード、プロンプトなし、続行」を意味する値はありません。 したがって、この小さなプラグインは、独自のポーリング ループを実行してリロードします。 Python API を介して直接。
インストール¶
mkdir -p ~/.config/cudatext/py
cp -r cuda_disk_wins ~/.config/cudatext/py/
CudaTextを再起動します。
重要: また、CudaText 自体の変更通知ダイアログも無効にします。
プラグインと競合しません。で
~/.config/cudatext/settings/user.json:
{
"ui_notif": false
}
(UI の「オプション → 設定 – ユーザー設定」に相当します。) 再起動 この変更後に再び CudaText が使用されます。
注意事項¶
これは意図的に破壊的なものです。保存されていないエディターの編集は破棄されます。 ファイルが外部で変更された瞬間にサイレントに実行されます。それがすべてです プラグインのポイント — 時々保存しておきたい場合はインストールしないでください。 外部変更よりもローカル編集。
ファイルの mtime の変更にのみ反応します。エディタ自体に入力する リロードはトリガーされません (フィードバック ループはありません)。
ファイルが外部で削除された場合、プラグインは削除されるまで何も行いません。 再び表示されます (クラッシュやリロード試行の繰り返しはありません)。
エンコーディングは「PROP_ENC」経由で読み取られ、最も近い Python コーデックにマッピングされます。 まだ使用していないエンコーディングを使用する場合は、「init.py」の「ENC_MAP」を拡張します。 リストされています。
## 起源
「保存されていないエディターよりもファイルシステムの変更を常に優先する」ために構築されています
CudaText のセットアップ時に議論される「バッファ、確認なし」要件
Arch の yay -S cudatext-qt6-bin python 経由。