LINUX.ORG.RU

Зависание CUA в Emacs

 , ,


0

1

Если некоторое время работать в Emacs (с включенным CUA), то через некоторое время CUA начинает тормозить (при любом значении cua-prefix-override-inhibit-delay). А потом и вовсе повисать.

Выделил текст, нажал C-c. Текст не скопировался, выделение не исчезло. Т.е. Emacs находится в режиме бесконечного ожидания override key. Если нажать, например, любую клавишу движения курсора, то произойдет все необходимое: текст скопируется, выделение исчезнет, курсор переместится. Это ужасно раздражает.

Пробовать искать такое поведение с emacs -Q нет смысла, т.к. проблема возникает случайно и непредсказуемо через несколько минут/часов (как повезет) использования emacs. Отключать различные режимы после того, как такие зависания начались (искать виновного) тоже бесполезно - проблема сохраняется после отключения всех кастомных режимов.

Сейчас для меня это блокирующая функциональность более широкого использования Emacs.

Кто-нибудь сталкивался? Как дебажить? Если, что вполне возможно, проблема в .emacs/одном-из-расширений, то как найти сбойный модуль/фрагмент кода? Автоматическое редактирование (небольшой тест набросал: https://gist.github.com/kostafey/8594475) не приводит к появлению ошибки, только ручное редактирование.

UPD: Emacs 24.3.1. OS: обе Windows и Linux (одинаковая картина и там и там).



Последнее исправление: cetjs2 (всего исправлений: 5)

Скажу что да, какая-то фигня началась после какого-то обновления с транк'а. У меня это проявляется в том, что иногда нажимаешь ctrl+space и выделение не срабатывает(transient-mark-mode).

Bad_ptr ★★★★★
()
Ответ на: комментарий от Bad_ptr

Ну в 24.4 - вообще вкусности вроде (put 'step-forward-word 'CUA 'move) поламали. Правда 24.4 (вопреки новостям ЛОРа) еще не вышел, а в CUA сейчас много изменений вносится. Вот релизнется - будем смотреть. Я сижу на 24.3.1.

У меня это проявляется в том, что иногда нажимаешь ctrl+space и выделение не срабатывает

Все чудесатее... Вот как раз такого никогда не наблюдал. Впрочем, я предпочитаю несколько иной способ выделения текста: с шифтом и стрелками + поиск или мышкой. Но да не об этом разговор - на вкус и цвет...

Kostafey
() автор топика

Похожее было, когда в elpa валялись не удаленные версии плагинов (по незнанию на предложение удалить плагин-версия-ххх отвечал no - оказалось дело в параллельных версиях, переставил плагины и все заработало).

Почистить все.

swwwfactory ★★
()
Ответ на: комментарий от Kostafey

Спасибо, пробую... Правда две версии были только для одного плагина

тогда можно попробовать только их «почистить»

кроме elpa могут быть еще папки с плагинами в ~/.emacs.d но версиями вроде работает только elpa, хотя сходные проблемы можно ожидать и от elget и др.

swwwfactory ★★
()
Ответ на: комментарий от swwwfactory

Надо признаться, что ~/.emacs.d у меня вообще знатный зоопарк. Некогда я использовал elget, но потом перешел на elpa (не удалив до конца последствия использования elget). Ну и олимпион пакетов, установленных вручную как частично повтоярющих elpa/elget, так и уникальных. Впрочем, этот франкенштейн вполне себе успешно ползал и даже почти не глючил, а новой функциональности/изменения старой можно было добиться минимальными телодвижениями. Хотел и тут обойтись малой кровью.

Похоже, настало время капитальной чистки. Пошел ка я за вантузом...

Kostafey
() автор топика
Ответ на: комментарий от Kostafey

если elget нигде не грузится в стартовых файлах, то можно пока просто переместить папку (у него отдельный каталог вроде и ни с кем не пересекается). Вообще перед чисткой бекап ~/.emacs.d не помешает.

swwwfactory ★★
()
Ответ на: комментарий от swwwfactory

если elget нигде не грузится в стартовых файлах

Да, сейчас не грузится (как и ряд установленных вручную), но почистить все равно не лишне для порядка.

Вообще перед чисткой бекап ~/.emacs.d не помешает.

Спасибо, да. Собственно все необходимое и реально используемое в загрузке давно живет в системе контроля версий (как подмножество окружающего хаоса :))), но и там далеко не порядок.

Kostafey
() автор топика
Ответ на: комментарий от swwwfactory

что там нового слышно про «автоматизацию хаоса»? VCS?

Дак да, о нем и была речь.

Вообще, .emacs причесал, это само по себе хорошо, но проблему не решило.

Вообще складывается ощущение, что каким-то образом конфликтуют 3 пакета:

  • idle-highlight-mode
  • eldoc-mode
  • cua

Попробую для начала idle-highlight-mode отключить.

Kostafey
() автор топика
Ответ на: комментарий от Kostafey

eldoc-mode может играть такую роль

Если не поможет, придется цинично добавлять по пакету в нулевую конфигурацию (возможно, с рестартом)... Пришлось так делать когда-то в случае ecb и еще чего-то...пока не обнаружил виновника торжества...

cua-mode не замечал, если это относится к cua

highlight-mode то-же все ок у меня было с ним вроде...

swwwfactory ★★
()
Ответ на: комментарий от swwwfactory

eldoc-mode может играть такую роль

Сейчас он возглавляет список подозреваемых :)

