Andreas Schwab writes: > want to use EQ instead anyway, since you are comparing with a symbol. Thanks. Attached is a new patch, which also seems much more elegant. I am not a C expert. Can some one comment on it? Shall I commit it? I have tested it in these ways, and it seems to implement the suggested functionality completely. (message t) nil (message t nil) nil (message t "%s") "%s" We changed args[0], Is the value intact? -- (let ((a t)) (message a) a) t (message t "%%") "%%" (message "%%") "%" (message t nil 1 2 3 4 ) nil (message t "a" 1 2 3 4 ) "a" (message "%s" 1 2 3 4 ) "1" ----