有的时候需要微改一些第三方包的函数,之前用的是定义新函数+advice-add :override
的方式。
突然想到Elisp有个内置的函数defalias
,不知道和advice
有何使用上的区别?
有的时候需要微改一些第三方包的函数,之前用的是定义新函数+advice-add :override
的方式。
突然想到Elisp有个内置的函数defalias
,不知道和advice
有何使用上的区别?
defalias只是取个别名吧,不能修改代码。
advice还能deactivate找回来。advice有自己的一套frame,储存旧函数,组装并替换新函数。用defalias的话原来定义的引用就丢了,实际上defun就是用defalias实现的。
(defalias 'origin-func 'my-func)
这样就可以在使用origin-func
时改为启动my-func
了