首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建议使用emacs交互函数:之前

建议使用emacs交互函数:之前
EN

Stack Overflow用户
提问于 2013-01-30 22:12:14
回答 4查看 3.4K关注 0票数 6

我想在此之前建议一些使用交互式参数的函数,例如find-dired

代码语言:javascript
复制
(defadvice find-dired (before eab-find-dired activate)
  (message "before!")
  (setq find-args '("-iname '**'" . 10)))

但是find-args只有在find-dired交互会话之后才会执行这个建议,而我之前不能设置emacs。如何解决这一矛盾?

Upd。请注意,defadvice宏为deprecated

EN

回答 4

Stack Overflow用户

发布于 2013-01-30 23:41:55

Emacs在调用函数之前获取interactive规范。

一般来说,使用defadvice不是一个好主意,因此我建议您定义自己的函数并将其绑定到适当的键。例如:

代码语言:javascript
复制
(defun my-find-dired ()
  (interactive)
  (let ((find-args '("-iname '**'" . 10)))
    (call-interactively 'find-dired)))

当然,如果您认为所有对find-dired的调用都需要此设置,也可以简单地执行以下操作

代码语言:javascript
复制
(setq find-args '("-iname '**'" . 10))
票数 5
EN

Stack Overflow用户

发布于 2013-01-31 00:05:27

为什么你想建议一个交互式功能?

您可以轻松地定义自己的命令

代码语言:javascript
复制
(defun find-dired-my-defaults (dir args)
  "just like `find-dired' but with defaults."
  (interactive
   (list (read-directory-name "Run find in directory: " nil "" t)
         (read-string "Run find (with args): " '("-iname '**'" . 1)
                      '(find-args-history . 1))))
  (find-dired dir args))

如果它已经绑定在一个键映射中,你可以很容易地重新映射它:

代码语言:javascript
复制
(define-key foo-mode-map [remap find-dired] 'find-dired-my-defaults)

不管维基告诉你什么,最终用户几乎从来不需要使用defadvice

编辑:@Lindydancer的答案在这种情况下更好,但我将在这里留下这个答案,以劝阻未来的读者以这种人为的方式使用defadvice

票数 2
EN

Stack Overflow用户

发布于 2013-01-30 23:45:04

它是有效的:

代码语言:javascript
复制
(defadvice find-dired (around eab-find-dired (dir args) activate)
  (interactive
   (list (read-directory-name "Run find in directory: " nil "" t)
         (read-string "Run find (with args): " '("-iname '**'" . 10)
                      '(find-args-history . 1))))
  ad-do-it)

我使用函数find-diredinteractive form进行替换:将必要的表达式'("-iname '**'" . 10)直接放入表单中,而不是find-args。使用带有参数(dir args)around-advice,而不是before-advice

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14606037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档