2013-06-26 75 views
1

正如標題所示,當我在emacs中打開或保存文件時,它在hg repo中佔用的時間最多爲 3(請參閱底部的更新)秒打開文件。我在OS X上在固態硬盤和大量電源的Macbook視網膜上。打開一個非版本控制文件似乎是即時的。mercurial在打開/保存文件時會減慢emacs的死亡率

看着this question這與git是一樣的,我確定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-revisionvc-annotatevc-log-dir不斷和不希望禁用這些功能,但我不認爲任何這些應該需要find-file鉤。我不在乎我是否看不到狀態欄線指示狀態。谷歌搜索給了我幾個很好的建議。我不想一直手動啓用和禁用vc-mode,我希望儘可能自動。

謝謝!

更新:事實證明,大部分的問題是我使用的是mercurial extension,它是窯的一部分(kbfiles,see this)。事情仍然緩慢,但不那麼痛苦。我使用新號碼更新了上述elp配置文件

回答

1

確實,當打開文件時,爲了確定該文件是否確實處於Mercurial的控制之下,vc-hg.el正好運行hg status <file>。不知道爲什麼hg需要這麼長時間才能確定單個文件的狀態,但您可能需要M-x report-emacs-bug以便我們可以嘗試並至少提供一種解決方法。

+0

看到我上面的更新,事實證明,擴展正在放慢速度。我禁用了它,但事情似乎仍然緩慢,我要確保我在最新的emacs上,然後報告錯誤,謝謝! – stokastic