cxasm / notepad--

一个支持windows/linux/mac的文本编辑器,目标是做中国人自己的编辑器,来自中国。
GNU General Public License v3.0
6.34k stars 248 forks source link

从 2.11 版本开始到目前的 2.15 文件被外部修改弹窗提示一直存在问题。 #357

Open msherrys opened 6 months ago

msherrys commented 6 months ago

2.10 时文件被修改不管多少次,都会有弹窗提示。 2.11 后到 2.15 开始要不就是外部修改没有提示,要不就只是提示一次,如果文件在外部被第二次修改以上,那么就会一直不会新的弹窗提示。一直保持都是旧文件的打开状态。

ghost commented 6 months ago

I have reported the very same thing: https://github.com/cxasm/notepad--/issues/321

cxasm commented 6 months ago

2.15 只有当窗口获取焦点时,才会弹出“文件已经被修改”的提示。

之前有其他人提过改进意见,说ndd在后台或最小化时,当前失去活动焦点,其打开的文件被外部修改后,也会直接弹出,打断了用户目前在其他软件中的操作,觉得很烦,所以提了这个bug。我看过,觉得该用户说的有些道理。

2.15 修改后的逻辑是:在当前窗口编辑窗口活动激活焦点的一瞬间,如果文件之前被外部修改,则会弹窗提示;之前没有活动焦点时,这个感知已经获取,但是不提示。另外就是,多次修改触发,其实ndd内部是多次感知了的,只是没有提示,最后用户同意更新的一瞬间,文件是重新加载了的,所以最终文件将是最新的状态。

每个用户的习惯不一样,这里也没有绝对的正确或错误,我会选择其中逻辑上更加合理的建议。

cxasm commented 6 months ago

I have reported the very same thing: #321

我已经把选择权交给了用户,更新或不更新是用户自己知道的,所以文件不会标识为“已修改”,后续用户需要自己F5去重加载文件。 如果已经外部修改的文件,其修改状态和保存按钮放开,则是危险的!因为当前编辑文件和磁盘中文件的内容已经不一样,此时保存文件会导致文件内容覆盖的危险。详细技术细节不多讨论,每时每刻最好只有一个程序在修改软件,这是简单而且不容易出错的办法,有时候灵活代表着引发混乱,不一定是好事。

msherrys commented 6 months ago

你说的把选择交给用户,我是非常认同的。

所以当我在设置里面选择了,外部修改时,弹出提示。 那么这就是我需要的选择。当打开中的文件再次获取到焦点时,那么理应弹出提示(这个是我需要的设置)。当然如果不需要的用户可以设置里取消。 那么这才是把选择交给用户对吧。

如果觉得需要更细致的,比如你说的情况,那么可以在设置多一个关于此是后续否继续弹窗的选择。依然如你所说,应该交给用户选择,那么我建议应该多一些可选项给到部分用户。

我既然打开这个文件,选择了外部有修改弹窗,那么就等同于,我是需要监控到比如此配置文件,是否为最新的一个状态。如果需要按 F5 才能或许到最新时,那么就与我需要的这个功能相背。(这也是绝大多数文本编辑器的正常逻辑)。

当然我尊重其他用户提的意见,那么还是希望作者,可以通过不同的选项,来满足不同的用户。而不是为了满足某部分,却忽略了需要这个功能的一般逻辑性。

cxasm commented 6 months ago

你说的把选择交给用户,我是非常认同的。

所以当我在设置里面选择了,外部修改时,弹出提示。 那么这就是我需要的选择。当打开中的文件再次获取到焦点时,那么理应弹出提示(这个是我需要的设置)。当然如果不需要的用户可以设置里取消。 那么这才是把选择交给用户对吧。

如果觉得需要更细致的,比如你说的情况,那么可以在设置多一个关于此是后续否继续弹窗的选择。依然如你所说,应该交给用户选择,那么我建议应该多一些可选项给到部分用户。

我既然打开这个文件,选择了外部有修改弹窗,那么就等同于,我是需要监控到比如此配置文件,是否为最新的一个状态。如果需要按 F5 才能或许到最新时,那么就与我需要的这个功能相背。(这也是绝大多数文本编辑器的正常逻辑)。

当然我尊重其他用户提的意见,那么还是希望作者,可以通过不同的选项,来满足不同的用户。而不是为了满足某部分,却忽略了需要这个功能的一般逻辑性。

下来会继续看看,这地方意见分歧很大。 后续版本可能增加一个选项,来控制是激活时提示,还是一直提示。