counsel原来真的不一定在Ivy之后加载

相关的一点点spacemacs背景知识:spacemacs的自己写的layer里有个myname/init-packagename的函数,里面是个use-package,只要在defconst myname-packages里声明了packagename包,就会执行这个函数。如果spacemacs本身包含了这个包,那就把函数名改成myname/post-init-packagename(在spacemacs配置结束后执行我的配置)。


受abo-abo把ivy、swiper、counsel放在一个项目里的影响,我之前是把ivy和counsel的配置都放在myname/post-init-counsel里面的,我想当然地觉得counsel依赖Ivy,那它肯定是在Ivy之后加载的嘛,结果发现有一句

    (setq
     ivy-re-builders-alist '((t . ivy--regex-plus))
     )

无论放在use-package:init还是:config里面,都不会在emacs启动后生效,要手动C-x C-e之后才生效,直到今天我把它放进myname/post-init-ivy里,就好了。然后我去看了一眼counsel的源码,发现好像counsel并不需要在Ivy之后加载,它只是引用了Ivy的一些函数来定义自己的函数,而Ivy那些函数是不需要(在用户调用counsel前)执行的?