与错误调用函数的错误消息类似,例如:
(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 ...)这仅用于调试/信息。我假设有一种方法,因为message正在做这件事,但这对我们用户来说是公开的吗?
发布于 2012-05-25 22:38:33
查看prin1-to-string和相关函数(prin1、princ等)。一定要试试手册!http://www.gnu.org/software/emacs/manual/html_node/elisp/Output-Functions.html
发布于 2012-05-26 21:40:31
在您的示例中,message没有做任何事情(它只是拒绝运行),所以到字符串的转换是由read-eval-print循环完成的,该循环捕获错误并将其转换为文本消息。是的,message也可以做到这一点,它通过调用format来做到这一点,它在内部使用了像prin1-to-string这样的东西。所以(format "%S" <foo>)会做你的事情-to-string。
发布于 2016-12-03 06:53:48
message的第一个参数应该是一个格式字符串(与传递给format函数的字符串相同。如果你给它的格式是"%s“(或者像Stefan's answer.中的"%S”),它会把你给它的任何东西字符串化为下一个参数。
大写的S版本将对字符串中的字符进行转义,以便可以将其再次读取为s表达式。在这种情况下,我认为这就是您想要的。因此,你不需要过多地修改代码就能得到你想要的东西:
(message "%S" (file-attributes "."))https://stackoverflow.com/questions/10755677
复制相似问题