Emacs - nxhtml-режим - память заполнена

при работе с nxhtml-режимом в emacs у меня уже несколько недель возникают проблемы. Во время работы emacs неожиданно останавливается до тех пор, пока в строке режима не появится сообщение "!MEM FULL!"; очевидно, что nxhtml-режим заполняет память до тех пор, пока emacs не перестанет работать. Я работаю с файлами html, php и css.

Я понятия не имею, как я мог бы осмысленно отладить эту проблему. Кроме того, я, кажется, единственный, у кого есть эта проблема, потому что гугление не дало ответов на этот вопрос.

Я использую emacs 2.32 в системе Linux Mint 11. Не могу узнать версию nxhtml, пишет ревизия 829, загруженная с http://bazaar.launchpad.net/~nxhtml/nxhtml/main/revision/829.

Я настроил тестовый сценарий с минимальным количеством точек-emacs только для проверки режима nxhtml. Казалось бы, все в порядке, но это не отражает мою продуктивную установку. Вероятно, потребуется неделя или около того, чтобы постепенно включить все, что я использовал в emacs (например, org-mode), проверяя, не нравится ли что-либо nxhtml-mode, который вызывается в моем файле dot-emacs.

Есть ли другой способ? Могу ли я узнать, что вызывает перегрузку памяти? У кого-нибудь есть подобные проблемы с использованием nxhtml-режима?

Привет Мартин


person mbutz    schedule 28.06.2012    source источник
comment
Извините, это была опечатка, версия emacs: GNU Emacs 23.2.1 (i686-pc-linux-gnu, версия GTK+ 2.24.4)   -  person mbutz    schedule 28.06.2012
comment
Без дополнительной информации я не знаю, сколько помощи вы найдете здесь. Если вы сможете последовательно воспроизвести проблему и опубликовать необходимые сведения о настройке для других, чтобы создать ту же проблему, вы можете получить лучшие предложения.   -  person Tyler    schedule 28.06.2012
comment
Тайлер, спасибо за ответ. Да, я знаю, информация, которую я предоставил, довольно скудна. Проблема в том, что я не знаю, как получить больше. Единственное, что я замечаю, это то, что работая около одного или двух часов с emacs в nxhtml-режиме, внезапно появляются проблемы. Я не могу ни отследить его до конкретной команды редактирования, ни преднамеренно воспроизвести переполнение памяти. Я надеялся, что хоть кто-то подскажет, что я могу сделать, чтобы собрать более достоверную информацию. В любом случае, спасибо. Мартин   -  person mbutz    schedule 28.06.2012
comment
Кажется, это как-то связано с проверкой nxml. Emacs, по-видимому, пытается выполнить проверку и становится все медленнее и медленнее (строка режима указывает, например, на 80% проверки); через некоторое время память заполнится.   -  person mbutz    schedule 29.06.2012
comment
Кто-нибудь может подсказать, как работает валидация в nxml-режиме и что мне искать, чтобы решить проблему? Я могу воспроизвести переполнение памяти, отредактировав xhtml-файл и используя автоматический отступ (который, как я понимаю, запускает проверку). Emacs, кажется, может сделать это несколько раз, но через некоторое время становится все медленнее и медленнее, пока не останется памяти.   -  person mbutz    schedule 03.07.2012
comment
Хорошо. Возможно, этой информации еще недостаточно, но тестирование показало следующие результаты: Emacs зависает более-менее воспроизводимо через несколько минут использования nxhtml-режима при следующих действиях: (1) Использование команды Move by Tag › forward Balanced tag и удаление часть кода (2) выделение области › поиск строки (3) несколько действий редактирования с использованием команд-тегов Move by; последнее сообщение в минибуфере по схеме: /usr/share/emacs/23.2/etc/schema/xhtml.rnc. Уже. Поскольку xhtml-режим действительно великолепен, я бы не хотел использовать Geany или любой другой редактор вместо emacs.   -  person mbutz    schedule 03.07.2012


Ответы (1)


У меня такая же проблема с emacs 23.3. Недавно я перешел на версию 24.1, надеясь, что проблема исчезнет. Элас.

Поэтому я переключился на sgml-режим

(add-to-list 'auto-mode-alist (cons (concat "\\." (regexp-opt '("xml" "xsd" "xslt" "xsl" "html" "htm" "wsdl" "xml.template" "xhtml" "jsp") t) "\\'") 'sgml-mode))


(add-hook 'sgml-mode-hook
          '(lambda ()
             (sgml-electric-tag-pair-mode)))

На самом деле вы можете отключить проверку xml:

(setq rng-nxml-auto-validate-flag nil)

Я сделал это после ваших вопросов и комментариев, и с тех пор у меня нет проблем.

person Oleg Pavliv    schedule 10.07.2012
comment
Привет Олег, мне повезло с твоим ответом. По крайней мере, я знаю, я не один такой. Я начал находить nxhtml-режим действительно хорошим, но таким образом он практически непригоден для использования. Большое спасибо за совет sgml. Может тоже перейду. - person mbutz; 16.07.2012
comment
@mbutz Вы можете отключить проверку, если она вам не нужна. - person Oleg Pavliv; 01.10.2012