Затримка руху точки вказівника (курсор)


12

При запуску previous-line, C-pабо <up>курсор стрибає вгору лінію без будь - яких проблем або затримок. При запуску next-line, C-nабо <down>курсор правильно стрибає вниз лінію, але зі значним відставанням. Коли я тримаю клавішу вниз, я навіть не бачу, як точка рухається, вона просто з’являється десь внизу. Я запустив профайлер Emacs і, здається, винуватець cl-position. Що це робиться, це те, що previous-lineбуквально просто переміщує курсор, next-lineвиконуючи цілу масу функцій.

Вихід Profiler

Що таке питання і як його можна виправити?


Ви використовуєте visual-line-mode? Чи є у вас дуже довгі рядки?
Дрю

Я не користуюся visual-line-modeі не маю довгих рядків.
Даміан Хрзановський

Відповіді:


23

Я знайшов відповідь на моє запитання через звуження неслухняного шматочка і гугла. Мені вдалося зменшити відставання на 10 ЧАСІВ !!!! Я маю на увазі .... Це божевільно, скільки обчислювальної потужності next-lineбуло використано для переміщення курсору вниз?!?!

Виправлення:

Введіть цей код у свій init.el: (setq auto-window-vscroll nil)

Доказ:

Відставання значно скоротилося

Тепер next-lineне спрацьовує, line-move-partialтому зменшення відставання. Я не пам’ятаю налаштування auto-window-vscrollна t. Це було ніде в жодному з моїх .elфайлів, я не впевнений, з чого він почав tпочинати. Отже, якщо у когось є проблеми з роботою щодо руху курсору, то вищевказане виправлення зменшить відставання з приблизно 50% -80% процесорного часу до 5% процесорного часу !!!

Щоб швидко перевірити, чи впливають на вас, просто запустіть C-h v auto-window-vscroll. Якщо це встановлено, у tвас можуть виникнути основні проблеми з продуктивністю. Переконайтесь у програмі Emacs, чи дійсно рух курсору викликає відставання.

Найкраще пощастить любителям Emacs !!!

Джерело виправлення


Будь ласка , розглянути питання про подання (запит або розширення) в Emacs про помилку для цього: M-x report-emacs-bug.
Дрю

2
Зрозумію, як я бачу, що це проблема для багатьох людей.
Даміан Хржановський

1
Дякую, Даміан, це покращує продуктивність, але я все ще відчуваю трохи невідповідальність
Нерадж Верма

3

Я не зовсім впевнений, у чому проблема, але ваш звіт про профілера, схоже, вказує на те, що posn-at-point виконує більше повторного відображення, ніж очікувалося, що в свою чергу викликає перерахунок лінії мод, і що силова лінія повинна докласти більше зусиль для запам'ятовування його обчислення для моделіну.

IOW, я пропоную вам, M-x report-emacs-bugі ви можете також повідомити про помилку в сервісах електропередач.


0

Схоже, ви використовуєте лінію електропередач. Зокрема, ви показуєте назву проекту снаряду у вашій моделі. Нещодавно відбулися деякі вдосконалення пакета снарядів, які дещо зменшили його. Переконайтесь, що ви в курсі.

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

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

Також можна запам'ятати функції, які викликає модельєн. Я зробив це багато на своїй моделі, щоб зробити це дуже швидко.


Проблема вже вирішена, снаряд або лінія електропередач не були проблемою
Даміян Хржановський

Я радий, що ти розібрався. Ваш профіль вказував на уповільнення, що надходило від снаряду. Можливо, встановлення функції auto-window-vscroll до нуля просто призводить до того, що Emacs пропускає непотрібні обчислення ліній в режимі. Будь-який спосіб, радий, що ви розібралися!
Аарон Дженсен

Це хороший момент. Я дійсно не встиг перевірити, в якому пакеті була проблема. Дякую за пропозиції!
Даміян Хржановський

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)я отримав помітне прискорення руху курсору.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.