emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r115616: * lisp/simple.el (eval-expression-print-for


From: Juri Linkov
Subject: [Emacs-diffs] trunk r115616: * lisp/simple.el (eval-expression-print-format): Don't check for
Date: Thu, 19 Dec 2013 21:02:53 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 115616
revision-id: address@hidden
parent: address@hidden
fixes bug: http://debbugs.gnu.org/12985
committer: Juri Linkov <address@hidden>
branch nick: trunk
timestamp: Thu 2013-12-19 23:02:46 +0200
message:
  * lisp/simple.el (eval-expression-print-format): Don't check for
  command names and the last command.  Always display additional
  formats of the integer result in the echo area, and insert them
  to the current buffer only with a zero prefix arg.
  Display character when char-displayable-p is non-nil.
  (eval-expression): With a zero prefix arg, set `print-length' and
  `print-level' to nil, and insert the integer values from
  `eval-expression-print-format' at the end.  Doc fix. 
  
  * lisp/emacs-lisp/lisp-mode.el (eval-print-last-sexp): Add arg
  `eval-last-sexp-arg-internal'.  Doc fix.
  (eval-last-sexp-1): Pass arg `eval-last-sexp-arg-internal' to
  `eval-last-sexp-print-value'.  Doc fix.
  (eval-last-sexp-print-value): Add arg `eval-last-sexp-arg-internal'.
  Set `print-length' and `print-level' to nil when arg is zero.
  (eval-last-sexp): Doc fix.
  (eval-defun-2): Print the integer values from
  `eval-expression-print-format' at the end.
  
  * lisp/emacs-lisp/edebug.el (edebug-eval-defun): Print the integer
  values from `eval-expression-print-format' at the end.
  
  * lisp/ielm.el (ielm-eval-input): Print the integer
  values from `eval-expression-print-format' at the end.
modified:
  etc/NEWS                       news-20100311060928-aoit31wvzf25yr1z-1
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/emacs-lisp/edebug.el      edebug.el-20091113204419-o5vbwnq5f7feedwu-483
  lisp/emacs-lisp/lisp-mode.el   lispmode.el-20091113204419-o5vbwnq5f7feedwu-205
  lisp/ielm.el                   ielm.el-20091113204419-o5vbwnq5f7feedwu-770
  lisp/simple.el                 simple.el-20091113204419-o5vbwnq5f7feedwu-403
=== modified file 'etc/NEWS'
--- a/etc/NEWS  2013-12-19 00:29:41 +0000
+++ b/etc/NEWS  2013-12-19 21:02:46 +0000
@@ -119,6 +119,12 @@
 ** `eval-defun' on an already defined defcustom calls the :set function,
 if there is one.
 
+** A zero prefix arg of `eval-last-sexp' (`C-x C-e'),
+`eval-expression' (`M-:') and `eval-print-last-sexp' (`C-j') inserts
+a list with no limit on its length and level (by using nil values of
+`print-length' and `print-level'), and inserts additional formats for
+integers (octal, hexadecimal, and character).
+
 ** If the new variable `enable-dir-local-variables' is nil,
 directory local variables are ignored.  May be useful for some modes
 that want to ignore directory-locals while still respecting file-locals.

=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2013-12-19 16:25:25 +0000
+++ b/lisp/ChangeLog    2013-12-19 21:02:46 +0000
@@ -1,3 +1,30 @@
+2013-12-19  Juri Linkov  <address@hidden>
+
+       * simple.el (eval-expression-print-format): Don't check for
+       command names and the last command.  Always display additional
+       formats of the integer result in the echo area, and insert them
+       to the current buffer only with a zero prefix arg.
+       Display character when char-displayable-p is non-nil.
+       (eval-expression): With a zero prefix arg, set `print-length' and
+       `print-level' to nil, and insert the integer values from
+       `eval-expression-print-format' at the end.  Doc fix.  (Bug#12985)
+
+       * emacs-lisp/lisp-mode.el (eval-print-last-sexp): Add arg
+       `eval-last-sexp-arg-internal'.  Doc fix.
+       (eval-last-sexp-1): Pass arg `eval-last-sexp-arg-internal' to
+       `eval-last-sexp-print-value'.  Doc fix.
+       (eval-last-sexp-print-value): Add arg `eval-last-sexp-arg-internal'.
+       Set `print-length' and `print-level' to nil when arg is zero.
+       (eval-last-sexp): Doc fix.
+       (eval-defun-2): Print the integer values from
+       `eval-expression-print-format' at the end.
+
+       * emacs-lisp/edebug.el (edebug-eval-defun): Print the integer
+       values from `eval-expression-print-format' at the end.
+
+       * ielm.el (ielm-eval-input): Print the integer
+       values from `eval-expression-print-format' at the end.
+
 2013-12-19  Teodor Zlatanov  <address@hidden>
 
        * net/eww.el (eww-exit, eww-close, eww-mode-map): Revert change of

=== modified file 'lisp/emacs-lisp/edebug.el'
--- a/lisp/emacs-lisp/edebug.el 2013-08-08 23:14:20 +0000
+++ b/lisp/emacs-lisp/edebug.el 2013-12-19 21:02:46 +0000
@@ -497,7 +497,10 @@
                        (put (nth 1 form) 'saved-face nil)))))
     (setq edebug-result (eval (eval-sexp-add-defvars form) lexical-binding))
     (if (not edebugging)
-       (princ edebug-result)
+       (prog1
+           (princ edebug-result)
+         (let ((str (eval-expression-print-format edebug-result)))
+           (if str (princ str))))
       edebug-result)))
 
 

=== modified file 'lisp/emacs-lisp/lisp-mode.el'
--- a/lisp/emacs-lisp/lisp-mode.el      2013-11-05 09:47:47 +0000
+++ b/lisp/emacs-lisp/lisp-mode.el      2013-12-19 21:02:46 +0000
@@ -858,7 +858,7 @@
 \\{lisp-interaction-mode-map}"
   :abbrev-table nil)
 
-(defun eval-print-last-sexp ()
+(defun eval-print-last-sexp (&optional eval-last-sexp-arg-internal)
   "Evaluate sexp before point; print value into current buffer.
 
 If `eval-expression-debug-on-error' is non-nil, which is the default,
@@ -866,11 +866,13 @@
 
 Note that printing the result is controlled by the variables
 `eval-expression-print-length' and `eval-expression-print-level',
-which see."
-  (interactive)
+which see.  With a zero prefix arg, print output with no limit
+on the length and level of lists, and include additional formats
+for integers (octal, hexadecimal, and character)."
+  (interactive "P")
   (let ((standard-output (current-buffer)))
     (terpri)
-    (eval-last-sexp t)
+    (eval-last-sexp (or eval-last-sexp-arg-internal t))
     (terpri)))
 
 
