1

正如标题所说,当我在 hg repo 中的 emacs 中打开或保存文件时,打开文件最多需要7 3 秒(参见底部的更新)。我在 Macbook 视网膜上使用 OS X,它具有固态和强大的功能。打开非版本控制文件似乎是即时的。

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

函数调用计数总时间平均时间
查找文件 1 3.043015 3.043015
vc-call-backend 12 2.222802 0.1852335000
vc-find-file-hook 1 1.117738 1.117738
vc-hg-状态 2 0.8375429999 0.4187714999
vc-mode-line 1 0.691795 0.691795
vc-default-mode-line-string 1 0.691761 0.691761
vc-后端 1 0.42589 0.42589
vc 注册 1 0.425868 0.425868
vc-hg-注册 1 0.424229 0.424229
vc 状态 1 0.413661 0.413661
vc 状态刷新 1 0.413652 0.413652
vc-default-state-heuristic 1 0.413626 0.413626
vc-working-revision 1 0.278064 0.278064
vc-hg-工作修订版 1 0.27795 0.27795

...(我把这条线以下的所有东西都剪掉了,都跑得很快)

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

所以我真正的问题是如何在不完全禁用的情况下减少这种痛苦vc-mode。我经常使用ediff-revision vc-annotate并且vc-log-dir不想禁用这些功能,但我认为这些功能中的任何一个都不需要find-file钩子。我不在乎是否看不到指示状态的状态栏行。谷歌搜索给了我一些好的建议。我不想一直手动启用和禁用vc-mode,我想要尽可能自动的东西。

谢谢!

更新:事实证明,大部分问题都出在我使用的一个 mercurial 扩展上,它是 kiln 的一部分(kbfiles,见这个)。事情仍然很缓慢,但不那么痛苦。我用新号码更新了上面的 elp 个人资料

4

1 回答 1

1

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

于 2013-06-27T15:10:30.030 回答