2010-07-28 4 views
8

Предположим, у меня есть свой код elisp в ~/bin/hello.el.Выполнение собственного кода при запуске Emacs

Файл ~/.emacs имеет следующий код для запуска hello.el при запуске.

(add-to-list 'load-path "~/bin/elisp") 
(require 'hello) 

Но, появляется следующее сообщение об ошибке.

Warning (initialization): An error occurred while loading `/Users/smcho/.emacs':

error: Required feature `hello' was not provided

Что случилось с этим?

+0

Кстати, вы можете подумать о реорганизации своего кода: вместо ~/.emacs Emacs автоматически найдет и загрузит ~/.emacs.d/init.el, чтобы вы могли поместить все свои elisp внутри ~/.emacs. д. – sanityinc

+0

@sanityinc: Это отличается от моего понимания. Не могли бы вы проверить this? – prosseek

+0

Да, все по-другому, но я не уверен, каким образом вы имеете в виду. Вот моя конфигурация (с * no * ~/.emacs), если это поможет: http://github.com/purcell/emacs.d – sanityinc

ответ

15

Помогло ли hello.el приветствовать? Он должен начинаться с (provide 'hello). См. elisp manual. Работает ли (load "hello.el")?

+0

(укажите «привет») для первой строки кода elisp. Благодарю. – prosseek

+0

В чем разница (требуется) и (нагрузка)? – prosseek

+0

(загрузка) загружает файл. (требуется) загружает функцию при ее использовании. Файл может предоставить более одной функции, но я не думаю, что код в файле оценивается до тех пор, пока функция не будет использована (не цитируйте меня по точной семантике). Требовать, по сути, говорит, что мне это понадобится, выяснить, где он находится, и подготовить его, если мне это нужно. – deinst

3

Вы должны поставить что-то подобное в коде LISP:

(обеспечивают «привет)

1

Если вы добавили ~/bin/elisp к вашему load-path, то Emacs не будет найти файл в ~/bin. В этом случае Emacs попытается загрузить ~/bin/elisp/hello.el, и если он не сможет этого найти, он будет искать файл с именем hello.elc или hello.el (в указанном порядке) в других частях вашего load-path.

Также, как указывали другие, hello.el должен иметь в себе (provide 'hello) (обычно в конце).

Смежные вопросы