正如标题所说,当我在 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 个人资料