gpt4 book ai didi

emacs - elisp宏写一个函数?

转载 作者:行者123 更新时间:2023-12-03 13:59:53 25 4
gpt4 key购买 nike

我写了几个几乎相同的函数,除了它们的名字。例如:

; x is name, such as function/paragraph/line/etc.
(defun my-x-function
(interactive)
(mark-x) (do-more-stuff) (modify-x))


有没有一种方法可以自动生成此类功能?我感觉这就是宏的作用,但是我不确定如何使用它们。任何帮助,也许包括一个小例子都将是很好的。

谢谢!

最佳答案

是的,这正是宏的作用。这是一个简单的宏,可根据您指定的模式构建函数:

(defmacro make-my-function (name)
(list 'defun (intern (format "my-%s-function" name)) ()
(list 'interactive)
(list (intern (format "mark-%s" name)))
(list 'do-more-stuff)
(list (intern (format "modify-%s" name)))))


您可以将此宏复制到Emacs中的 *scratch*缓冲区并进行评估,然后检查其是否像这样工作:

(make-my-function x) ; type control-J here
my-x-function ; <-- Emacs's output
(symbol-function 'my-x-function) ; type control-J here
(lambda nil (interactive) (mark-x) (do-more-stuff) (modify-x)) ; <-- Emacs's output


更常见的是,可以使用 backquote工具更简洁地编写宏,但是所有宏实际上都以与上述示例相同的方式工作。

关于emacs - elisp宏写一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2437254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com