我讨厌elisp(不确定LISP是否一般)处理多行文档字符串的方式。
(defun foo ()
"This is
a multi
liner
docstring"
(do-stuff))
我确实希望我可以做类似的事情
(defun foo ()
(eval-when-compile
(concat
"This is\n"
"a multi\n"
"line\n"
"docstring"))
(do-stuff))
这样缩进是一致的
不幸的是,eval-when-compile不能完成任务。
有人有什么想法吗?
有趣的是,您的把戏不起作用的原因是
—
Stefan
eval-when-compile
引用了它的结果(将其从值转换为表达式)。如果它更聪明,并且仅在不自我引用时才引用结果,那么它将起作用。
defun
。这种方法的缺点-很大-会使正在解析您的代码以寻找defun
s的任何软件(除了elisp编译器/解释器之外)混淆。