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」動作のみを提供します。

ui_notif_confirm

行動

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 経由。