LINUX.ORG.RU

Emacs, provide и require не работает

 , , starter-kit


0

1

Был у меня когда-то конфиг(кода я пользовался emacs-ом еще). В итоге хочу сейчас его опять настроить как раньше. А раньше я делал отдельную либу со своим конфигом. Вот и сейчас ее решил сделать. Пишу в ~/.emacs.d/init.el:

(add-to-list 'load-path "~/.emacs.d/msk/")

(require 'msk-config)

В ~./emacs.d/msk/init.el пишу:

                                   
(provide 'msk-config)

(load-file "main.el")

Получаю при запуске:

Debugger entered--Lisp error: (file-error "Cannot open load file" "нет такого файла или каталога" "msk-corequire(msk-config)

Что я сделал не так?

★★★★★

(require 'msk-config)

Используй load-library. например

(add-to-list 'load-path "~/.emacs.d/conf")
(load-library "keybindings.el")

Hertz ★★★★★
()
Последнее исправление: Hertz (всего исправлений: 4)
Ответ на: комментарий от deterok
 -- Command: load-file filename
     This command loads the file FILENAME.  If FILENAME is a relative
     file name, then the current default directory is assumed.  This
     command does not use `load-path', and does not append suffixes.
             ^^^^^^^^^^^^^^^^^^^^^^^^

Просто load попробуй.

     
     If FILENAME is a relative file name, such as `foo' or
     `baz/foo.bar', `load' searches for the file using the variable
     `load-path'.  It appends FILENAME to each of the directories
     listed in `load-path', and loads the first file it finds whose name
     matches.  The current default directory is tried only if it is
     specified in `load-path', where `nil' stands for the default
     directory.  `load' tries all three possible suffixes in the first
     directory in `load-path', then all three suffixes in the second
     directory, and so on.  *Note Library Search::.

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)

Пробуй load-library, load-file требует полного пути.

Hertz ★★★★★
()
Ответ на: комментарий от Zubok

Спасибо конечно, но что-то тут не то, он не находит сам init.el в msk.

Т.е. все обламывается вот на require

Debugger entered--Lisp error: (file-error "Cannot open load file" "нет такого файла или каталога" "msk-config")
  require(msk-config)

Т.е. до main.el дело даже не доходит...

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

Фу, стоп. Я не понял. Я думал , что ты load-path в .emacs загоняешь. А ты load-path в самой же своей библиотеке делаешь? А откуда у тебя ~/.emacs.d/init.el загружается?

Zubok ★★★★★
()
Последнее исправление: Zubok (всего исправлений: 2)
Ответ на: комментарий от Zubok

Смотри: У меня есть

1) ~/.emacs.d/init.el
2) ~/.emacs.d/msk/init.el
3) ~/.emacs.d/msk/main.el

1 - Грузится сам и с помощью require грузит 2.
А уже 2 в свою очередь грузит 3.

Вот когда 1 запрашивает 2 у меня и вываливается все.

deterok ★★★★★
() автор топика

У тебя нарушение логики. На этапе, когда у тебя идет

(require 'msk-config)
еще файл ~./emacs.d/msk/init.el не подгружен, и ни о каком символе msk-config Emacs не в курсе. Сначала ~./emacs.d/msk/init.el должен подгрузиться, где Emacs найдет
(provide 'msk-config)
Но дело в том, что команда
(add-to-list 'load-path "~/.emacs.d/msk/")
не дает указания загружать из этой директории файлы, а только дает понять, где их в случае чего искать.

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
Ответ на: комментарий от iVS

Как правильно быть в такой ситуации. Я просто что-то такое помню, но уже сумутно...

Ваши рекомендации?

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok
С-h f require

If FILENAME is omitted, the printname of FEATURE is used as the file name, and `load' will try to load this name appended with the suffix `.elc' or `.el', in that order.

Другими словами, в твоем случае после

(require 'msk-config)
будет искать файл msk-config.elc или msk-config.el внутри load-path.

iVS ★★★★★
()
Ответ на: комментарий от iVS

будет искать файл msk-config.elc или msk-config.el внутри load-path.

А я как раз удалил такой же комментарий тут. Сначала написал, потом решил уточнить, что за init.el. А их оказалось два. :)

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.