Assuming this reader macro in clisp\slime:
(SET-DISPATCH-MACRO-CHARACTER (CHARACTER "#") (CHARACTER "!") (LAMBDA (STREAM CHAR ARG) (DECLARE (IGNORE CHAR ARG)) ;; read characters up to the first occurence of "!#", ;; and return the string read. (loop for curr = (read-char stream nil nil t) while (and curr (or (char/= (character "!") curr) (char/= (character "#") (peek-char nil stream nil nil t)))) collect curr into str finally (read-char stream nil nil t) (return (coerce str 'string)))))
Typing:
#! hello RET
returns:
" hello "
instead of waiting for further input.
With clisp\xterm this works as expected:
#! hello RET
waits for further input:
the last line !# RET
returns:
" hello the last line "