Как я могу заставить emacs загружать nXhtml только тогда, когда открыты файлы php/html и не допустить его загрузки при запуске
Поэтому, чтобы оптимизировать время запуска emacs, я предпочитаю инкапсулировать все моды в ловушку или eval-after-load. Итак, я разобрался с python, cpp и latex, но застрял с nXhtml. Я попробовал следующее:
(eval-after-load "HTML-mode"
'(progn
(load-file "~/.emacs.d/plugins/nxhtml/autostart.el")
))
Который не работает вообще.
Код:
(add-hook 'html-mode-hook (lambda()
(progn
(load-file "~/.emacs.d/plugins/nxhtml/autostart.el")
)))
загружает некоторые части nXhtml, но режим nXhtml не включен (только SGML и AC), поэтому области не окрашиваются по-разному в моих источниках php, или автозаполнение / завершение скобок не работает.
Единственный способ, которым это работает должным образом, состоит в том, чтобы я позволил этому загружаться при запуске.
Глядя на трассировку, когда nxhtml загружается во время запуска, он говорит:
"majmodpri-apply-priority running ... (готово)"
Однако, когда загрузка инкапсулирована с помощью html-mode-hook или eval-after-load, трассировка говорит:
"majmodpri-apply-priority running ... MU:majmodpri-check изменение majmodpri-apply-priority: buffer=index.php, html-mode,nil => sgml-mode,nil majmodpri-apply-priority running ... ((сделанный)"
Есть идеи?
4 ответа
Я думаю, что файл автозапуска nXhtml (это все, что вы будете загружать) спроектирован так, чтобы быть достаточно минимальным, поэтому может быть так, что вы не сможете уменьшить его слишком сильно, не ограничивая некоторые его возможности?
Сколько времени это на самом деле занимает? Похоже, должно быть зарегистрировано сообщение "Nxml/Nxhtml Autostart.el загружено за%.1f секунд".
По факту html-mode
определяется в файле sgml-mode.el.
Так что вы eval-after-load
должно быть следующим
(eval-after-load "sgml-mode" (lambda ()
;;; code to load your nxhtml
))
Я только что объединил код операции, и он работает для меня:
(add-hook 'html-mode-hook (lambda()
(progn
(load-file "~/.emacs.d/vendor/~nxhtml/nxhtml/main/autostart.el")
)))
Я также использую nxhtml-mode для редактирования документов erb при программировании приложения ROR. Посмотрите на мою конфигурацию, это может вам помочь.
(autoload 'eruby-nxhtml-mumamo-mode "autostart.el" "Edit erb document." t)
(add-to-list 'auto-mode-alist '("\\.erb" . eruby-nxhtml-mumamo-mode))