正如标题所说,当我在一个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-annotate
和vc-log-dir
,并且不想禁用这些功能,但我认为其中任何一项都不需要find-file
挂钩。如果我没有看到状态栏指示状态,我不在乎。谷歌搜索给了我一些很好的建议。我不想一直手动启用和禁用vc-mode
,我希望尽可能自动启用。
谢谢!
更新:事实证明,大多数问题都是我使用的mercurial扩展,它是窑的一部分(kbfiles,see this)。事情仍然缓慢,但不那么痛苦。我用新数字
更新了上面的elp配置文件答案 0 :(得分:1)
确实,vc-hg.el
在打开文件时只运行hg status <file>
,以确定文件是否确实在Mercurial的控制之下。不确定为什么hg
需要很长时间来确定单个文件的状态,但您可能希望M-x report-emacs-bug
以便我们可以尝试提供至少一种解决方法。