summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGemini Lasswell <gazally@runbox.com>2018-05-29 11:41:09 -0700
committerGemini Lasswell <gazally@runbox.com>2018-06-07 08:27:43 -0700
commitc6ef3c8321e4907a250eb0906274f6f59d5bfe0d (patch)
treeb841c43da3cb7fd786504f6175e53b03857b8646
parent26b52ac40e78cb7ac3df3bf87e514ad137f0ce10 (diff)
downloademacs-c6ef3c8321e4907a250eb0906274f6f59d5bfe0d.tar.gz
Make cl-print respect print-quoted (bug#31649)
* lisp/emacs-lisp/cl-print.el (cl-print-object) <cons>: Observe print-quoted when printing quote and its relatives. Add printing of 'function' as #'.
-rw-r--r--lisp/emacs-lisp/cl-print.el9
-rw-r--r--test/lisp/emacs-lisp/cl-print-tests.el10
2 files changed, 17 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/cl-print.el b/lisp/emacs-lisp/cl-print.el
index 780b9fb3fe9..66561ce2644 100644
--- a/lisp/emacs-lisp/cl-print.el
+++ b/lisp/emacs-lisp/cl-print.el
@@ -61,11 +61,16 @@ call other entry points instead, such as `cl-prin1'."
(princ "..." stream)
(let ((car (pop object))
(count 1))
- (if (and (memq car '(\, quote \` \,@ \,.))
+ (if (and print-quoted
+ (memq car '(\, quote function \` \,@ \,.))
(consp object)
(null (cdr object)))
(progn
- (princ (if (eq car 'quote) '\' car) stream)
+ (princ (cond
+ ((eq car 'quote) '\')
+ ((eq car 'function) "#'")
+ (t car))
+ stream)
(cl-print-object (car object) stream))
(princ "(" stream)
(cl-print-object car stream)
diff --git a/test/lisp/emacs-lisp/cl-print-tests.el b/test/lisp/emacs-lisp/cl-print-tests.el
index bfce4a16cec..404d323d0c1 100644
--- a/test/lisp/emacs-lisp/cl-print-tests.el
+++ b/test/lisp/emacs-lisp/cl-print-tests.el
@@ -72,6 +72,16 @@
(should (equal "#s(cl-print-tests-struct :a (a (b (c ...))) :b nil :c nil :d nil :e nil)"
(cl-prin1-to-string deep-struct)))))
+(ert-deftest cl-print-tests-5 ()
+ "CL printing observes `print-quoted'."
+ (let ((quoted-stuff '('a #'b `(,c ,@d))))
+ (let ((print-quoted t))
+ (should (equal "('a #'b `(,c ,@d))"
+ (cl-prin1-to-string quoted-stuff))))
+ (let ((print-quoted nil))
+ (should (equal "((quote a) (function b) (\\` ((\\, c) (\\,@ d))))"
+ (cl-prin1-to-string quoted-stuff))))))
+
(ert-deftest cl-print-circle ()
(let ((x '(#1=(a . #1#) #1#)))
(let ((print-circle nil))