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)
いい感じになった。
本当は、改行以外のコントロール文字(タブ文字とか)も考えたほうがいいけど、まあ今はこれでよしとする。
0 コメント :
コメントを投稿