package.el
更新包时,会再次加载包,进一步会让 diminish
失效。
如 (diminish 'ivy-mode)
,然后 M-x package-reinstall ivy
,ivy
会重新出现在 Mode Line 上。
之前我被此事困扰过(不清楚怎么回事),有机会看了看 package.el
代码才有些头绪。
package.el
更新包时,会再次加载包,进一步会让 diminish
失效。
如 (diminish 'ivy-mode)
,然后 M-x package-reinstall ivy
,ivy
会重新出现在 Mode Line 上。
之前我被此事困扰过(不清楚怎么回事),有机会看了看 package.el
代码才有些头绪。
原因是?光看这里代码不明白
噢,确实漏掉了。后边还有看 define-minor-mode
的效果,把 (define-minor-mode ivy-mode ...
展开,会得到:
(with-no-warnings
(add-minor-mode 'ivy-mode '" ivy" ivy-mode-map nil nil))
再看 add-minor-mode
的实现:
(let ((existing (assq toggle minor-mode-alist)))
(if existing
(setcdr existing (list name))
...))
最后会归咎于 setcdr
覆盖了 diminish 的效果。
那是不是应该改进一下diminish,让它advice add-minor-mode
?
不清楚,我还没考虑过,或许可以先看看跟 diminish 同类的包有没有考虑这个(印象中 Magit 的作者有个同类的包)。
我倒觉得就这么放着就好……
话说回来,你们真的平常不怎么开关Emacs?
windows和mac下都偶尔会卡死,然后有时改配置也会重启