А как определить из стартап-скриптов, установлен ли тот или иной пакет?
Видимо, это должна быть какая-то проверка вида
(if (boundp '....)) (или не boundp, а fboundp или featurep), но что, в
максимально общем случае? Пытаюсь проверить наличие, скажем, ispell или
doxymacs.
Show replies by thread
intro: "AM" == Alexey Morozov <morozov(a)novosoft.ru> writes:
AM> А как определить из стартап-скриптов, установлен ли тот или иной пакет?
AM> Видимо, это должна быть какая-то проверка вида (if (boundp '....)) (или
AM> не boundp, а fboundp или featurep), но что, в максимально общем случае?
AM> Пытаюсь проверить наличие, скажем, ispell или doxymacs.
При старте XEmacs пробегает по дереву пакетов и добавляет каталоги с lisp
файлами в load-path. Поэтому можно попробовать такую функцию:
(defun package-installed-p (name)
"Test whether a package name NAME is installed in the system.
NAME is actually a regular expression. The function returns the first package
that matches NAME or nil if no matches found."
(let ((last-name nil))
(dolist (dir load-path)
(setq dir (file-name-as-directory dir))
(setq last-name (file-name-nondirectory (directory-file-name dir)))
(when (string-match name last-name)
(return last-name)))))