@@ -1013,18 +1015,26 @@
 
 (defun eval-last-sexp-1 (eval-last-sexp-arg-internal)
   "Evaluate sexp before point; print value in the echo area.
-With argument, print output into current buffer."
+With argument, print output into current buffer.
+With a zero prefix arg, print output with no limit on the length
+and level of lists, and include additional formats for integers
+\(octal, hexadecimal, and character)."
   (let ((standard-output (if eval-last-sexp-arg-internal (current-buffer) t)))
     ;; Setup the lexical environment if lexical-binding is enabled.
     (eval-last-sexp-print-value
-     (eval (eval-sexp-add-defvars (preceding-sexp)) lexical-binding))))
-
-
-(defun eval-last-sexp-print-value (value)
+     (eval (eval-sexp-add-defvars (preceding-sexp)) lexical-binding)
+     eval-last-sexp-arg-internal)))
+
+
+(defun eval-last-sexp-print-value (value &optional eval-last-sexp-arg-internal)
   (let ((unabbreviated (let ((print-length nil) (print-level nil))
                         (prin1-to-string value)))
-       (print-length eval-expression-print-length)
-       (print-level eval-expression-print-level)
+       (print-length (and (not (zerop (prefix-numeric-value
+                                       eval-last-sexp-arg-internal)))
+                          eval-expression-print-length))
+       (print-level (and (not (zerop (prefix-numeric-value
+                                      eval-last-sexp-arg-internal)))
+                         eval-expression-print-level))
        (beg (point))
        end)
     (prog1
@@ -1070,6 +1080,9 @@
 Interactively, with prefix argument, print output into current buffer.
 Truncates long output according to the value of the variables
 `eval-expression-print-length' and `eval-expression-print-level'.
+With a zero prefix arg, print output with no limit on the length
+and level of lists, and include additional formats for integers
+\(octal, hexadecimal, and character).
 
 If `eval-expression-debug-on-error' is non-nil, which is the default,
 this command arranges for all errors to enter the debugger."
@@ -1167,6 +1180,8 @@
                          ;; will make eval-region return.
                          (goto-char end)
                          form))))))
+  (let ((str (eval-expression-print-format (car values))))
+    (if str (princ str)))
   ;; The result of evaluation has been put onto VALUES.  So return it.
   (car values))
 

=== modified file 'lisp/ielm.el'
--- a/lisp/ielm.el      2013-10-18 00:55:15 +0000
+++ b/lisp/ielm.el      2013-12-19 21:02:46 +0000
@@ -458,7 +458,9 @@
             ;; 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))))
+              (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)"))
           (quit  (setq error-type "IELM Error")

=== modified file 'lisp/simple.el'
--- a/lisp/simple.el    2013-12-18 02:43:47 +0000
+++ b/lisp/simple.el    2013-12-19 21:02:46 +0000
@@ -1365,13 +1365,12 @@
 in addition to the value printed by prin1 in functions which
 display the result of expression evaluation."
   (if (and (integerp value)
-           (or (not (memq this-command '(eval-last-sexp eval-print-last-sexp)))
-               (eq this-command last-command)
-               (if (boundp 'edebug-active) edebug-active)))
+          (or (eq standard-output t)
+              (zerop (prefix-numeric-value current-prefix-arg))))
       (let ((char-string
-             (if (or (if (boundp 'edebug-active) edebug-active)
-                    (memq this-command '(eval-last-sexp eval-print-last-sexp)))
-                 (prin1-char value))))
+            (if (and (characterp value)
+                     (char-displayable-p value))
+                (prin1-char value))))
         (if char-string
             (format " (#o%o, #x%x, %s)" value value char-string)
           (format " (#o%o, #x%x)" value value)))))
@@ -1399,8 +1398,11 @@
 Value is also consed on to front of the variable `values'.
 Optional argument INSERT-VALUE non-nil (interactively,
 with prefix argument) means insert the result into the current buffer
-instead of printing it in the echo area.  Truncates long output
-according to the value of the variables `eval-expression-print-length'
+instead of printing it in the echo area.  With a zero prefix arg,
+insert the result with no limit on the length and level of lists,
+and include additional formats for integers (octal, hexadecimal,
+and character).  Truncates long output according to the value
+of the variables `eval-expression-print-length'
 and `eval-expression-print-level'.
 
 If `eval-expression-debug-on-error' is non-nil, which is the default,
@@ -1422,13 +1424,19 @@
       (unless (eq old-value new-value)
        (setq debug-on-error new-value))))
 
-  (let ((print-length eval-expression-print-length)
-       (print-level eval-expression-print-level)
+  (let ((print-length (and (not (zerop (prefix-numeric-value insert-value)))
+                          eval-expression-print-length))
+       (print-level (and (not (zerop (prefix-numeric-value insert-value)))
+                         eval-expression-print-level))
         (deactivate-mark))
     (if insert-value
        (with-no-warnings
         (let ((standard-output (current-buffer)))
-          (prin1 (car values))))
+          (prog1
+              (prin1 (car values))
+            (when (zerop (prefix-numeric-value insert-value))
+              (let ((str (eval-expression-print-format (car values))))
+                (if str (princ str)))))))
       (prog1
           (prin1 (car values) t)
         (let ((str (eval-expression-print-format (car values))))


reply via email to

[Prev in Thread] Current Thread [Next in Thread]