LogoopenSUSE Build Service > Projects
Sign Up | Log In

View File 1251-stdlib-Make-pP-insert-no-line-breaks-with-field-widt.patch of Package erlang (Project home:Ledest:erlang:20)

From 380af78843891b0994f625d392fad674c1bc4fef Mon Sep 17 00:00:00 2001
From: Hans Bolinder <hasse@erlang.org>
Date: Mon, 4 Jun 2018 13:58:02 +0200
Subject: [PATCH 1/4] stdlib: Make pP insert no line breaks with field width
 zero

See also https://bugs.erlang.org/browse/ERL-607.

A zero field width used to insert line breaks "everywhere", but with
this patch no line breaks are inserted.
---
 lib/stdlib/doc/src/io.xml        | 17 ++++++++++++++---
 lib/stdlib/src/io_lib_pretty.erl |  2 ++
 lib/stdlib/test/io_SUITE.erl     | 22 ++++++++++++++++++++--
 3 files changed, 36 insertions(+), 5 deletions(-)

diff --git a/lib/stdlib/doc/src/io.xml b/lib/stdlib/doc/src/io.xml
index f1037ec76b..d4a2713840 100644
--- a/lib/stdlib/doc/src/io.xml
+++ b/lib/stdlib/doc/src/io.xml
@@ -4,7 +4,7 @@
 <erlref>
   <header>
     <copyright>
-      <year>1996</year><year>2017</year>
+      <year>1996</year><year>2018</year>
       <holder>Ericsson AB. All Rights Reserved.</holder>
     </copyright>
     <legalnotice>
@@ -332,11 +332,22 @@ Here T = [{attributes,[[{id,age,1.5},
           {tag,{'PRIVATE',3}},
           {mode,implicit}]
 ok</pre>
+
+            <p>As from Erlang/OTP 21.0, a field width of value
+	      <c>0</c> can be used for specifying that a line is
+	      infinitely long, which means that no line breaks
+	      are inserted. For example:</p>
+
+	    <pre>
+5> <input>io:fwrite("~0p~n", [lists:seq(1, 30)]).</input>
+[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30]
+ok</pre>
+
             <p>When the modifier <c>l</c> is specified, no detection of
               printable character lists takes place, for example:</p>
             <pre>
-5> <input>S = [{a,"a"}, {b, "b"}].</input>
-6> <input>io:fwrite("~15p~n", [S]).</input>
+6> <input>S = [{a,"a"}, {b, "b"}],
+   io:fwrite("~15p~n", [S]).</input>
 [{a,"a"},
  {b,"b"}]
 ok
diff --git a/lib/stdlib/src/io_lib_pretty.erl b/lib/stdlib/src/io_lib_pretty.erl
index 3d5a979b3e..dca1b37ef3 100644
--- a/lib/stdlib/src/io_lib_pretty.erl
+++ b/lib/stdlib/src/io_lib_pretty.erl
@@ -131,6 +131,8 @@ print(Term, Col, Ll, D, M0, T, RecDefFun, Enc, Str) when is_tuple(Term);
     %% use Len as CHAR_MAX if M0 = -1
     M = max_cs(M0, Len),
     if
+        Ll =:= 0 ->
+            write(If);
         Len < Ll - Col, Len =< M ->
             %% write the whole thing on a single line when there is room
             write(If);
-- 
2.16.4