[devel] GNU Emacs load-path setting
Sergey Vlasov
=?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Чт Мар 27 20:59:08 MSK 2003
Hello!
У нас сейчас наблюдается некоторый бардак с настройкой load-path в
GNU Emacs.
С одной стороны, скрипты в пакетах, кладущиеся в
/etc/emacs/site-start.d, добавляют каталоги в load-path - и это само по
себе не вызывает проблем. Однако в GNU Emacs 21 при загрузке
используются файлы subdirs.el, в частности,
/usr/share/emacs/site-lisp/subdirs.el, где написано:
(if (fboundp 'normal-top-level-add-subdirs-to-load-path)
(normal-top-level-add-subdirs-to-load-path))
Функция normal-top-level-add-subdirs-to-load-path рекурсивно добавляет
все подкаталоги текущего каталога (в данном случае site-lisp) в
load-path. Таким образом, имеем две проблемы:
1) Если файл в /etc/emacs/site-start.d использует просто cons для
добавления к load-path, получаются дублирующиеся элементы в load-path.
В принципе это мелочь, но лучше использовать add-to-list.
2) Рекурсивное добавление всех подкаталогов site-lisp недопустимо -
некоторые пакеты содержат подкаталоги, файлы в которых пересекаются по
именам со стандартными файлами Emacs; такие подкаталоги не должны
попадать в load-path. В этих подкаталогах необходимо создать (пустой)
файл с именем .nosearch, чтобы запретить их добавление в load-path; см.
описание normal-top-level-add-subdirs-to-load-path.
Вообще, если мы не будем поддерживать GNU Emacs < 21, можно повыкидывать
из всех скриптов в /etc/emacs/site-start.d модификацию load-path.
--
Sergey Vlasov
Подробная информация о списке рассылки Devel