SLIME macrostepper是否有Elisp模拟?具体来说,我正在寻找能够在新缓冲区中将代码扩展到下一个扩展步骤(或者只是最终扩展)的东西。
天真的
(defun macroexpand-point ()
(interactive)
(let ((b (get-buffer-create "*el-macroexpansion*"))
(expansion (format "%s" (macroexpand (thing-at-point 'sexp)))))
(with-current-buffer b
(insert expansion)
(display-buffer b))))
没有做我期待的事情。
答案 0 :(得分:6)
也许你需要这个:
(defun macroexpand-sexp-at-point ()
(macroexpand (sexp-at-point)))
整个功能可以更加简洁地表达
(defun macroexpand-point (sexp)
(interactive (list (sexp-at-point)))
(with-output-to-temp-buffer "*el-macroexpansion*"
(pp (macroexpand sexp)))
(with-current-buffer "*el-macroexpansion*" (emacs-lisp-mode)))
答案 1 :(得分:3)
您可能会发现imacroexpand.el符合您的要求。
答案 2 :(得分:2)
有人可能会发现macrostep package很有用。
macrostep上的快速指南:
安装软件包后,如果没有进一步的自定义,您可以这样做:
在要展开的表达式之前移动光标,然后执行M-x macrostep-expand e e e e e
以逐步展开它。在echo区域中显示关于如何退出以及如何进行扩展的简短帮助消息。
可以对来自dash.el page的->>
宏示例进行测试,这些示例不是太简单且不太复杂。