On Thursday 07 December 2017 10:00 PM, Junio C Hamano wrote:
+
+ if (print_waiting_for_editor) {
+ /*
+ * A dumb terminal cannot erase the line later on. Add a
+ * newline to separate the hint from subsequent output.
+ *
+ * In case the editor emits further cruft after what
+ * we wrote above, separate it from our message with SP.
I guess this part of the comment could be improved a little. I currently
interpret it as "See if the editor emits further cruft, print a space in
that case". Though, it's not what we are doing. Something like the
following, perhaps?
In a non-dumb terminal, separate our message from further cruft
that might be emitted by the editor with SP.
+ */
+ const char term = is_terminal_dumb() ? '\n' : ' ';
+
+ fprintf(stderr,
+ _("hint: Waiting for your editor to close the file...%c"),
+ term);
+ fflush(stderr);
+ }
p.argv = args;
p.env = env;
@@ -63,6 +80,13 @@ int launch_editor(const char *path, struct strbuf *buffer, const char *const *en
if (ret)
return error("There was a problem with the editor '%s'.",
editor);
+
+ if (print_waiting_for_editor && !is_terminal_dumb())
+ /*
+ * Go back to the beginning and erase the entire line to
+ * avoid wasting the vertical space.
+ */
+ fputs("\r\033[K", stderr);
}
if (!buffer)