aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmilio Jesus Gallego Arias2020-05-18 22:12:29 +0200
committerEmilio Jesus Gallego Arias2020-05-19 19:46:56 +0200
commitfb0caf14daff2e433dfc33ca564d49b26f7e8fb4 (patch)
treef521c06d90108790ae58594cb928c5d5efec7299
parented0f2f08e31ee4e645aa6e52970ddefc60f1f4f9 (diff)
[topfmt] Set formatter + flush fix
Closes #12351. We set the parameters of the redirect formatter to be same than the ones in stdout. I guess the original semantics was to ignore the parameters, so I'm unsure we want to do this. While we are a it, we include a fix on the formatter, which _must_ be flushed before closing its associated channel.
-rw-r--r--doc/changelog/07-commands-and-options/12358-redirect_printing_params.rst5
-rw-r--r--test-suite/misc/redirect_printing.out2
-rwxr-xr-xtest-suite/misc/redirect_printing.sh4
-rw-r--r--test-suite/misc/redirect_printing.v2
-rw-r--r--vernac/topfmt.ml3
5 files changed, 16 insertions, 0 deletions
diff --git a/doc/changelog/07-commands-and-options/12358-redirect_printing_params.rst b/doc/changelog/07-commands-and-options/12358-redirect_printing_params.rst
new file mode 100644
index 0000000000..5b35090d7e
--- /dev/null
+++ b/doc/changelog/07-commands-and-options/12358-redirect_printing_params.rst
@@ -0,0 +1,5 @@
+- **Changed:**
+ :cmd:Redirect now obeys the :opt:`Printing Width` and
+ :opt:`Printing Depth` flags.
+ (`#12358 <https://github.com/coq/coq/pull/12358>`_,
+ by Emilio Jesus Gallego Arias).
diff --git a/test-suite/misc/redirect_printing.out b/test-suite/misc/redirect_printing.out
new file mode 100644
index 0000000000..4f45c4d4c2
--- /dev/null
+++ b/test-suite/misc/redirect_printing.out
@@ -0,0 +1,2 @@
+nat_ind
+ : forall P : nat -> Prop, P 0 -> (forall n : nat, P n -> P (S n)) -> forall n : nat, P n
diff --git a/test-suite/misc/redirect_printing.sh b/test-suite/misc/redirect_printing.sh
new file mode 100755
index 0000000000..7da17407f3
--- /dev/null
+++ b/test-suite/misc/redirect_printing.sh
@@ -0,0 +1,4 @@
+#!/usr/bin/env bash
+
+$coqc misc/redirect_printing.v
+diff -u redirect_test.out misc/redirect_printing.out
diff --git a/test-suite/misc/redirect_printing.v b/test-suite/misc/redirect_printing.v
new file mode 100644
index 0000000000..2f9096bcb8
--- /dev/null
+++ b/test-suite/misc/redirect_printing.v
@@ -0,0 +1,2 @@
+Set Printing Width 999999.
+Redirect "redirect_test" Check nat_ind.
diff --git a/vernac/topfmt.ml b/vernac/topfmt.ml
index 2d8734ff7f..a28d8f605b 100644
--- a/vernac/topfmt.ml
+++ b/vernac/topfmt.ml
@@ -404,6 +404,7 @@ let with_output_to_file fname func input =
let channel = open_out (String.concat "." [fname; "out"]) in
let old_fmt = !std_ft, !err_ft, !deep_ft in
let new_ft = Format.formatter_of_out_channel channel in
+ set_gp new_ft (get_gp !std_ft);
std_ft := new_ft;
err_ft := new_ft;
deep_ft := new_ft;
@@ -412,6 +413,7 @@ let with_output_to_file fname func input =
std_ft := Util.pi1 old_fmt;
err_ft := Util.pi2 old_fmt;
deep_ft := Util.pi3 old_fmt;
+ Format.pp_print_flush new_ft ();
close_out channel;
output
with reraise ->
@@ -419,6 +421,7 @@ let with_output_to_file fname func input =
std_ft := Util.pi1 old_fmt;
err_ft := Util.pi2 old_fmt;
deep_ft := Util.pi3 old_fmt;
+ Format.pp_print_flush new_ft ();
close_out channel;
Exninfo.iraise reraise