diff options
| author | Gemini Lasswell | 2018-05-27 11:38:00 -0700 |
|---|---|---|
| committer | Gemini Lasswell | 2018-05-27 11:38:00 -0700 |
| commit | 0f48d18fd2a30f29cc3592a835d2a2254c9b0afb (patch) | |
| tree | 06ffe197481689bb051dfe0ebd04edaea892f13d /test/lisp | |
| parent | 584f05cb11a8010f31beaf07c9ef4180b70d1d66 (diff) | |
| download | emacs-0f48d18fd2a30f29cc3592a835d2a2254c9b0afb.tar.gz emacs-0f48d18fd2a30f29cc3592a835d2a2254c9b0afb.zip | |
Make cl-print respect print-level and print-length (bug#31559)
* lisp/emacs-lisp/cl-print.el (cl-print--depth): New variable.
(cl-print-object) <cons>: Print ellipsis if printing depth greater
than 'print-level' or length of list greater than 'print-length'.
(cl-print-object) <vector>: Truncate printing with ellipsis if
vector is longer than 'print-length'.
(cl-print-object) <cl-structure-object>: Truncate printing with
ellipsis if structure has more slots than 'print-length'.
(cl-print-object) <:around>: Bind 'cl-print--depth'.
* test/lisp/emacs-lisp/cl-print-tests.el
(cl-print-tests-3, cl-print-tests-4): New tests.
Diffstat (limited to 'test/lisp')
| -rw-r--r-- | test/lisp/emacs-lisp/cl-print-tests.el | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/cl-print-tests.el b/test/lisp/emacs-lisp/cl-print-tests.el index d986c4015d7..bfce4a16cec 100644 --- a/test/lisp/emacs-lisp/cl-print-tests.el +++ b/test/lisp/emacs-lisp/cl-print-tests.el | |||
| @@ -47,6 +47,31 @@ | |||
| 47 | "\\`(#1=#s(foo 1 2 3) #1#)\\'" | 47 | "\\`(#1=#s(foo 1 2 3) #1#)\\'" |
| 48 | (cl-prin1-to-string (list x x))))))) | 48 | (cl-prin1-to-string (list x x))))))) |
| 49 | 49 | ||
| 50 | (cl-defstruct (cl-print-tests-struct | ||
| 51 | (:constructor cl-print-tests-con)) | ||
| 52 | a b c d e) | ||
| 53 | |||
| 54 | (ert-deftest cl-print-tests-3 () | ||
| 55 | "CL printing observes `print-length'." | ||
| 56 | (let ((long-list (make-list 5 'a)) | ||
| 57 | (long-vec (make-vector 5 'b)) | ||
| 58 | (long-struct (cl-print-tests-con)) | ||
| 59 | (print-length 4)) | ||
| 60 | (should (equal "(a a a a ...)" (cl-prin1-to-string long-list))) | ||
| 61 | (should (equal "[b b b b ...]" (cl-prin1-to-string long-vec))) | ||
| 62 | (should (equal "#s(cl-print-tests-struct :a nil :b nil :c nil :d nil ...)" | ||
| 63 | (cl-prin1-to-string long-struct))))) | ||
| 64 | |||
| 65 | (ert-deftest cl-print-tests-4 () | ||
| 66 | "CL printing observes `print-level'." | ||
| 67 | (let ((deep-list '(a (b (c (d (e)))))) | ||
| 68 | (deep-struct (cl-print-tests-con)) | ||
| 69 | (print-level 4)) | ||
| 70 | (setf (cl-print-tests-struct-a deep-struct) deep-list) | ||
| 71 | (should (equal "(a (b (c (d ...))))" (cl-prin1-to-string deep-list))) | ||
| 72 | (should (equal "#s(cl-print-tests-struct :a (a (b (c ...))) :b nil :c nil :d nil :e nil)" | ||
| 73 | (cl-prin1-to-string deep-struct))))) | ||
| 74 | |||
| 50 | (ert-deftest cl-print-circle () | 75 | (ert-deftest cl-print-circle () |
| 51 | (let ((x '(#1=(a . #1#) #1#))) | 76 | (let ((x '(#1=(a . #1#) #1#))) |
| 52 | (let ((print-circle nil)) | 77 | (let ((print-circle nil)) |