จุด emacs (เคอร์เซอร์) ความล่าช้าในการเคลื่อนไหว


12

เมื่อทำงานprevious-line, C-pหรือ<up>เคอร์เซอร์กระโดดขึ้นบรรทัดโดยไม่มีปัญหาใด ๆ หรือล่าช้า เมื่อทำงานnext-line, C-nหรือ<down>เคอร์เซอร์ต้องกระโดดลงเส้น แต่มีความล่าช้าอย่างมีนัยสำคัญ เมื่อฉันกดปุ่มลงฉันไม่สามารถเห็นจุดที่กำลังเคลื่อนที่มันจะปรากฏที่ด้านล่าง ฉันวิ่ง Profiler Emacs cl-positionและดูเหมือนว่าผู้กระทำผิดเป็น สิ่งที่ได้ผลคือเป็นprevious-lineเพียงแค่เลื่อนเคอร์เซอร์ในขณะที่next-lineใช้งานฟังก์ชั่นมากมาย

เอาต์พุต Profiler

ปัญหาคืออะไรและจะแก้ไขอย่างไร


คุณกำลังใช้visual-line-mode? คุณมีเส้นที่ยาวมากไหม?
ดึง

ฉันไม่ได้ใช้visual-line-modeและฉันไม่มีเส้นยาว ๆ
Damian Chrzanowski

คำตอบ:


23

ฉันได้พบคำตอบสำหรับคำถามของฉันผ่านการแคบลงซุกซนและ googling ฉันจัดการเพื่อลดความล่าช้า 10 ครั้ง !!!! ฉันหมายความว่า .... มันบ้าไปแล้วในการคำนวณพลังที่next-lineใช้ในการเลื่อนเคอร์เซอร์ลง?!?!

การแก้ไข:

ใส่รหัสนี้ใน init.el ของคุณ: (setq auto-window-vscroll nil)

หลักฐาน:

Lag ลดลงอย่างมาก

ตอนนี้next-lineไม่ได้ทริกเกอร์line-move-partialจึงลดความล่าช้า ผมจำไม่ได้ตั้งค่าการauto-window-vscroll tมันไม่ได้อยู่ที่ใดใน.elไฟล์ของฉันฉันไม่แน่ใจว่ามันtจะเริ่มต้นอย่างไร ดังนั้นถ้าใครมีปัญหาเรื่องประสิทธิภาพของการเลื่อนเคอร์เซอร์การแก้ไขข้างต้นจะลดความล่าช้าจากเวลา 50% -80% cpu เหลือ 5% cpu time !!!

C-h v auto-window-vscrollได้อย่างรวดเร็วตรวจสอบว่าคุณได้รับผลกระทบเพียงแค่เรียกใช้ หากตั้งค่าไว้tคุณอาจประสบปัญหาประสิทธิภาพการทำงานที่สำคัญ ตรวจสอบกับผู้สร้างโปรไฟล์ Emacs หากการเคลื่อนไหวของเคอร์เซอร์ทำให้เกิดความล่าช้าอย่างแน่นอน

เพื่อนโชคดีที่สุดของ Emacs ผู้โชคดี !!!

ที่มาของการแก้ไข


โปรดพิจารณายื่นข้อผิดพลาด Emacs (หรือคำขอเพิ่มประสิทธิภาพ) M-x report-emacs-bugสำหรับเรื่องนี้:
ดึง

2
จะทำอย่างไรเพราะฉันเห็นว่านี่เป็นปัญหาสำหรับคนจำนวนมาก
Damian Chrzanowski

1
ขอบคุณเดเมียนมันปรับปรุงประสิทธิภาพ แต่ฉันก็ยังรู้สึกไม่ตอบสนองนิดหน่อย
Neeraj Verma

3

ฉันไม่แน่ใจว่าปัญหาคืออะไร แต่รายงานผู้สร้างโปรไฟล์ของคุณดูเหมือนจะระบุว่า posn-at-point ทำการแสดงซ้ำมากกว่าที่คาดไว้ซึ่งจะทำให้เกิดการคำนวณใหม่ของโหมดบรรทัดและ powerline นั้นควรพยายามจดจำมากขึ้น การคำนวณสำหรับ modeline

IOW ฉันขอแนะนำให้คุณM-x report-emacs-bugและคุณอาจรายงานข้อผิดพลาดไปยังผู้ดูแลระบบ powerline


0

ดูเหมือนว่าคุณกำลังใช้สายไฟฟ้า โดยเฉพาะอย่างยิ่งคุณจะแสดงชื่อโปรเจคโปรเจคในแบบจำลองของคุณ มีการปรับปรุงบางอย่างสำหรับแพ็คเกจ projectile เมื่อเร็ว ๆ นี้ซึ่งได้ลดบางอย่างลงไป ตรวจสอบให้แน่ใจว่าคุณมีข้อมูลล่าสุด

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

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

นอกจากนี้ยังสามารถบันทึกฟังก์ชันที่ modeline เรียกใช้ ฉันทำสิ่งนี้มากกับโมเดลของฉันเพื่อทำให้มันเร็วมาก


ปัญหาได้รับการแก้ไขแล้ว Projectile หรือ Power line ไม่ใช่ปัญหา
Damian Chrzanowski

ฉันดีใจที่คุณได้รับมัน โปรไฟล์ของคุณชี้ไปที่การชะลอตัวที่มาจากกระสุนปืน อาจเป็นได้ว่าการตั้งค่า auto-window-vscroll เป็นศูนย์เพียงแค่ทำให้ emacs ข้ามการคำนวณบรรทัดโหมดที่ไม่จำเป็น ไม่ว่าด้วยวิธีใดดีใจที่คุณได้รับมันเรียง!
Aaron Jensen

นั่นเป็นจุดที่ดี ฉันไม่มีเวลาตรวจสอบแพ็กเกจที่เป็นปัญหา ขอบคุณสำหรับคำแนะนำว่า!
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)ฉันจะเห็นการเคลื่อนไหวของเคอร์เซอร์เร็วขึ้นอย่างเห็นได้ชัด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.