Emacs点(光标)移动滞后


12

运行时previous-lineC-p<up>光标跳到一行而没有任何问题或滞后。运行时next-lineC-n<down>光标会正确地跳下一行,但是会有很大的滞后。当我按下向下键时,我什至看不到该点在移动,它只是出现在下面的某个地方。我运行了Emacs分析器,看来罪魁祸首是cl-position。结果是,previous-line实际上只是移动光标,同时next-line运行许多功能。

探查器输出

问题是什么,如何解决?


您正在使用visual-line-mode吗?你有很长的线吗?
提请

我不使用visual-line-mode,没有长线。
Damian Chrzanowski

Answers:


23

通过缩小顽皮的位置并进行谷歌搜索,我找到了问题的答案。我设法减少了10倍的延迟!我的意思是.... next-line将光标向下移动多少运算能力真是太疯狂了!!?!

解决方法:

将此代码放入您的init.el中: (setq auto-window-vscroll nil)

证据:

滞后明显减少

现在next-line不触发,line-move-partial因此减少了延迟。我不记得设置auto-window-vscrollt。在我的任何.el文件中都没有,我不确定它是如何t开始的。因此,如果有人在光标移动方面存在性能问题,那么上述修复将把延迟从大约50%-80%cpu时间减少到5%cpu时间!

要快速检查您是否受到影响,请运行C-h v auto-window-vscroll。如果将其设置为t您可能会遇到主要的性能问题。使用Emacs探查器验证光标的移动确实确实导致了滞后。

祝你好运Emacs爱好者!!!

修复源


请考虑为此提交Emacs错误(或增强请求)M-x report-emacs-bug
提请

2
可以,因为我可以看到很多人都遇到了问题。
Damian Chrzanowski

1
谢谢,达米安(Damian),它提高了性能,但我仍然感到有些反应迟钝
Neeraj Verma

3

我不确定是什么问题,但是您的探查器报告似乎表明posn-at-point执行的重新显示比预期的要多,这反过来又导致了模式行的重新计算,而电力线应该花更多的精力来记住它对Modeline的计算。

IOW,我建议您M-x report-emacs-bug,您也可以向电力线维护人员报告错误。


0

看来您正在使用电力线。特别是,您将在modeline中显示射弹项目名称。最近对射弹包进行了一些改进,从而减轻了其中的一些影响。确保您是最新的。

https://github.com/bbatsov/projectile/issues/1212

https://github.com/bbatsov/projectile/pull/1213

还可以记住Modeline调用的函数。我已经在我的modeline上做了很多,以使其变得非常快。


这个问题已经得到解决,弹或电源线没有问题
达米安Chrzanowski

我很高兴您能解决这个问题。您的个人资料确实指出了射弹造成的减速。将auto-window-vscroll设置为nil可能导致emacs跳过不必要的模式行计算。无论如何,很高兴您能将其分类!
亚伦詹森

这是一个好点。我真的没有时间检查哪个软件包是问题所在。谢谢你的建议!
Damian Chrzanowski

0

我注意到我doom-modeline也为这一滞后做出了贡献。实际上,在文档中有这样说doom-modeline

 ;; If it brings the sluggish issue, disable `doom-modeline-enable-word-count' or
 ;; remove the modes from `doom-modeline-continuous-word-count-modes'.

设置之后,(setq doom-modeline-enable-word-count nil)我的光标移动得到了明显的加速。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.