From 889bfc7d448e69692bc42a42a4a591b11059129d Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Fri, 28 May 2004 21:09:05 +0000 Subject: [PATCH] * 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'. --- lisp/emacs-lisp/lisp-mode.el | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index fcc6517b747..1f53d9e630f 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -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 -- 2.39.5