55

通常,当我在 git 中切换分支时,如果文件在 emacs 中打开,那么即使内容相同,emacs 也会询问我是否要还原它们(因为它认为它们在磁盘上已更改)。

首先,如果磁盘上的内容与缓冲区中的内容相同,我想找到一种让emacs根本不问我的方法。

其次,我想要一个命令,它可以还原(不查询)我所有没有未保存更改的打开缓冲区,并询问我那些确实有未保存更改的缓冲区。

或者,我愿意接受有关我可以尝试的其他解决方案、工作方式等的建议。如果人们可以指点我从哪里开始,我会很高兴编写 emacs-lisp。

PS 如果这很重要,我在 OSX 上使用 Aquamacs。

编辑:

好吧,我发现 revbuffs 包几乎是我所需要的。当然足以阻止我想尝试自己写任何新东西。(我将 revbuffs 映射到 Cmd-R,效果很好。有点类似于其他 Mac 应用程序中的 Cmd-R)。

全局自动还原模式将是一个非常好的解决方案,我希望我可以选择两个答案。我更喜欢 revbuffs 仅仅是因为一种可能是非理性的想要控制所发生的事情的感觉。

我有点猜测,如果我从 emacs 中访问 git,那么它可能会更容易处理,但我目前更喜欢通过命令行访问 git。(我使用 emacs 的时间还不够长,无法将其作为我的操作系统)。不过,我会更彻底地调查 magit。

编辑2:

我已经使用 magit 一年了,强烈推荐它在 emacs 中处理 git。但是,每当我在 emacs 之外进行 rebase 时,我仍然使用 revbuffs。

4

3 回答 3

43

也许您想要全局自动恢复模式。尝试运行global-auto-revert-mode,如果你喜欢它,你可以添加(global-auto-revert-mode)到你的 ~/.emacs 文件中。

于 2009-03-20T11:43:54.873 回答
20

试试revbufs 包

revbufs.el是一个很小的 ​​Emacs 包,当您在 Emacs 中和通过外部工具(例如,代码生成器,如Jomtool)编辑文件时,它可以安全地恢复缓冲区...

于 2009-03-20T12:49:57.850 回答
11

Magit 包会在您激活时自动执行此操作magit-ionotify-mode(Linux 上的 inotify 需要 emacs 24.4)。你可以在这里找到它的描述。

于 2009-03-20T11:16:48.230 回答