pme の 文字列中の改行文字をなんとかしてみる

pme はすごく便利だけど、少しだけ困ったことがある。
マクロ定義の中の文字列に改行が含まれていた場合は、そこで改行してしまって見づらくなることだ。
たとえば、以前書いたこのマクロは、

(pme (dbg-msgbox 'foo 'bar))
(msgbox (concat "~S
" "~S
")
         'foo 'bar)
nil

と展開されてしまって、ちょっと悲しい。
下のようにしてみた。

;; mod
(defun pprint-1 (s0)
  (pp-loop (substitute-string (format nil "~S" s0) "\n" "\\\\n"))
  (values))

ついでに、最後に nil って表示されてたのを消した。
結果、さっきの例だと↓こうなる。

(pme (dbg-msgbox 'foo 'bar))
(msgbox (concat "~S\n" "~S\n")
         'foo 'bar)

いい感じになった。
本当は、改行以外のコントロール文字(タブ文字とか)も考えたほうがいいけど、まあ今はこれでよしとする。