CudaText 插件:“磁盘获胜”(外部更改时强制自动重新加载)¶
CudaText 没有内置选项可以在文件加载时以静默方式重新加载文件 磁盘上的更改 - 每个内置的“磁盘上更改”模式仍然显示一些 重新加载之前的提示类型(模态或无模态) (参见“default.json”中的“ui_notif_confirm”,值“0”-“4”,所有这些 问)。这个插件弥补了这一差距:磁盘总是获胜,永远没有提示。
存档于此处,因此无需为此重新派生 CudaText 插件 API
再次。插件本身的真实来源位于
cuda_disk_wins/ 在此文件夹中。
它的作用¶
每秒轮询每个打开的命名文件一次(可通过配置 “init.py”中的“TIMER_INTERVAL”)。
如果磁盘上文件的 mtime 发生变化,插件会重新读取它并调用
Editor.set_text_all()— 覆盖任何未保存的更改 编辑器选项卡,无需询问。之后清除“已修改”标志(
PROP_MODIFIED = False),因此 选项卡看起来很干净,好像没有任何分歧。尽力恢复插入符号位置和顶部可见线 重新加载。
在“插件→磁盘胜利”下添加两个命令:
打开/关闭自动重新加载-“立即检查”(手动一次性检查)
为什么是插件而不是设置¶
CudaText 自己的文件观察器(ui_notif)仅提供“询问”行为:
|
行为 |
|---|---|
0 |
无模式提示,始终 |
1 |
如果编辑器已修改或撤消不为空,则无模式提示 |
2 |
如果编辑器已修改,则无模式提示 |
3 |
模态提示,始终 |
4 |
模式提示,如果编辑器已修改 |
没有值表示“自动重新加载,无提示,继续”。 因此,这个小插件运行自己的轮询循环并重新加载 直接通过Python API。
## 安装
代码_块_0
重新启动 CudaText。
**重要:**还要禁用 CudaText 自己的更改通知对话框,以便
它不会与插件冲突。在
~/.config/cudatext/settings/user.json:
代码_块_1
(相当于UI中的“选项→设置-用户配置”。)重新启动 进行此更改后再次使用 CudaText。
注意事项¶
这是故意破坏性的:未保存的编辑器编辑被丢弃 文件在外部发生更改时会默默地进行。这就是整个 插件的重点 - 如果您有时想保留,请不要安装它 对外部更改进行本地编辑。
只对文件的修改时间做出反应;在编辑器中输入 不触发重新加载(无反馈循环)。
如果文件被外部删除,则插件不会执行任何操作,直到它被删除 重新出现(没有崩溃,没有重复的重新加载尝试)。
编码通过
PROP_ENC读取并映射到最近的Python编解码器; 如果您尚未使用编码,请扩展“init.py”中的“ENC_MAP” 列出。
## 起源
专为“总是喜欢文件系统更改而不是未保存的编辑器”而构建
设置 CudaText 时讨论的缓冲区,无需确认”要求
通过 Arch 上的 yay -S cudatext-qt6-bin python。