>> >> (prin1 '(("'A" . [?Á]) >> >> ("'E" . [?É]) >> >> ("'I" . [?Í]) >> >> ("'O" . [?Ó]) >> >> ("'U" . [?Ú]) >> >> ("'Y" . [?Ý])) >> >> (current-buffer)) >> > >> > Why do you have to use prin1? >> >> Actually I need to use pp-to-string to pretty-print the list, >> but pp-to-string calls '(prin1 object (current-buffer))'. > > prin1 accepts a function as its 2nd argument; can you use that? I tried to use a function in the 2nd argument, but it's called for every digit of the integer that represents a character, so I don't know what to do with these digits. However, do you think something like the following is a good idea? Let-binding a new variable 'print-integers-as-chars' to t: (let ((print-integers-as-chars t)) (pp '(("'A" . [?Á]) ("'E" . [?É]) ("'I" . [?Í]) ("'O" . [?Ó]) ("'U" . [?Ú]) ("'Y" . [?Ý])) (current-buffer))) prints integers as characters: (("'A" . [?Á]) ("'E" . [?É]) ("'I" . [?Í]) ("'O" . [?Ó]) ("'U" . [?Ú]) ("'Y" . [?Ý])) with this patch: