问题标签 [advising-functions]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
emacs - 为 emacs 函数提供建议;坏话
我试图在 emacs 中建议一个函数,但没有任何反应。
也就是说,不会发生重新定位。如果有 a(message "foo")
相反,则确实显示 foo 。什么是我不知道的defadvice?
emacs - 建议一个emacs交互功能:之前
我想预先建议一些使用交互式参数的函数,例如find-dired
:
但是 emacs 仅在find-dired
交互式会话之后执行此建议,而我之前无法设置find-args
。如何化解矛盾?
更新。请注意,不推荐使用defadvice
宏。
emacs - 满足条件时如何让建议不执行该功能?
当建议返回 nil 时,如何防止建议函数运行?
-> 根本没有运行beginning-of-line
。
编辑:只是为了消除您的担忧,我不打算在beginning-of-line
.
emacs - Emacs 光标移动建议
我编写了一个次要模式,当光标在缓冲区中移动时突出显示缓冲区的各个部分。我通过建议这样的运动功能来做到这一点。
但这似乎是错误的做法。我一直在寻找光标移动的钩子,但似乎没有。
我是否缺少一个可以使用的钩子而不是建议一堆运动功能,还是有更好的方法来解决这个问题?
emacs - 当 initial-buffer-choice 具有自动保存数据时,如何防止 emacs 挂起?
我在守护程序模式下使用 emacs,并且我还initial-buffer-choice
设置了一个变量。有时,当我编辑用于initial-buffer-choice
. 在这种情况下,当我使用 --daemon 启动 emacs 时,它会挂起以下消息:
由于我主要从初始化脚本启动守护程序,我无法确认或拒绝此对话框,因此守护程序永远挂起。在这种情况下如何绕过自动保存数据的通知?如有必要,我不介意丢失自动保存数据。
这是我的尝试:
但是,这不起作用。我仍然得到相同的悬挂行为。事实上,在通知中放置一个“消息”调用表明该通知根本没有被调用。
类似的问题:emacs-daemon startup freezes if file has auto-save data。但是,此解决方案不适用于initial-buffer-choice
. 接受的答案似乎是从以前的版本编辑的,该版本可能已经成功地定义了command-line
我试图做的建议,但不幸的是,这个版本现在已经消失,取而代之的是特定于 desktop.el 的版本。
emacs - isearch-search-fun-default 的 defadvice 错误
这是我上一篇文章的继续(是否可以在 Emacs 中的 isearch-forward 之前预处理输入字符串)。我正在尝试jpkotta
使用变量来实现答案isearch-search-fun-function
。与其编写我自己的函数,我只是建议isearch-search-fun-default
包含我自己的函数(isearch-str-forward
并且isearch-str-backward
,只是为了演示的目的),这样每次我输入“abc”时,isearch 都会突出显示并搜索 regexp a[ ]*b[ ]*c[ ]*
。
问题是,当我建议函数然后对“abc”进行 isearch 时,它给了我I-search: abc [(void-function nil)]
. 但是,如果我将代码defadvise
放入原始isearch-search-fun-default
函数中,它就可以工作!所以我很困惑。Elisp 手册中说ad-do-it
的只是原始函数代码的占位符,因此这两种方法,建议函数或更改原始函数,最终应该生成相同的代码。为什么我建议时出现错误?
emacs - org-mode 导出时获取 src 块的内容
这是我正在尝试做的事情:
我有一段 JavaScript 代码,我想在从 org 文档生成的 HTML 中显示它,并且我希望在 HTML 页面中执行该代码。对于一个简单的例子,让它像
但这抱怨 undefined symbol block-name
。
我发现了这个问题,它非常相似,但是那里给出的答案对我不起作用。在 Emacs org-mode 中将源代码从一个代码块输入到另一个代码块
引用块的内容/名称的语法是什么?
编辑:
我越来越近了,但还没有:
这有两个问题。script
变量的值是nil
并且脚本标签被转义(尖括号被替换为<
and>
规则(如果脚本中有小于或大于符号,它们将被替换)。
编辑1:
差不多好了!
建议org-babel-get-src-block-info
让它在本地存储代码块的内容,如果它被命名为变量<name>-text
,那么我以后可以得到它。
示例用法:
转义是用:results html
选项处理的——这会导致 Org 逐字插入 HTML。
这是失败的最小示例。
但这将起作用并产生“预期”的结果:
<script>your script could be here</script>
在 eLisp 代码块的注释中输出和 JavaScript 代码。
emacs - 是否以及如何在 defadvice 循环中避免 eval
在下面的代码中应该避免 eval 吗?如果是这样,怎么做?或者这是使用 eval 更好的特殊情况之一?
对于上述成语的真实示例:
function - 覆盖 Emacs 库中的单个函数
我使用 Emacs 模式来注释我的一些文件(实际模式并不重要)。它以库的形式提供,并附带已编译的 lisp 代码(当然)。我想通过覆盖其中的单个函数来修改它的行为。仅用于我本地的 Emacs 会话。现在,我只是从库的源文件中复制粘贴函数,稍微修改一下,然后点击eval-last-sexp
. 到目前为止,一切都很好。但是,我得到不一致的结果:我不确定 Emacs 如何处理来自.elc
文件的函数与来自源的函数混合。有时我看到我自己版本的函数正在运行,有时是原始版本。非常混乱(和烦人)。
任何想法如何在不修改库的只读源文件的情况下一致地替换 Emacs 库中的 lisp 函数?
clojure - Clojure 中的协议方法建议
我正在尝试使用来自另一个库的实用程序函数来建议一个库中的许多方法(defn)
,其中一些要建议的方法是用定义的,而一些是用(defprotocol)
.
现在我正在使用这个库,它使用(alter-var-root)
. 我不在乎我使用哪个库(或者我是否自己动手)。
我现在遇到的问题是协议方法有时可以建议,有时不能,这取决于我不完全清楚的因素。
如果我定义一个协议,然后定义一个类型并内联实现该协议,那么建议似乎永远不会起作用。我假设这是因为该类型直接扩展了 JVM 接口并跳过了 var。
如果在单个命名空间中,我定义了一个协议,然后通知它的方法,然后将该协议扩展到一个类型,那么通知将不起作用。
如果在单个命名空间中,我定义了一个协议,然后将该协议扩展为一个类型,然后建议该协议的方法,则该建议将起作用。
我想做的是找到一种可靠地工作并且不依赖于未定义的实现细节的建议方法。这可能吗?