]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't use ellipses while cl-printing strings.
authorAlan Mackenzie <acm@muc.de>
Tue, 19 Sep 2023 10:25:34 +0000 (10:25 +0000)
committerAlan Mackenzie <acm@muc.de>
Tue, 19 Sep 2023 10:25:34 +0000 (10:25 +0000)
This fixes bug#65680.  The former use of print-length as a
bound on the length of the printed string was erroneous,
causing error messages preceding backtracees to get
unnecessarily truncated to 50 characters.

* lisp/emacs-lisp/cl-print.el (cl-print-object <string>):
Remove the substitution of ellipses for long strings.

* test/lisp/emacs-lisp/cl-print-tests.el
(cl-print-tests-ellipsis-string): Remove this test.

lisp/emacs-lisp/cl-print.el
test/lisp/emacs-lisp/cl-print-tests.el

index 71929caabb82b90f47d5aeea34e8e77e6ababa6f..627b6cc308901b4815cc89abdbdb8a691a9e70ac 100644 (file)
@@ -264,27 +264,17 @@ into a button whose action shows the function's disassembly.")
 (cl-defmethod cl-print-object ((object string) stream)
   (unless stream (setq stream standard-output))
   (let* ((has-properties (or (text-properties-at 0 object)
-                             (next-property-change 0 object)))
-         (len (length object))
-         (limit (if (natnump print-length) (min print-length len) len)))
+                             (next-property-change 0 object))))
     (if (and has-properties
              cl-print--depth
              (natnump print-level)
              (> cl-print--depth print-level))
         (cl-print-insert-ellipsis object nil stream)
-      ;; Print all or part of the string
+      ;; Print the string.
       (when has-properties
         (princ "#(" stream))
-      (if (= limit len)
-          (prin1 (if has-properties (substring-no-properties object) object)
-                 stream)
-        (let ((part (concat (substring-no-properties object 0 limit) "...")))
-          (prin1 part stream)
-          (when (bufferp stream)
-            (with-current-buffer stream
-              (cl-print-propertize-ellipsis object limit
-                                            (- (point) 4)
-                                            (- (point) 1) stream)))))
+      (prin1 (if has-properties (substring-no-properties object) object)
+             stream)
       ;; Print the property list.
       (when has-properties
         (cl-print--string-props object 0 stream)
index 3073a42e39d392309813a97cb97cae175924c4d4..e44a8e5ccc46c09ad327a4e131aa6b67292e3c54 100644 (file)
     (cl-print-tests-check-ellipsis-expansion
      [a [b [c [d [e]]]]] "[a [b [c ...]]]" "[d [e]]")))
 
-(ert-deftest cl-print-tests-ellipsis-string ()
-  "Ellipsis expansion works in strings."
-  (let ((print-length 4)
-        (print-level 3))
-    (cl-print-tests-check-ellipsis-expansion
-     "abcdefg" "\"abcd...\"" "efg")
-    (cl-print-tests-check-ellipsis-expansion
-     "abcdefghijk" "\"abcd...\"" "efgh...")
-    (cl-print-tests-check-ellipsis-expansion
-     '(1 (2 (3 #("abcde" 0 5 (test t)))))
-     "(1 (2 (3 ...)))" "#(\"abcd...\" 0 5 (test t))")
-    (cl-print-tests-check-ellipsis-expansion
-     #("abcd" 0 1 (bold t) 1 2 (invisible t) 3 4 (italic t))
-     "#(\"abcd\" 0 1 (bold t) ...)" "1 2 (invisible t) ...")))
-
 (ert-deftest cl-print-tests-ellipsis-struct ()
   "Ellipsis expansion works in structures."
   (let ((print-length 4)
 
     ;; Print something which needs to be abbreviated and which can be.
     (should (< (length (cl-print-to-string-with-limit #'cl-prin1 thing100 100))
-               100
+               150 ;; 100.  The LIMIT argument is advisory rather than absolute.
                (length (cl-prin1-to-string thing100))))
 
     ;; Print something resistant to easy abbreviation.