全部学习汇总: ++GreyZhang/editors_skills: Summary for some common editor skills I used. (github.com)++
升级了spacemacs的配置,之后重新翻了一下spacemacs的文档。看到了这里面的一个核心的结构layer。这样,结合文档并且找出一个layer来看看这个结构组件是如何管理构建的。
简单来说,layer就是把一组插件组合起来提供一组专用的功能。这样,我们面对较为特定的专用功能的时候就不需要去寻找一系列的插件,而是通过这样的一个layer就可以达成目的。
这里介绍了一个layer的目录文件结构以及里面关键文件的作用。
插件的安装方式有3种,这里的第三种quelpa前面刚刚打过交道,也遇到过这方面的问题。后面可以专门看一下这个如何使用。
这是layer的声明方式,一般来说是按照字母顺序排列的。但是如果有with-eval-after-load的要求,可以按照上面的模式处理。
这是初始化配置的处理,这部分的实现应该是使用了use-package的插件。
排除处理可以让一个layer中剔除某些package,这样,可以很方便实现通过layer声明的备用功能来替换基础的插件功能。
不使用layer来使用插件的方法,可以通过dotspacemacs-additional-packages指定安装的插件,然后在dotspacemacs/user-config中做相应插件的配置。先在回忆一下,我的很多插件使用其实就是使用的这种方式。
接下来,看看ivy的layer组织构建。
为什么选择ivy layer呢?主要是我按照前面的介绍,搜索了一下这个组成文件之后发现其实里面没有几个layer。可能搜出来的这几个还是较为有代表性的,而ivy多少我还知道我在用这个插件。
不过,结合我这里目前安装的layer来看,可能这个layer中的很多文件或者目录可能是一个可选的。不然,我的org layer应该可以从上面的搜索中显示出来。
这是ivy layer的根目录信息。跟前面的文档相比,少了一个keybindings.el的文件。由此,再次可以看出来,这个layer中要求的文件或者目录可能是一个可选的。
Local目录中应该是一系列的插件,而这里只有一个帮助插件提供一些帮助信息。
Layers.el文件是用来声明额外的一些layer,但是从这里看,其实是做了一些排除。我没有理解为什么不会使用前面提到的exclusion的方式。
这是packages.el的信息,从这里看,其实这个插件的清单信息还可以指定一些插件的依赖信息。
从这里看到了很多功能的按键绑定,看起来缺失的文件的内容也在这里实现了。我看了下,这里的很多功能暂时在我的配置中没有,看起来我还得借助于这个做一个配置。
Funcs.el中的内容非常多,按照说明,这里的这些功能就是配置的时候用到的。看起来,如果要把ivy的功能用起来,得研究这个文件之后尝试配置config文件。
这个是目前默认的配置文件,接下来看起来应该是要研究下如何进行这部分功能的定制才能够把这个layer的功能潜力发挥出来。