ชุดเคอร์เซอร์หลายชุดทำให้ emacs ทำงานช้า


9

ฉันใช้แพ็คเกจหลายเคอร์เซอร์ในไฟล์ html และมันยอดเยี่ยมสำหรับเคอร์เซอร์สองสามตัว แต่ถ้าฉันสร้างเคอร์เซอร์มากกว่า 30 หรือ 50 เคอร์เซอร์มันจะช้ามากอย่างมากและใช้เวลาประมาณห้าหรือหกวินาทีในการย้ายเคอร์เซอร์
ฉันใช้มันผิดหรือเปล่าที่มันไม่ได้เตรียมไว้สำหรับการสร้างเคอร์เซอร์จำนวนมาก?


2
ขึ้นอยู่กับสิ่งที่เกิดขึ้นในบัฟเฟอร์ - บัฟเฟอร์บางตัวยากกว่าสำหรับเคอร์เซอร์หลายตัวของ Magnar บางครั้งฉันอาจมีสักสองสามร้อยโดยไม่มีการชะลอตัวที่สำคัญและบางครั้งก็มีเพียงไม่กี่อย่างที่wdired-modeทำให้ช้าลง มีการร้องขอคุณสมบัติแบบเปิดคือdebbugs.gnu.org/cgi/bugreport.cgi?bug=22873 - เพื่อย้ายความสามารถของเคอร์เซอร์หลายตัวลงในซอร์สโค้ด C แต่ยังคงมีการหารือกันอย่างต่อเนื่องในขณะนี้ หนึ่งในจุดขายของฉันที่เสนอให้กับทีมพัฒนาของ Emacs คือความเร็วที่เพิ่มขึ้นหากถูกอบเข้าฐานรหัส C
กฎหมาย

3
ฉันไม่มีวิธีแก้ปัญหา แต่ต้องการยืนยันความช้าเหมือนกันสำหรับฉันเช่นกัน ฉันจะไม่แปลกใจถ้าปัญหาถูกโยงไปถึงปัญหาการล็อคแบบอักษร เมื่อฉันปิดการล็อคแบบอักษรทั่วโลกเคอร์เซอร์จะกลายเป็นเร็วอีกครั้ง
ผู้ใช้ Emacs

1
... ซึ่งในกรณีนี้หลายเคอร์เซอร์จะไม่ทำให้ช้าลงโดยตรง (แม้ว่าความช้าจะกลายเป็นปัจจัยเมื่อคุณใช้มัน) ฉันจะM-x profiler-startทำสิ่งต่าง ๆ ช้า ๆ และจากนั้นก็ทำการM-x profiler-reportเจาะลึกลงไปในรายการใช้เวลาส่วนใหญ่ของ CPU จนกว่าคุณจะสามารถแยกมันออกเป็นบางไลบรารี (ถ้ามี); จากนั้นลองปิดการใช้งานไลบรารีนั้น อย่าลืมหยุดโปรไฟล์เมื่อคุณทำเสร็จแล้ว
phils

คำตอบ:


5

รายการของโหมดเล็ก ๆ น้อย ๆ mc/unsupported-minor-modesที่ไม่ได้เล่นได้ดีกับเคอร์เซอร์หลายโหมดสามารถตั้งค่าผ่านทาง โหมดใด ๆ ที่เพิ่มในรายการนี้จะถูกปิดใช้งานเมื่อเข้าสู่โหมดเคอร์เซอร์หลายโหมดพวกเขาจะเปิดใช้งานอีกครั้งเมื่อคุณออกจากโหมดเคอร์เซอร์หลายโหมด

คุณสามารถเพิ่มรายการลงในรายการนี้ได้

(add-to-list 'mc/unsupported-minor-modes 'flyspell-mode)

สิ่งนี้สร้างความแตกต่างอย่างมากต่อการตอบสนองของเคอร์เซอร์หลายโหมด ฉันพบว่าโหมดย่อยสองโหมดที่มีผลกระทบมากที่สุดคือโหมด linum และ flyspell


หากมีใครสามารถลองและอธิบายว่าทำไม flyspell ทำให้สิ่งต่าง ๆ ช้าลง (หรือให้สูตรสั้นกระชับในการทำซ้ำความช้าด้วย flyspell) บางทีเราอาจลองและแก้ไขปัญหาได้
สเตฟาน

1
ฉันพยายามที่จะโพรไฟล์ความช้า แต่ไม่สามารถหารูปแบบที่สอดคล้องกันได้ ที่กล่าวถึงความช้าที่แนะนำโดย flyspell ไม่เลวร้ายเกินไปโมดูลที่ฉันพบโดยที่แย่กว่านั้นคือโหมด linum การปิดโหมด linum ทำให้ฉันสามารถเปลี่ยนจากเคอร์เซอร์ 30 ตัวต่อครั้งเป็นมากกว่า 600
Charles Ritchie

สูตรที่ทำซ้ำได้จะไปไกล
สเตฟาน

1
ขอขอบคุณสำหรับความช่วยเหลือ!. ดูเหมือนว่านี่เป็นปัญหา Indent-guide-mode และ Linum-mode ที่คนที่ฉันต้องปิดการใช้งาน (ฉันปิดการใช้งานเยื้อง - คู่มือและแทนที่ Linum ด้วย nlinum) ตอนนี้ฉันสามารถมีเคอร์เซอร์ได้นับร้อยโดยไม่ล่าช้า
Fabman

0

... มากกว่า 30 หรือ 50 เคอร์เซอร์มันช้ามาก ๆ ....

นี่คือวิธีแก้ปัญหาชั่วคราว: ปรับตัวแปรนี้

mc/max-cursors

ค่าน้อยกว่า 30 เป็นวิธีแก้ปัญหา ค่าเริ่มต้นคือศูนย์ซึ่งหมายความว่าไม่ จำกัด จำนวนที่แท้จริงในการกู้คืนความเร็วขึ้นอยู่กับประเภทบัฟเฟอร์แบบอักษรที่ใช้และสิ่งอื่นใดที่กำลังทำงานอยู่ในขณะนั้น ไม่ว่าในกรณีใดปัญหาที่คุณพบมีการรายงานอย่างกว้างขวาง

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