[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