> Otherwise LGTM, thanks. OK, I think I have it almost ready see the patches below. I just hit one snag when trying to fix the tests. We have for example the following test: (ert-deftest pp-print-quote () (should (string= (pp-to-string 'quote) "quote")) (should (string= (pp-to-string ''quote) "'quote")) (should (string= (pp-to-string '('a 'b)) "('a 'b)\n")) (should (string= (pp-to-string '(''quote 'quote)) "(''quote 'quote)\n")) This is how the old code behaved, i.e. the output sometimes ends with \n and sometimes not, depending on whether the object printed is a list or not. Currently, my new code behaves the same when using `pp-28` or `pp-29` but when using the new default (i.e. `pp-fill`) the output never ends in \n. This change was not intentional, but I think it makes sense because it's more consistent. I'm not completely sure how we should fix this. I think the old behavior of sometimes adding \n and sometimes not is not desirable, so I think we should change it (a backward incompatible change). We have two remaining choices: A) never add \n B) always add \n AFAICT, in practice the old behavior resulted in a \n added in most cases, so (B) should lead to less breakage, but OTOH I think (A) would be cleaner since it's easier for callers to add a \n when needed than for them to remove a \n. WDYT? A or B? Stefan