Emacs: Как мне изменить `load-path`?
Возникает вопрос в связи с проблемой добавления дочерних каталогов в путь загрузки. Вот решение. К сожалению, похоже, что путь загрузки полностью изменился. Я пытался исправить это сам, но не могу сделать и нуждаюсь в помощи.
Итак, мой вопрос: как мне вернуть load-path
,
Я старался (setq load-path (reverse load-path))
но это не удается - что говорит о том, что load-path
это не список...
Редактировать:
Действительно, обратный путь загрузки работает - я не знаю, что я сделал не так, когда попробовал перед публикацией.
Я сталкиваюсь с очень странной проблемой simple.el
тени sunrise-commander.el
- пока он должен загрузиться до этого. Я подумал - проблема в том порядке, в котором у меня есть каталоги в пути загрузки - но сейчас - когда я изменил load-path
- progmodes
DIR находится перед sunrise
один - проблема все еще вокруг. Я озадачен
Тогда я переформулирую свой вопрос: как мне убедиться, что данное расширение загружается после кода ядра Emacs?
Изменить 2:
Если тень не значит, что я думаю - моя настоящая проблема в том, что многие sunrise-commander
а также icicles
ключи связаны с основными функциями Emacs. Например, когда я использую сосульки M-p
привязан к
M-p runs the command recenter-top-bottom, which is an interactive
compiled Lisp function in `window.el'.
Пока должно быть previous-history-element
, Точно так же, когда я использую sunrise-commander
M-u
привязан к
M-u runs the command subword-backward, which is an interactive
compiled Lisp function in `subword.el'.
в то время как это действительно должно быть sr-history-next
,
Изменить 3:
О, я решил это! Раньше я устанавливал emacs для всей системы через менеджер пакетов synaptic. Тогда я пришел с решением - что таким образом невозможно иметь мои настройки со мной. И после этого я поддерживаю локальные пакеты emacs и emacs. Так что все, что мне нужно сделать, это удалить все системные компоненты Emacs.
** Изменить 4**:
Нет, это не так. Это способ расширения сочетаний клавиш ErgoEmacs. После того, как я закомментировал это у меня есть M-n
а также M-p
работает нормально в icicles
, Хоть RET
в Sunrise командир все еще вызывает функцию dired - а не функцию восхода. Надеюсь, решу это позже.
2 ответа
Расширения загружаются либо require
или же load
, load-path
просто указывает список папок, в которых require
будем искать. Представь, что у тебя есть .emacs.d/vendor
каталог, полный расширений Emacs, и он добавлен в ваш load-path
(Порядок записей в пути загрузки не имеет значения, если только одно и то же расширение не находится в нескольких папках там - то, что известно как теневое копирование пути загрузки, которое можно проверить с помощью M-x list-load-path-shadows
). На этом этапе вы можете сделать одну из двух вещей:
(require 'extension)
;; or
(load "~/emacs.d/vendor/extension.el)
require
имеет дополнительное преимущество, что он не будет загружать библиотеку дважды. Итак, чтобы ответить на ваш вопрос - чтобы убедиться, что расширения загружаются после ядра (Emacs автоматически загружает очень мало вещей), его просто необходимо или загрузить после того, что вы хотите, чтобы оно было загружено после.
После второго редактирования, я думаю, вам стоит взглянуть на эту замечательную статью о сочетаниях клавиш в Emacs.
Не уверен, что это имеет значение, но относительно того, "как мне загрузить что-то перед simple.el": вы не можете, потому что simple.el предварительно загружен в исполняемый файл `emacs', поэтому он загружается задолго до загрузки.emacs.