]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/ielm.el (ielm-eval-input): Use cl-print.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 15 Jan 2018 22:04:05 +0000 (17:04 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 15 Jan 2018 22:04:05 +0000 (17:04 -0500)
lisp/ielm.el

index fb285e80f6eb9168ad98024bb380c342d042b401..259e1b9f79fbbaab75b4f5471a3aea515be2a77d 100644 (file)
@@ -436,15 +436,26 @@ nonempty, then flushes the buffer."
 
       (goto-char pmark)
       (unless error-type
-        (condition-case nil
+        (condition-case err
             ;; Self-referential objects cause loops in the printer, so
             ;; trap quits here. May as well do errors, too
             (unless for-effect
-              (setq output (concat output (pp-to-string result)
-                                  (let ((str (eval-expression-print-format result)))
-                                    (if str (propertize str 'font-lock-face 'shadow))))))
-          (error (setq error-type "IELM Error")
-                 (setq result "Error during pretty-printing (bug in pp)"))
+              (let* ((ielmbuf (current-buffer))
+                     (aux (let ((str (eval-expression-print-format result)))
+                           (if str (propertize str 'font-lock-face 'shadow)))))
+                (setq output (with-temp-buffer
+                               (let ((tmpbuf (current-buffer)))
+                                 ;; Use print settings (e.g. print-circle,
+                                 ;; print-gensym, etc...) from the
+                                 ;; right buffer!
+                                 (with-current-buffer ielmbuf
+                                   (cl-prin1 result tmpbuf))
+                                 (pp-buffer)
+                                 (concat (buffer-string) aux))))))
+          (error
+           (setq error-type "IELM Error")
+           (setq result (format "Error during pretty-printing (bug in pp): %S"
+                                err)))
           (quit  (setq error-type "IELM Error")
                  (setq result "Quit during pretty-printing"))))
       (if error-type