emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master bff6411: Fix pretty-printing of multiple JSON objec


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] master bff6411: Fix pretty-printing of multiple JSON objects
Date: Tue, 9 Jul 2019 15:36:04 -0400 (EDT)

branch: master
commit bff64115a0ad081282e0f99305f41c8dd1917d67
Author: Lars Ingebrigtsen <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>

    Fix pretty-printing of multiple JSON objects
    
    * lisp/json.el (json-pretty-print-max-secs): Make obsolete.
    (json-pretty-print): Pretty-print all JSON objects in the region
    instead of just the first one (and then deleting all other
    objects) (bug#34160).
---
 lisp/json.el | 24 ++++++++++++++----------
 1 file changed, 14 insertions(+), 10 deletions(-)

diff --git a/lisp/json.el b/lisp/json.el
index a36cff7..460fdec 100644
--- a/lisp/json.el
+++ b/lisp/json.el
@@ -734,8 +734,8 @@ you will get the following structure returned:
   "Return a JSON representation of OBJECT as a string.
 
 OBJECT should have a structure like one returned by `json-read'.
-If an error is detected during encoding, this function signals
-an error based on `json-error'."
+If an error is detected during encoding, an error based on
+`json-error' is signalled."
   (cond ((memq object (list t json-null json-false))
          (json-encode-keyword object))
         ((stringp object)      (json-encode-string object))
@@ -762,6 +762,7 @@ With prefix argument MINIMIZE, minimize it instead."
 The function `json-pretty-print' uses `replace-region-contents'
 (which see) passing the value of this variable as argument
 MAX-SECS.")
+(make-obsolete-variable 'json-pretty-print-max-secs nil "27.1")
 
 (defun json-pretty-print (begin end &optional minimize)
   "Pretty-print selected region.
@@ -771,14 +772,17 @@ With prefix argument MINIMIZE, minimize it instead."
         ;; Distinguish an empty objects from 'null'
         (json-null :json-null)
         ;; Ensure that ordering is maintained
-        (json-object-type 'alist))
-    (replace-region-contents
-     begin end
-     (lambda () (json-encode (json-read)))
-     json-pretty-print-max-secs
-     ;; FIXME: What's a good value here?  Can we use something better,
-     ;; e.g., by deriving a value from the size of the region?
-     64)))
+        (json-object-type 'alist)
+        json)
+    (save-restriction
+      (narrow-to-region begin end)
+      (goto-char begin)
+      (while (setq json (condition-case _
+                            (json-read)
+                          (json-error nil)))
+        (delete-region begin (point))
+        (insert (json-encode json))
+        (setq begin (point))))))
 
 (defun json-pretty-print-buffer-ordered (&optional minimize)
   "Pretty-print current buffer with object keys ordered.



reply via email to

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