From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <3E6E1F05.2090504@yauza.ru> Date: Tue, 11 Mar 2003 20:38:13 +0300 From: "Pavel S. Khmelinsky" User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020606 X-Accept-Language: ru, en MIME-Version: 1.0 To: sisyphus@altlinux.ru Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Subject: [sisyphus] GNU emacs load-path variable: How it works Sender: sisyphus-admin@altlinux.ru Errors-To: sisyphus-admin@altlinux.ru X-BeenThere: sisyphus@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: sisyphus@altlinux.ru X-Reply-To: hmepas@yauza.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: В мастере есть емакс, к нему есть дополнения, например ecb. РПМка с дополнением содержит в себе файл, который прописывается в /etc/emacs/site-start.d для инициализации данного дополнения на стадии старта емакса. Часто этот файл просто содержит что-то вроде (setq load-path (append load-path '(" /usr/share/emacs/site-lisp/ecb/ecb.elc /usr/share/emacs/site-lisp/ecb/tree-buffer.elc /usr/share/info/ecb.info.bz2 Заглядываем в README этого пакета, видим там строчки ____________________________________ You MUST add the ECB-install-directory to the 'load-path' either by changing the 'load-path' variable directly in your .emacs or site-lisp/site-start.el or by working with a file subdirs.el. ________________________________________ Ага, это подтверждает мою гипотезу о переменной load-path. Вроде как добавим /usr/share/emacs/site-lisp/ecb в load-path и все у нас будет работать. Смотрим в /etc/emacs/site-start.d/ecb.el : (setq load-path (append load-path '("/usr/share/emacs/site-lisp/ecb"))) Т.е. работать все должно из коробки, переменная сама добавляется стартовым скриптом. Заходим в емакс, набираем C-h v load-path , и среди прочих директорий действительно видим нашу /usr/share/emacs/site-lisp/ecb . Что опять же доказывает то что все установленно правильно, /etc/emacs/site-start.d/ecb.el в момент старта отработал, переменную load-path настроил. Набираем M-x ecb-activate -- команда не найдена. Пробуем M-x load-file /usr/share/emacs/site-lisp/ecb/ecb.elc M-x ecb-activate получаем то что хотели. Выходит файлы из /usr/share/emacs/site-lisp/ecb не были загружены? Тогда зачем нужна эта переменная? И как вообще тогда работает добавление доп. пакетов? И все бы хорошо, да вот в том же README написано что способ загрузки a la load-file /usr/share/emacs/site-lisp/ecb/ecb.elc не правелен и надо настраивать именно через load-path..... Можно конечно в .emacs или тот же /etc/emacs/site-start.d/ecb.el добавить (load "/usr/share/emacs/site-lisp/ecb/ecb.elc") (load "/usr/share/emacs/site-lisp/ecb/ecb-buffertab.elc") (load "/usr/share/emacs/site-lisp/ecb/ecb-compilation.elc") и т.д все файлы из /usr/share/emacs/site-lisp/ecb/ Но, как мне видится, это не самый изящный способ. Может кто меня просветлит? Я вообще с емаксом только начал разбираться, может чего очевидного не вижу?