]> git.eshelyaron.com Git - emacs.git/commitdiff
* emacs-lisp/lisp-mode.el (indent-pp-sexp): New fun.
authorJuri Linkov <juri@jurta.org>
Fri, 28 May 2004 21:09:05 +0000 (21:09 +0000)
committerJuri Linkov <juri@jurta.org>
Fri, 28 May 2004 21:09:05 +0000 (21:09 +0000)
(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'.

lisp/emacs-lisp/lisp-mode.el

index fcc6517b747380a645e9aca7bd08d62f0d5fdc16..1f53d9e630f723009408035b999c663dfda3fb8b 100644 (file)
@@ -239,6 +239,7 @@ All commands in `lisp-mode-shared-map' are inherited by this map.")
     (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 @@ if that value is non-nil."
   (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 @@ With argument, print output into current buffer."
                         (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 @@ ENDPOS is encountered."
       (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