(log-source reader & body)
If reader is a SourceLoggingPushbackReader, execute body in a source
logging context. Otherwise, execute body, returning the result.
Source
(defmacro log-source
"If reader is a SourceLoggingPushbackReader, execute body in a source
logging context. Otherwise, execute body, returning the result."
[reader & body]
`(if (and (source-logging-reader? ~reader)
(not (whitespace? (peek-char ~reader))))
(log-source* ~reader (^:once fn* [] ~@body))
(do ~@body)))