Но жаль, eldoc прекрасен, а вот idle-highlight-mode может быть безболезненно заменен возможностями CEDET. В целом-то идея-то ясна. Виноват один из тех, кто работает в фоновом режиме, выполняя некоторую задачу через заданное количество долей секунды после последней команды. И кто-то входит с cua в бесконечный (либо длительный - до нескольких десятков секунд) конфликт. Эх, вот бы была человеческая многопоточность...

Если не поможет, придется цинично добавлять по пакету в нулевую конфигурацию (возможно, с рестартом)...

Да, конечно. Проблема в том, что я не могу сказать заранее, что сейчас, например, после очередного удаления, текущая конфигурация не имеет этой проблемы, т.к. проблема может не проявлять себя при сбойной конфигурации от нескольких минут до нескольких дней. А теперь помножим на количество плагинов (у меня в одном только elpa их 53)... короче в этом случае, в лоб проблема будет решается не оправдано долго...

Kostafey
() автор топика
Ответ на: комментарий от Kostafey

меня, когда допекло подвисание и рост cpu более >11% (сейчас 3-4-5-6% норма по atop) натравливал strace по пиду emacs. Выяснилось, что был чрезмерный опрос несуществующих сокетов (характерно для некоторых расширений, работающих с сервисами контроля версий), но толку мало - пришлось ручками по пакету ставить... Повезло: где-то в начале сразу выяснилось в чем дело...

Сейчас практически емакс не перегружаю, ставя апдейты плагинов типа helm, paredit и остальное... Практически редки были случаи, когда после апдейта приходилось делать рестарт емакса...

Юзай doxygen+doxymacs - частично скрасит сложности с документацией

swwwfactory ★★
()
Ответ на: комментарий от swwwfactory

меня, когда допекло подвисание и рост cpu более >11%

Сталкивался с чем-то подобным. magit может скушать всю память и порядка 10% CPU, если используя ее через прокси осуществлять синхронизацию с удаленным репозитарием. В случае с прокси push/pull нужно делать вручную.

но толку мало - пришлось ручками по пакету ставить...

Это крайняя мера, будем надеяться до этого не дойдет :)

Юзай doxygen+doxymacs - частично скрасит сложности с документацией

Сейчас использую babel из пакета org-mode (многие вещи еще не успел внести в документацию). Оно совсем неказисто получается? (https://github.com/kostafey/kostafeys-emacs-confik)

Kostafey
() автор топика

Ты же обещал в блоге описать, почему CUA лучше клавиатурных сочетаний Имакса. Статья появится вместе с наступлением Всемирного Коммунизма?

P.S. Поставил Firemacs для FF, доволен как слон)))

iVS ★★★★★
()
Ответ на: комментарий от iVS

Я помню про свое обещание. Но блог на блогспоте, а меня ломает клепать html. Хочу Octopress настроить - начал было, оказалось разбираться там чуть дольше чем планировалось. На рубях не писал, провозился с проблемами с зависимостями. Короче пока все заработало, истек квант времени, отведенный на это дело :).

Докучи еще эта бага упала - было как-то не по себе писать хвалебные деферамбы во славу CUA (пусть даже логически обоснованные и с описание всяких удобных финтов ушами), когда с ней такая проблема есть :).

Кстати о птичках, с отключенным idle-highlight-mode сутки нормального полета. Ждем еще.

Kostafey
() автор топика
Ответ на: комментарий от Kostafey

idle-highlight-mode

кстати и у меня оно есть. Тоже попробую отключить.

Bad_ptr ★★★★★
()
Ответ на: комментарий от swwwfactory

Нет. idle-highlight-mode - невиновен. Новый обвиняемый popwin.el. И глючит не только CUA, просто ей больше всех достается.

Вообще, а как понять какие процессы (например неотрубленные зависшие таймеры) сейчас работают в Emacs? Думаю, это сильно упростило бы задачу.

Kostafey
() автор топика
Ответ на: комментарий от Kostafey

Вообще, а как понять какие процессы

к сожалению это не эрланг, когда-то пробовал мониторить по strace - кроме попыток читать невалидные сокеты, ничего особенного не заметил, хотя потом поудалял и поотключал лишнее...

swwwfactory ★★
()
Ответ на: комментарий от swwwfactory

Посмотрел вывод strace - для меня это матрица. Но блондинок, брюнеток и рыжих, к сожалению, в ней различить не смог. Ждем Guile-Emacs :)

Пока тестирую без popwin.el.

Kostafey
() автор топика
Ответ на: комментарий от Kostafey

Но блондинок, брюнеток и рыжих, к сожалению, в ней различить не смог.

Есть только пип-шоу для членов клуба одиноких сердец:

 ps -wef|grep emacs
duser      17013  4210  1 Feb17 ?        00:09:05 /usr/bin/emacs
duser      25029  4904  0 13:47 pts/2    00:00:00 grep --colour=auto emacs
duser@tux ~ $ strace -c -p 17013
Process 17013 attached
^CProcess 17013 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 53.12    0.000034           2        20           stat
 46.88    0.000030           0       317       316 recvfrom
  0.00    0.000000           0        10           open
  0.00    0.000000           0        10           close
  0.00    0.000000           0        32           poll
  0.00    0.000000           0        22           rt_sigprocmask
  0.00    0.000000           0         1           rt_sigreturn
  0.00    0.000000           0        11           writev
  0.00    0.000000           0        17           pselect6
------ ----------- ----------- --------- --------- ----------------
100.00    0.000064                   440       316 total
у меня примерно такая картина как выше...

Что-ж, спросим кэпа (когда-нибудь заглянем в инструкцию :)): google: elisp debug emacs top

http://zvon.org/other/elisp/Output/SEC217.html

http://www.gnu.org/software/emacs/manual/html_node/elisp/Debugging.html

swwwfactory ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.