При запуске previous-line
, C-p
или <up>
курсор прыгает вверх линию без каких - либо проблем или задержек. При запуске next-line
, C-n
или <down>
курсор правильно прыгает вниз линию, но со значительным отставанием. Когда я держу клавишу «вниз», я даже не вижу движущейся точки, она просто появляется где-то внизу. Я запустил профилировщик Emacs, и кажется, что виновник есть cl-position
. То, что получается, это то, что previous-line
буквально просто перемещает курсор, в то время как next-line
выполняет множество функций.
В чем проблема и как ее можно исправить?
visual-line-mode
? У тебя есть очень длинные очереди?visual-line-mode
и у меня нет никаких длинных очередей.Ответы:
Я нашел ответ на свой вопрос, сузив порочный круг и погуглив. Мне удалось сократить отставание в 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 !!!
Источник исправления
источник
M-x report-emacs-bug
.Я не совсем уверен, в чем проблема, но ваш отчет профилировщика, кажется, указывает, что posn-at-point выполняет больше повторного отображения, чем ожидалось, что, в свою очередь, вызывает пересчет строки режима, и что powerline должен приложить больше усилий для запоминания его расчет для моделин.
Итак, я предлагаю вам,
M-x report-emacs-bug
и вы также можете сообщить об ошибке в службу поддержки Powerline.источник
Похоже, вы используете Powerline. В частности, вы отображаете имя проекта снаряда в вашей моделине. В последнее время в пакет снарядов были внесены некоторые улучшения, которые смягчили некоторые из них. Убедитесь, что вы в курсе.
https://github.com/bbatsov/projectile/issues/1212
https://github.com/bbatsov/projectile/pull/1213
Также возможно запоминать функции, которые вызывает моделин. Я сделал это много на моей моделине, чтобы сделать это очень быстро.
источник
Я заметил, что мой
doom-modeline
также способствует отставанию. На самом деле, в документе сказаноdoom-modeline
:После настройки
(setq doom-modeline-enable-word-count nil)
я получил заметное ускорение движений курсора.источник