gpt4 book ai didi

emacs - 建议仅适用于函数调用建议函数重新评估后的所有情况

转载 作者:行者123 更新时间:2023-12-01 09:25:35 25 4
gpt4 key购买 nike

在我的 .emacs 文件中,我有:

(defadvice narrow-to-region (around test activate)
(message "advice")
ad-do-it)

当我调用 narrow-to-region 时,建议会运行并在缩小之前打印“建议”。

当我调用 narrow-to-defun 时,它不会。

我在 lisp.el 中找到了 narrow-to-defun 的定义位置,并重新评估了该函数。此时,建议开始运行。

这可能是什么原因造成的?

最佳答案

显然,问题是由于字节编译,因此无法建议缩小原语(narrow-to-region 是原语,narrow-to-defun 调用 narrow-to-region).

Null Program 上的以下帖子( "The Limits of Emacs Advice" ) 详细介绍了这个问题。这是帖子深处的简短版本:

It turns out narrow-to-region is so special -- probably because it's used very frequently -- that it gets its own bytecode. The primitive function call is being compiled away into a single instruction. This means my advice will not be considered in byte-compiled code. Darnit. The same is true for widen (code 126).

关于为什么在您重新评估 narrow-to-defun 后建议开始起作用:我猜这是因为您在重新评估时最终替换了字节编译版本。

关于emacs - 建议仅适用于函数调用建议函数重新评估后的所有情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25246901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com