5

誤って呼び出された関数のエラーメッセージのように、たとえば次のように表示されます。

(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 ...)

これはデバッグ/情報専用です。メッセージがそれをしているように方法があると思いますが、これは私たちのユーザーに公開されていますか?

4

3 に答える 3

6

prin1-to-string関連する関数(、、など)prin1princ調べます。そして、マニュアルを試してみてください!http://www.gnu.org/software/emacs/manual/html_node/elisp/Output-Functions.html

于 2012-05-25T14:38:32.733 に答える
3

あなたの例では、message何もしなかったので(実行を拒否しただけです)、文字列への変換は、エラーをキャッチしてテキストメッセージに変換したread-eval-printループによって行われました。しかし、はい、messageそれもできます。それは、format内部で。のようなものを使用するを呼び出すことによってそれを行いprin1-to-stringます。だから(format "%S" <foo>)あなたのことをひもでつなぐでしょう。

于 2012-05-26T13:40:30.653 に答える
3

の最初の引数は、フォーマット文字列(関数messageに渡すものと同じです。フォーマット "%s"(またはStefanの回答のように "%S")を指定すると、指定したものはすべて文字列になります) 。次の引数として。format

大文字のSバージョンは、文字列内の文字をエスケープして、S式として再度読み取ることができるようにします。この場合、それがあなたが望むものだと思います。したがって、探しているものを取得するためにコードをあまり変更する必要はありません。

(message "%S" (file-attributes "."))
于 2016-12-02T22:53:48.077 に答える