Any*_*orn 5 lisp emacs macros elisp
我正在尝试使用宏生成函数:
(defmacro make-my-emacs-command-region (cmd name)
(list 'defun (intern (format "my-emacs-command-%s-%s" cmd name))
'(&optional arg)
(list 'interactive "p")
(list (intern (format "mark-%s" name)) 'arg)
(list (intern (format "my-emacs-command-%s-region" cmd))
'(region-beginning) '(region-end))))
Run Code Online (Sandbox Code Playgroud)
发电机:
(mapcar (lambda (a) (make-my-emacs-command-region a buffer))
'(foo bar))
Run Code Online (Sandbox Code Playgroud)
但我得到:
my-emacs-command-a-buffer
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我如何强制传递价值a?
我的 elisp 有点生疏,但直到有人提出实际的解释:我可以让你的例子比预期的更有效,我在宏定义主体中替换cmd为(eval cmd)(可能与 相同)。name
希望这可以帮助。
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |