与错误调用的函数显示的错误消息类似,例如:
(message (file-attributes "."))
制作消息:
"eval: Wrong type argument: stringp, ("/home14/tjones" 1 0 0 (20415 35598) (20211 19255) (20211 19255) 14 "lrwxrwxrwx" t ...)"
如何有意识地进行此类翻译,例如:
(message (thing-to-string (file-attributes ".")))
发消息:
("/home14/tjones" 1 0 0 (20415 35598) (20211 19255) (20211 19255) 14 "lrwxrwxrwx" t ...)
这仅用于调试/信息。我假设有一种方式,因为消息正在这样做,但这是否暴露给我们的用户?
答案 0 :(得分:6)
查看prin1-to-string
及相关功能(prin1
,princ
等)。并尝试手册! http://www.gnu.org/software/emacs/manual/html_node/elisp/Output-Functions.html
答案 1 :(得分:2)
在您的示例中,message
没有做任何事情(它只是拒绝运行),因此字符串的转换是由read-eval-print循环完成的,它捕获了错误并将其转换为文本消息。
但是,message
也可以这样做,并且通过调用内部使用format
等内容的prin1-to-string
来实现。
所以(format "%S" <foo>)
会做你的事情 - 字符串。