changeset 55805:a4c5317be59a

* emacs-lisp/lisp-mode.el (indent-pp-sexp): New fun. (emacs-lisp-mode-map, lisp-interaction-mode-map): Bind C-M-q to `indent-pp-sexp'. (eval-last-sexp-print-value): Print additionally the value returned by `eval-expression-print-format'.
author Juri Linkov <juri@jurta.org>
date Fri, 28 May 2004 21:09:05 +0000
parents 9766648e58a2
children 5e730ddfd23a
files lisp/emacs-lisp/lisp-mode.el
diffstat 1 files changed, 18 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/lisp-mode.el	Fri May 28 21:07:47 2004 +0000
+++ b/lisp/emacs-lisp/lisp-mode.el	Fri May 28 21:09:05 2004 +0000
@@ -239,6 +239,7 @@
     (set-keymap-parent emacs-lisp-mode-map lisp-mode-shared-map)
     (define-key emacs-lisp-mode-map "\e\t" 'lisp-complete-symbol)
     (define-key emacs-lisp-mode-map "\e\C-x" 'eval-defun)
+    (define-key emacs-lisp-mode-map "\e\C-q" 'indent-pp-sexp)
     (define-key emacs-lisp-mode-map [menu-bar] (make-sparse-keymap))
     (define-key emacs-lisp-mode-map [menu-bar emacs-lisp]
       (cons "Emacs-Lisp" map))
@@ -377,6 +378,7 @@
   (let ((map (make-sparse-keymap)))
     (set-keymap-parent map lisp-mode-shared-map)
     (define-key map "\e\C-x" 'eval-defun)
+    (define-key map "\e\C-q" 'indent-pp-sexp)
     (define-key map "\e\t" 'lisp-complete-symbol)
     (define-key map "\n" 'eval-print-last-sexp)
     map)
@@ -532,13 +534,13 @@
 			 (prin1-to-string value)))
 	(print-length eval-expression-print-length)
 	(print-level eval-expression-print-level)
-	(char-string (prin1-char value))
 	(beg (point))
 	end)
     (prog1
 	(prin1 value)
-      (if (and (eq standard-output t) char-string)
-	  (princ (concat " = " char-string)))
+      (if (eq standard-output t)
+          (let ((str (eval-expression-print-format value)))
+            (if str (princ str))))
       (setq end (point))
       (when (and (bufferp standard-output)
 		 (or (not (null print-length))
@@ -1092,6 +1094,19 @@
       (indent-sexp endmark)
       (set-marker endmark nil))))
 
+(defun indent-pp-sexp (&optional arg)
+  "Indent each line of the list or, with prefix ARG, pretty-printify the list."
+  (interactive "P")
+  (if arg
+      (save-excursion
+        (save-restriction
+          (narrow-to-region (point) (progn (forward-sexp 1) (point)))
+          (pp-buffer)
+          (goto-char (point-max))
+          (if (eq (char-before) ?\n)
+              (delete-char -1)))))
+  (indent-sexp))
+
 ;;;; Lisp paragraph filling commands.
 
 (defcustom emacs-lisp-docstring-fill-column 65