问题标签 [defadvice]

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.

0 投票
3 回答
417 浏览

emacs - Emacs - 跳过空格杀死

我正在尝试使 kill ring 基本上忽略仅空白条目(制表符、换行符、仅空格等),我对 elisp 相当陌生,我很确定要做的方法是做 defadvice 但我有一个几个问题。

  • 首先阻止空白条目进入杀戮环,还是在猛拉时跳过它们会更好?我假设后者。

在这种情况下,我完全不知道应该建议哪个函数,它在 current-kill、yank 和 insert-for-yank 之间——但我不完全确定我应该操纵哪个函数来不从 kill ring 中拉出空格。

谢谢!

编辑:我很确定这样做的方法是操纵“current-kill”以继续调用自己,直到它到达一个非空白条目?(或环结束,以先到者为准)

0 投票
2 回答
577 浏览

emacs - 如何更改特定基本模式缓冲器的变量

目标:我想show-trailing-whitespace为所有缓冲区启用保存一些。引起问题的异常是*Shell Command Output*和它的表亲*Async Shell Command*

我通常show-trailing-whitespace定制为t. 因此,它在所有新缓冲区中都处于活动状态。

我还想为某些缓冲区关闭它,其中最重要的是*Shell Command Output*。这给我带来了一个问题:

  • 输出缓冲区不使用特殊模式;它还在fundamental-mode。我无法fundamental-mode-hook将这个设置挂钩。
  • 当主要after-major-mode-change-hook模式更改为时运行 which fundamental-mode,但缓冲区以该模式启动,因此此挂钩未运行。
  • 好像没有办法勾搭get-buffer-create

我知道我总是可以使用这个特定示例advise的功能get-buffer-create,但我会尽量避免这种情况。

有什么提示吗?

0 投票
5 回答
252 浏览

emacs - 仅当从某个其他函数调用时才触发对函数的建议

我正在尝试解决dired-do-shell-command不能!在当前目录和父目录...'. 堆栈跟踪粘贴在底部。

我可以定义如下建议来绕过此错误:

但这会影响对dired-get-filename. 我希望它仅在堆栈为dired-do-shell-command -> dired-get-marked-files -> dired-get-filename.

我能想到的唯一方法如下

  • (with-output-to-string (backtrace))在建议定义中搜索匹配项
  • 将周围的建议添加到其他方法以设置一些可以在建议定义中测试的变量。

有更好的方法吗?我想我正在寻找对当前堆栈跟踪的访问作为数据结构而不是来自的字符串(backtrace)

为什么 dired-do-shell-command 不能对 '.' 进行操作 或者 '..'?

0 投票
2 回答
163 浏览

emacs - 只写缓冲区?

我想模仿大多数控制台在缓冲区中的工作方式,有什么办法吗?即只允许将文本附加到缓冲区,但不能删除?

可能我可以禁用或建议一些删除字符的内置功能,但恐怕这不是一个非常可扩展的解决方案......我可能会错过一些。

0 投票
2 回答
94 浏览

emacs - 正确处理失败的片段完成

我使用 TAB 从 yasnippet 扩展片段,当它不扩展片段时,它通常会退回到缩进(绑定到 TAB 的默认命令),这由 yasnippets 自定义变量引用,yas-fallback-behavior它只能是call-other-commandor return-nil

我想要的功能是在点击 TAB 时:

  1. 尝试完成片段、成功或静默失败。
  2. 检查我们是否处于 PHP 模式,并php-complete-function静默调用、成功或失败。
  3. 默认为其当前的缩进命令 ( indent-for-tab-command)。

它目前完美地执行 1,然后是 3。yas--fallback但是,通过使用这段代码提供建议,我能够使其大部分工作:

剩下的唯一主要问题是,当尝试使用 TAB 缩进任何内容时,php-complete-function不会静默失败,而是会向 minibuffer 发送垃圾邮件,其中包含来自 PHP 完成的多次检查的消息。

那么有没有办法在这种情况下禁止来自该函数的消息传递,而无需进行所有相同的检查,它实际上是在我的建议中重新编程该函数?或者,有没有更好的方法来使用 yasnippet 来开始我所缺少的?

0 投票
2 回答
511 浏览

emacs - defadvice 可以在原始函数中使用变量吗?

让我以Emacs Lisp 中的修改示例为例:如何使用 ad-get-arg 和 ad-get-args?

(my-add 1 2 3)将运行良好的输出:

(my-add 1 2)无法c从原始函数中获取值:

我的问题是如何在defadvice正文中使用未提供的可选参数(或更一般地说,原始函数中的变量)?

0 投票
1 回答
315 浏览

emacs - 为 emacs 函数提供建议;坏话

我试图在 emacs 中建议一个函数,但没有任何反应。

也就是说,不会发生重新定位。如果有 a(message "foo")相反,则确实显示 foo 。什么是我不知道的defadvice?

0 投票
5 回答
3546 浏览

emacs - 建议一个emacs交互功能:之前

我想预先建议一些使用交互式参数的函数,例如find-dired

但是 emacs 仅在find-dired交互式会话之后执行此建议,而我之前无法设置find-args。如何化解矛盾?

更新。请注意,不推荐使用defadvice宏。

0 投票
1 回答
147 浏览

emacs - 满足条件时如何让建议不执行该功能?

当建议返回 nil 时,如何防止建议函数运行?

-> 根本没有运行beginning-of-line

编辑:只是为了消除您的担忧,我不打算在beginning-of-line.

0 投票
1 回答
434 浏览

emacs - Emacs 光标移动建议

我编写了一个次要模式,当光标在缓冲区中移动时突出显示缓冲区的各个部分。我通过建议这样的运动功能来做到这一点。

但这似乎是错误的做法。我一直在寻找光标移动的钩子,但似乎没有。

我是否缺少一个可以使用的钩子而不是建议一堆运动功能,还是有更好的方法来解决这个问题?