首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs Lisp,如何映射宏,并计算其中一个参数

Emacs Lisp,如何映射宏,并计算其中一个参数
EN

Stack Overflow用户
提问于 2012-07-05 16:59:17
回答 1查看 879关注 0票数 5

Bob Glickstein在“编写GNU Emacs扩展”的第3章中描述了一种建议滚动功能的方法。(他建议使它们可逆,因此我们必须在滚动之前保存状态。)

例如,对于scroll-up-command,该建议如下所示

代码语言:javascript
复制
(defadvice scroll-up-command (before reversibilate activate compile)
   "If it wants to be reversible, it must save the former state."
   (save-before-scroll))

井。当然,我必须对所有的scroll命令执行此操作。所以我想对它们做一个序列,并一起给出建议。

代码语言:javascript
复制
(setq reversible-scroll-commands 
  [scroll-up-command 
   scroll-down-command 
   scroll-left-command 
   scroll-right-command])

(我使用一个向量来保存5个引用。)

但现在我被卡住了。

代码语言:javascript
复制
(mapcar 
  (lambda (fun-name)
    (defadvice fun-name (before reversibilate activate compile)
       "If it wants to be reversible, it must save the former state."
       (save-before-scroll)))
   reversible-scroll-commands)

将建议(不存在的)函数fun-name四次,因为是一个宏,并且不会计算fun-name。

有什么办法可以做到吗?

(我使用的是Emacs 24)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-05 17:03:33

未经测试:

代码语言:javascript
复制
(mapcar 
  (lambda (fun-name)
    (eval `(defadvice ,fun-name (before reversibilate activate compile)
             "If it wants to be reversible, it must save the former state."
             (save-before-scroll))))
   reversible-scroll-commands)

请参阅elisp手册中的section about backquotes

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

https://stackoverflow.com/questions/11341000

复制
相关文章

相似问题

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