Answers:
调用unload-feature
以取消定义在加载Elisp源文件或字节编译文件时定义的所有符号。通过provide
在结尾处调用来确保文件结束。假设您使用load
函数或via 之一加载了文件require
,它不会是由C-M-x
(eval-defun
)或类似机制定义的未定义符号。
如果您确实要根据符号的名称而不是根据定义它们的包来解除绑定,则可以使用它mapatoms
来遍历所有符号。
(mapatoms (lambda (symbol)
(if (string-prefix-p "foo-" (symbol-name symbol))
(unintern symbol))))
provide
。但是无论如何,如果您真的想用肮脏的方式做事,请参阅我的编辑。
provide
,我只是认为在这种情况下不起作用。如果对函数进行交互评估,函数是否还记得定义在哪个文件中?
unload-feature
如果您评估代码而不从文件(具有provide
)中加载代码,则没有任何效果。
feature
系统更深一层;我只使用函数和变量,没有任何显式分组。我没有理会评估(provide 'my-package)
。