如何干净地重新载入一个library?

假设现有lib.el,里面包含

(define-namespace lib-

(defconst a 1)

(defun f () (interactive) a))

(provide 'lib)

当我在init.el里(require 'lib)并启动emacs时M-x lib-f是能用的,但是当我使用load-library重新加载lib后,会发生M-x lib-f时a没有定义的问题。有什么更好的办法重新加载吗? 版本26.1

测试了你的代码 我的没有问题啊

a 没有定义

lib-a 有定义吗?

其实原型就是nicehero/netease-music.el啦,lib-a是有定义的(用ielm测)。

我的意思是原来emacs启动调用(require 'lib)的时候M-x lib-f是正常的,但是load-library后调用M-x lib-f会出错。

而且require了一次的’lib 没法靠require来重载。

没办法像第一次那样「重新载入」,但是可以重新执行覆盖(defvardefun 需要用 C-M-xC-x C-eM-x load-library 之类的不行),或者重启 Emacs。