From 9727f7c38c0997d574e73a8d75b783cc76d81c7d Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Sat, 30 Jan 2021 20:51:16 +0000 Subject: [PATCH] Simplify Lisp -> Texinfo printing * dev/examples-to-info.el (dash--print-lisp-as-texi): Use print-escape-control-characters instead of emulating it. * dash.texi: Regenerate. --- dash.texi | 2 +- dev/examples-to-info.el | 27 +++++++++------------------ 2 files changed, 10 insertions(+), 19 deletions(-) diff --git a/dash.texi b/dash.texi index f6149b5..aae4f9f 100644 --- a/dash.texi +++ b/dash.texi @@ -4345,7 +4345,7 @@ See @var{srfi-26} for detailed description. @end group @group (-map (-cut <> 1 2 3) '(list vector string)) - @result{} '((1 2 3) [1 2 3] "\^A\^B\^C") + @result{} '((1 2 3) [1 2 3] "\1\2\3") @end group @end example @end defmac diff --git a/dev/examples-to-info.el b/dev/examples-to-info.el index da5da5d..1730a46 100644 --- a/dev/examples-to-info.el +++ b/dev/examples-to-info.el @@ -30,25 +30,16 @@ (defun dash--print-lisp-as-texi (obj) "Print Lisp OBJ suitably for Texinfo." - (save-excursion (let ((print-quoted t)) (prin1 obj))) - (while (re-search-forward (rx (| (group "\\?") - (group (in "{}")) - (group ?\' symbol-start "nil" symbol-end) - (not (in ?\n print)))) + (let ((print-quoted t) + (print-escape-control-characters t)) + (save-excursion (prin1 obj))) + (while (re-search-forward (rx (| (group ?\' symbol-start "nil" symbol-end) + (group "\\?") (in "{}"))) nil 'move) - (cond ((match-beginning 1) - ;; Unescape `-any\?' -> `-any?'. - (delete-region (- (point) 2) (1- (point)))) - ((match-beginning 2) - ;; Escape braces with @. - (backward-char) - (insert ?@) - (forward-char)) - ;; Don't let '() be printed as 'nil. - ((match-beginning 3) (replace-match "'()" t t)) - ;; Translate unprintable characters such as ?\^A. - ((let ((desc (text-char-description (preceding-char)))) - (replace-match (concat "\\" desc) t t)))))) + (replace-match (cond ((match-beginning 1) "'()") ; 'nil -> '(). + ((match-beginning 2) "?") ; `-any\?' -> `-any?'. + ("@\\&")) ; { -> @{. + t))) (defun example-to-string (example) (pcase-let* ((`(,actual ,err ,expected) example)