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)仅提供“询问”行为:

ui_notif_confirm

行为

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