Zufu Liu
Zufu Liu
What's the steps (which character typed, which key pressed) to reproduce the undesired caret position?
The difference between VS Code and Notepad2: ``` window mode caret is always at the end of composition string Notepad2 inline mode put caret at the end of composition string...
菜单 -> 设置 -> 文件变更通知
在 文件变更通知 对话框里面选择 “显示消息”,默认是重现加载。
现在默认的 "自动重新加载(如未修改)" :打开的文件如果没有在Notepad2中编辑,直接重现加载,否则询问是否重新加载(第二项:显示消息)。
INI 需要手动编辑的只有 [Settings2] 和 [Toolbar Images],其他都可以在Notepad2里面设置。Settings2有些可以在程序里面设置。程序的INI文件应该只在启动的时候加载了,取消 菜单 设置 -> 退出时保存设置 不会影响编辑的INI。 搞错了,你是编辑WinCMD.ini。
我觉得你是希望重新加载文件的时候保留之前的编辑历史,你可以把`EditSetNewText()`函数里面的两行`SciCall_EmptyUndoBuffer();`注释掉看看, https://github.com/zufuliu/notepad2/blob/master/src/Edit.c#L131 这样做有个问题:UndoBuffer 里面记录的位置可能和重新加载以后的文件不一样,比如加载前你在第一行写了个1,加载后这一行变成了第二行,执行Undo会修改第一行不是第二行。 我觉得真正靠谱的办法:把WinCMD.ini加到git仓库里面,每次测试之前提交,然后测试,。。。
我觉得简单的改法:把“文件变更通知”改成: 1. 无 2. 显示消息 3. 自动重新加载 4. 文件内容改变后自动重新加载 这样勾选4的时候,如果文件内容和内存里面一样,就不重新加载,编辑历史还在;而勾选3(当前默认)的时候,文件修改时间变化后也自动加载(不论文件内容是否改变)。
没有好的思路,你可以调一下 Notepad2.c 里面的代码。`IsCurrentFileChangedOutsideApp()` 通过文件长度和修改时间判断文件是否被修改,`case APPM_CHANGENOTIFY` 处理是否重新加载。
You don't need to replace Windows notepad. https://github.com/zufuliu/notepad2/wiki/Open-with-Notepad2 https://github.com/zufuliu/notepad2/wiki/Command-Line-Switches