PyCharm 有个 Local History 功能,会自动记录一个文件的历史:
感觉可能挺有用的,不用太担心删除内容找不到了。
希望能有一个 Emacs 插件提供这样的功能,最后也像 PyCharm 有一个集中的数据库记录信息:
~ $ ls ~/Library/Caches/PyCharm2019.1/LocalHistory
changes.storageData changes.storageRecordIndex
~ $
不要创建一大堆文件,何时自动记录应该还能从 Emacs 的 Auto Save 汲取灵感。
emacs的backups就是干这个的,只要你不关,就会有5-6个版本保存。
emacs 自带的 undo 有一个我不太喜欢的地方,就是它的 undo 并不是像栈弹出那样把修改记录弹出,然后把 undo 之后新的记录压入栈,而是会把 undo 对 buffer 的修改一并记录下来。即 undo 并不是弹出而是压入。
让 undotree 支持跨 session 保存就可以。
emacs 虽然支持,可惜出错几率特别高。Vim 的 undotree 插件表现就让人很满意。
不过这是很久以前的事了,现在不知道改善了没。
1 个赞
undo tree不用session也会偶尔丢失历史
感觉主要的工作量是如何实现一个查看器。
记录修改历史本身不会很复杂,备份文件就好了,我想大概有两种方式:
1 增量备份
ver0 ---- ver1 ---- ver2 ... ---- verN
\ \ \
patch0-1 path1-2 patch(N-1)-N
查看 ver(N-1)
与 verN
的差异时,需要把之前所有的 patch 都应用上,时间换空间
2 全量备份
多占用一些空间,但是可以方便地查看任意版本之间的差异。如果想实现例如保留最后 xxx 次修改
也很容易,直接把旧的版本丢弃就可以了。
(setq undo-tree-auto-save-history t)
不能满足需求吗?
undo-tree.el开头的commentary讲得很好,可以看看
另外历史方面undo-tree已经做的很好了,可能只需要优化visualizer的ui就可以达到pycharm的效果
cireu
14
先把undo-in-region容易污染undo記錄樹的問題修了吧
似乎有人不滿undo-tree的體驗,重新造輪子了