Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: Here document in code chunks



On Wed, 2 Sep 2015 10:03:47 +0100
Peter Stephenson <p.stephenson@xxxxxxxxxxx> wrote:
> On Wed, 2 Sep 2015 10:50:07 +0200
> Mikael Magnusson <mikachu@xxxxxxxxx> wrote:
>> % f() { cat << x << y; }
>> foo
>> x
>> bar
>> y
>> % which f
>> f () {
>>     cat <<x <<y
>> foo
>> xbar
>> y
>> }
>>
>> There should be a newline between x and bar in the output. The
>> function itself works fine.

It seems to be this simple.  (Here, here.)

pws

diff --git a/Src/text.c b/Src/text.c
index 3978a26..7e65f43 100644
--- a/Src/text.c
+++ b/Src/text.c
@@ -77,8 +77,8 @@ taddpending(char *str1, char *str2)
      */
     if (tpending) {
 	int oldlen = strlen(tpending);
-	tpending = zrealloc(tpending, len + oldlen);
-	sprintf(tpending + oldlen, "%s%s", str1, str2);
+	tpending = zrealloc(tpending, len + oldlen + 1);
+	sprintf(tpending + oldlen, "\n%s%s", str1, str2);
     } else {
 	tpending = (char *)zalloc(len);
 	sprintf(tpending, "%s%s", str1, str2);
diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst
index 602341d..d7fe22f 100644
--- a/Test/A04redirect.ztst
+++ b/Test/A04redirect.ztst
@@ -555,3 +555,34 @@
 0:Assignment with exec used for redirection: POSIX_BUILTINS
 >x=And this
 ?This should appear, too
+
+  fn-two-heres() {
+# tabs below
+    cat <<-x <<-y
+	foo
+	x
+	bar
+	y
+  }
+  which -x2 fn-two-heres
+  fn-two-heres
+  eval "$(which -x2 fn-two-heres)"
+  fn-two-heres
+  print $functions[fn-two-heres]
+0:Two here-documents in a line are shown correctly.
+>fn-two-heres () {
+>  cat <<x <<y
+>foo
+>x
+>bar
+>y
+>}
+>foo
+>bar
+>foo
+>bar
+>	cat <<x <<y
+>foo
+>x
+>bar
+>y



Messages sorted by: Reverse Date, Date, Thread, Author