有什么建议可以通过自动加载来提高宏定义函数的性能吗?

时间:2016-02-16 06:32:07

标签: emacs macros elisp autoload

(defmacro create-function (function-name)
  `(defun ,function-name ()
     "Say hello to world."
     (interactive)
     ;; A heavy function body here
     (message ,(symbol-name function-name))))

它演示了一个定义函数的宏。

我正在编写一个包,让用户创建一个具有所需名称和相应用法的函数。创建的函数将全局使用(换句话说,它不是特定于模式的)。但是,用户可能真的需要或可能不真正需要该功能。但是一旦他们需要,该功能需要可用。

(create-function foobar1)
(create-function foobar2)
;; ....................
(create-function foobar20)

(create-function x)可能会放在用户的配置文件中,并在启动时展开,以便准备该功能。所以,我认为自动加载宏是没有意义的。

但是,可能并不总是需要创建的函数,并且在用户需要时没有模式。此外,该功能并不经常使用,比如说每个会话只使用其中的三个。所以,我的想法是自动加载该功能。

与普通函数不同,此函数在宏体中定义。自动加载可能无法在运行时找到函数定义。

我还尝试制作这样的原型宏:

(defmacro create-function-prototype (function-name)
  `(defun ,function-name ()
     (interactive)
     (create-function ,function-name)
     (call-interactively (quote ,function-name)))

我的另一个想法是先创建一个没有函数体的空白函数。它似乎工作。流程是否按预期工作?

总结一下,有三个问题

  1. 自动加载此宏有意义吗?
  2. 我可以在marco中定义autolaod功能吗?
  3. 原型方法有效吗?

0 个答案:

没有答案