我正在尝试在 emacs lisp 中编写一个宏来创建一些“辅助函数”。
最终,我的辅助函数将比我这里的更有用。我意识到可能有更好/更直观的方法来完成同样的事情(请发帖),但我的基本问题是为什么这不起作用/我做错了什么:
(defmacro deftext (functionname texttoinsert)
`(defun ,(make-symbol (concatenate 'string "text-" functionname)) ()
(interactive)
(insert-string ,texttoinsert)))
(deftext "swallow" "What is the flight speed velocity of a laden swallow?")
(deftext "ni" "What is the flight speed velocity of a laden swallow?")
如果我获取宏扩展的输出并对其进行评估,我会得到我打算通过宏获得的交互式函数,但即使宏运行并且似乎在评估,我也无法调用M-x text-ni
or text-swallow
.
这就是你想要的:
(defmacro deftext (functionname texttoinsert)
(let ((funsymbol (intern (concat "text-" functionname))))
`(defun ,funsymbol () (interactive) (insert-string ,texttoinsert))))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)