在我的.emacs文件中,我有:
(defadvice narrow-to-region (around test activate)
(message "advice")
ad-do-it)
Run Code Online (Sandbox Code Playgroud)
当我称之为狭隘地区时,建议会在缩小之前运行并打印"建议".
当我称之为狭隘的定义时,事实并非如此.
我在lisp.el中找到了定义narrow-to-defun的地方,并重新评估了该函数.此时,建议开始运行.
什么可能导致这个?
问题是,很显然,由于字节编译,因此无法告知缩小原语(narrow-to-region是原始的,narrow-to-defun电话narrow-to-region).
关于Null程序的以下帖子("Emacs建议的限制")详细介绍了这个问题.这是帖子深处的简短版本:
事实证明它
narrow-to-region是如此特殊 - 可能是因为它经常被使用 - 它获得了自己的字节码.原始函数调用正被编译成单个指令.这意味着我的建议不会在字节编译代码中考虑.Darnit.widen(代码126)也是如此.
至于为什么建议你开始工作后重新评估narrow-to-defun:我猜那是因为你结束了更换字节编译版本,重新评估的时候.