Понимание того, какой режим Python загружается emacs/Aquamacs и почему

У меня есть emacs 24.1.1, который поставляется с GNU python.el в байтовой компиляции в emacs/24.1/lisp/progmodes.

Я скачал python.el Фабиана Галлины (обратите внимание на то же имя) и поместил его в emacs/site-lisp, который является частью пути загрузки emacs.

Когда я редактирую файл Python, загружается режим Gallina, а НЕ режим GNU. Однако я не поместил (требовать «python») в свой файл .emacs, несмотря на то, что предлагает документация Gallina.

Почему это? Почему python.el Галлины имеет приоритет над GNU? Почему он загружается без (требуется «python»)?


person Dan    schedule 09.07.2012    source источник


Ответы (2)


Большинство библиотек, которые вы используете в Emacs, не загружаются при запуске Emacs. Они загружаются автоматически, см. руководство.

Если вы посмотрите на свою переменную load-path, вы увидите, что site-lisp предшествует собственным библиотекам Emacs. Поэтому, когда Emacs загружает "python.el", он сначала находит вашу версию.

Обратите внимание, что если вы выполните C-h f python-mode перед выполнением команды, вы фактически увидите описание версии команды Emacs. Это неприятный побочный эффект выбора автором одного и того же имени файла.

После того, как вы запустите python-mode один раз, текст справки изменится, чтобы показать вашу версию.

person event_jr    schedule 09.07.2012
comment
Спасибо! Итак, чтобы уточнить: внутри emacs автоматически загрузил функцию python-mode, определенную в python.el, и установил хук, чтобы функция вызывалась для файлов, оканчивающихся на .py. Но, поскольку я поместил другой файл python.el (определяющий ту же функцию) в путь загрузки таким образом, чтобы он располагался перед внутренним каталогом lisp, он загружается первым. - person Dan; 10.07.2012

Чтобы загрузить уже загруженную библиотеку из нового места, напишите в своем init-файле Emacs что-то вроде

(выгрузить-функция...

(загрузить ИЗ-НОВОГО-МЕСТА...

person Andreas Röhler    schedule 07.04.2013