function - 覆盖 Emacs 库中的单个函数

标签 function emacs advising-functions

我使用 Emacs 模式来注释我的一些文件(实际模式并不重要)。它以库的形式提供,并带有编译好的 lisp 代码(当然)。我想通过覆盖其中的单个函数来修改其行为。仅用于我本地的 Emacs session 。现在,我只是从库的源文件中复制粘贴该函数,稍微修改一下,然后点击 eval-last-sexp .到现在为止还挺好。但是,我得到了不一致的结果:我不确定 Emacs 如何处理来自 .elc 的函数。文件与来自源的函数混合。有时我会看到自己运行的函数版本,有时是原始版本。非常困惑(和烦人)。

任何想法如何在不修改库的只读源文件的情况下一致地替换 Emacs 库中的 lisp 函数?

最佳答案

像这样的事情应该可以解决问题:

(advice-add 'name-of-func-to-override :override
            (lambda () (message "does this instead now")))

替换 name-of-func-to-override带有函数名和 lambda用你的版本。

我建议看add-function (和 advice-add)文档为 :override实际上可能不是您想要的。

关于function - 覆盖 Emacs 库中的单个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38511253/

相关文章:

jquery - 未定义不是函数(jQuery 添加/删除类)

Emacs:如何在 cc 模式导数中的冒号后自动插入空格

emacs - 在批处理模式下使用 emacs 转储带有语法突出显示的文件?

emacs - 在新的 GUI 窗口中或通过拆分窗口打开新文件

emacs - 建议emacs交互功能: before

regex - 是否可以更改 emacs 的正则表达式语法?

javascript - 无法使用 JavaScript 中的大小写函数转换我的字符串

Javascript:如何在 do while 循环中访问函数范围的变量?

flutter - 如何在 dart/flutter 中继承静态方法?

Emacs - 跳过空白杀死