Кілька пакетів курсорів змушує Emacs працювати повільно


9

Я використовую пакет " Кілька курсорів" у файлі html, і для декількох курсорів це приголомшливо, але якщо я створюю більше 30 або 50 курсорів, він стає дуже повільним, і для переміщення курсорів потрібно приблизно п'ять-шість секунд.
Я неправильно використовую це чи просто, що він не готовий створити стільки курсорів ?.


2
Це залежить від того, що відбувається в буфері - деякі буфери просто складніші для множинних курсорів Магнара. Іноді я можу мати кілька сотень без значного уповільнення, а іноді просто кілька в (скажімо wdired-mode) викликає уповільнення. Існує запит на відкриту функцію - debbugs.gnu.org/cgi/bugreport.cgi?bug=22873 - для переміщення кількох можливостей курсору у вихідний код C, але наразі це все ще триває дискусія. Одним із запропонованих мною торгових точок для команди розробників Emacs було потенційне збільшення швидкості, якби воно було занесено до кодової бази С.
законник

3
Я не маю рішення, але хотів підтвердити таку ж повільність і для мене. Я не здивуюсь, якщо проблема простежується до проблем із блокуванням шрифту. Коли я відключаю блокування шрифту в усьому світі, курсори знову сприймаються.
Користувач Emacs

1
... в такому випадку кілька курсорів не спричинятимуть уповільнення безпосередньо (навіть якщо повільність виявляється лише фактором, коли ви його використовуєте). Я б M-x profiler-startі зробив купу повільних речей, а потім M-x profiler-reportі продовжую свердлити деталі , займаючи більшу частину процесорного часу, поки ви не зможете виділити його в якусь конкретну бібліотеку (якщо така є); то спробуйте вимкнути цю бібліотеку. Не забудьте зупинити профайлер, коли ви закінчите його.
філ

Відповіді:


5

Список незначних режимів, які не грають добре в режимі з декількома курсорами, можна встановити через mc/unsupported-minor-modes. Будь-які режими, додані до цього списку, будуть відключені при вході в режим декількох курсорів, вони будуть знову включені, коли ви вийдете з режиму декількох курсорів.

Ви можете додати елемент до цього списку так

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

Це робить велику різницю у чутливості режиму декількох курсорів. Я виявив, що два найменші режими, що мають найбільший вплив, були режим linum та flyspell.


Якщо хтось може спробувати і пояснити, чому flyspell робить все повільним (або дати стислий рецепт, щоб відтворити повільність за допомогою flyspell), можливо, ми могли б спробувати вирішити проблему.
Стефан

1
Я спробував проаналізувати повільність, але не зміг знайти жодної послідовної моделі. Якщо сказати, повільність, запроваджена flyspell, не надто погана, модуль, який я вважаю набагато гіршим, - це режим linum. Вимкнення режиму linum дозволило мені перейти від 30 курсорів одночасно до понад 600.
Чарльз Річі

Відтворюваний рецепт пішов би довгим шляхом.
Стефан

1
Дякую за допомогу !. здається, в цьому і була проблема. Режим введення з відступом і режим Лінум, де ті, які я повинен відключити (я відключив відступ-посібник і замінив Лінум на нінум). Тепер я маю змогу мати сотні курсорів без жодного відставання.
Fabman

0

... більше 30 або 50 курсорів стає жахливо повільним ....

Ось тимчасове рішення: відрегулюйте цю змінну

mc/max-cursors

до значення менше 30, як вирішення. За замовчуванням - нуль, що означає обмеження. Фактичне число для відновлення швидкості залежить від типу буфера, використовуваних шрифтів та того, що ще працює. У будь-якому випадку, про проблему, про яку ви виникли, широко повідомлялося.

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