使用require的时候遇到的问题

最近重新调整了一下自己配置的文件位置,具体如下:

.
├── README.md
├── config.el
├── init.el
├── lisp
├── misc
├── site-lisp
└── snippets

遇到一个问题是我有一个自己编写的插件,放在site-lisp文件夹下,对这个插件的配置放在lisp文件夹下。

在对配置进行require的时候语法检查插件会出现Cannot open load file: No such file or directory的问题,但是插件也能正常起作用,通过C-h v查看features变量也能看到自己写的插件已经在里面了。

所以我猜问题是不是出在Emacs先加载了lisp文件夹下的文件,然后加载site-lisp下的文件,导致lisp中的文件检测不到site-lisp中的文件才会出错?如果是这个问题的话是不是要先把site-lisp文件夹放到自己的load-path里?如果不是的话有什么办法可以解决这个问题吗?

是的,或者你把想要加载的插件单独加到load-path也可以,总之你require前要让emacs先找到插件的路径才行。

1 个赞

试试这个

(setq elisp-flymake-byte-compile-load-path
      (append elisp-flymake-byte-compile-load-path load-path))

多谢解答,但我之前用的一个添加函数是(normal-top-level-add-subdirs-to-load-path),看来这个函数是按照文件夹的字母顺序来加载文件的?看来还是要手动添加啊 :sweat_smile:

我用的语法检查插件是flycheck :sweat_smile: