打开/保存文件时,mercurial会将emacs减速致死

时间:2013-06-26 15:08:10

标签: emacs mercurial

正如标题所说,当我在一个hg仓库中的emacs中打开或保存文件时,打开文件需要几秒钟的 7 3(请参阅底部更新)。我在OS X上的Macbook视网膜上具有固态和充足的功率。打开非版本控制的文件似乎是即时的。

查看git相同的this question,我确定vc-call-backend占用了大部分时间。这是一个查找文件的elp配置文件:

function                                    call count        total time    avg time
find-file                                         1           3.043015      3.043015
vc-call-backend                                   12          2.222802      0.1852335000
vc-find-file-hook                                 1           1.117738      1.117738
vc-hg-state                                       2           0.8375429999  0.4187714999
vc-mode-line                                      1           0.691795      0.691795
vc-default-mode-line-string                       1           0.691761      0.691761
vc-backend                                        1           0.42589       0.42589
vc-registered                                     1           0.425868      0.425868
vc-hg-registered                                  1           0.424229      0.424229
vc-state                                          1           0.413661      0.413661
vc-state-refresh                                  1           0.413652      0.413652
vc-default-state-heuristic                        1           0.413626      0.413626
vc-working-revision                               1           0.278064      0.278064
vc-hg-working-revision                            1           0.27795       0.27795

... (I cut everything below this line, all ran very quickly)

在这个存储库中,从命令行运行hg status需要将近4秒(它很大),所以我的理论是emacs正在查询状态,因此它可以显示一些内容。

所以我真正的问题是如何在不完全禁用vc-mode的情况下减轻痛苦。我经常使用ediff-revision vc-annotatevc-log-dir,并且不想禁用这些功能,但我认为其中任何一项都不需要find-file挂钩。如果我没有看到状态栏指示状态,我不在乎。谷歌搜索给了我一些很好的建议。我不想一直手动启用和禁用vc-mode,我希望尽可能自动启用。

谢谢!

更新:事实证明,大多数问题都是我使用的mercurial扩展,它是窑的一部分(kbfiles,see this)。事情仍然缓慢,但不那么痛苦。我用新数字

更新了上面的elp配置文件

1 个答案:

答案 0 :(得分:1)

确实,vc-hg.el在打开文件时只运行hg status <file>,以确定文件是否确实在Mercurial的控制之下。不确定为什么hg需要很长时间来确定单个文件的状态,但您可能希望M-x report-emacs-bug以便我们可以尝试提供至少一种解决方法。