with-eval-after-load能不能当保险?

就是类似

(when (maybe-require-package 'indent-guide)
  (with-eval-after-load 'indent-guide
    (diminish 'indent-guide-mode)))

能不能把这里的when判断省了?

indent-guide-mode是个可能没有安装的package。

想清楚你的目的,然后实现它,顺序不应该反过来。而且自己的配置不用面面俱到,保持简单。

不清楚 maybe-require-package 是什么?

你自己用还是不用 indent-guide应该很清楚,考虑那么情况真有必要么?

2 个赞

我怎么记得purcell的maybe-require-package有下载安装的功能啊

我的目的是

如果安装了indent-guide, 那么就执行(diminish 'indent-guide-mode) 即不让indent-guide-mode显示在modeline上。

以及我的问题就在于我的很多需求总是会在很短的时间(以天计算)内就发生变化,所以我不可能不考虑这种冗余的事情……可能我上一刻觉得好就用了,而下一刻我又可能觉得烦人而扔掉。

另外maybe-require-package照抄自purcell/emacs.d。

===============

PS: 我觉得我应该和心理医生聊聊……或者找个996甚至比996更忙的工作……这病就能治好

PPS: use-package大法好……

估计把 when 去掉更符合你的要求,甚至可以:

(with-eval-after-load 'indent-guide
  (diminish 'indent-guide-mode))

(maybe-require-package 'indent-guide)
1 个赞

对……其实我还是不想好好看源码……

eval-after-load的机制我没闹明白……

用脚趾头想想都知道with-eval-after-load在这个feature有没有load的时候都能工作(不会报错), 那放when里干啥…

因为我不明白with-eval-after-load到底做了啥啊……

以及如果那个package是没装的状态,那么with-eval-after-load不是在浪费时间么?

它就注册一下它里面的代码,又不执行,费不了什么时间……

总之是“声明”了嘛……毕竟不是“什么都不做”

那你的做法少了这个声明但是多了个when的代价,很难说谁合算。但是这个决定的影响可以忽略,这是可以肯定的……

删掉 when 没有问题的,没有加载就不会执行。