225_emacs lisp require以及provide的使用

完整的common lisp的学习集合整理如下:

    https://github.com/GreyZhang/g_lisp

    继续分析spacemacs的配置,代码如下:

    前面的这部分代码已经分析过了,接下来看看29行的这一部分代码。这里又有一个之前没有掌握的功能,require。其实,之前各种抄袭别人的配置的过程中这个功能我没少用,当时使用的时候是配合provide的函数使用。两个配合起来,实现加载一个文件的功能。今天系统的看一下这个功能,首先看内置的帮助:

    搜索之前,我还以为这个函数可能使用lisp代码实现的。毕竟感觉这个东西调用的次数似乎不是很多,而且实现的功能相对来说似乎不是很复杂,主要的功能还是加载。没想到这个功能还是C代码实现的,看起来,这是emacs非常基础的一个功能了。

    先按照这个内置的帮助做一下理解。简单来说,就是feature没有加载的时候从文件中加载。如果判断是否加载呢?就是看看feature是否是features列表的元素,如果不是这个列表的元素就从文件中加载。如果文件名称省略,那么将会按照feature名称去寻找文件,分别去查找.elc以及.el后缀的文件。也有可能有其他的情况,但是我理解了一下我或许用到的不多。第三个参数是用来控制是否报错的。此外,文件搜索的目录是load-path。大概就是这样。

    再看一下文档是否有更详细的描述;

    两部分的信息查不多,但是根据文档这个容易扩展想到provide的功能,这个我之前大概用过。后面,专门补充一下这个函数的使用。似乎,少了这个函数的小结,这个require函数也不好去进行演示。

    正好,顺着文档看到了一段信息,在这里把这部分内容整理一下吧!

    Require查询的信息就是上面的这个变量,是一个列表。而列表的内容如何增加呢?通过provide。

    接下来,做一个测试。创建test_a.el,内容如下:

    加载,让emacs可以识别。之后,运行以下代码:

    这样,就加载成功了。之前,我自己一直把这个叫做加载了一个模块。现在看看,其实按照这些文档的描述这其实是加载了一个feature。

完整的common lisp的学习集合整理如下:

    https://github.com/GreyZhang/g_lisp

发布了812 篇原创文章 · 获赞 163 · 访问量 172万+

猜你喜欢

转载自blog.csdn.net/grey_csdn/article/details/104270387