patch 9.0.0114: the command line takes up space even when not used

Problem:    The command line takes up space even when not used.
Solution:   Allow for 'cmdheight' to be set to zero. (Shougo Matsushita,
            closes #10675, closes #940)
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 6e5e09f..f41bc5f 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -3704,6 +3704,7 @@
     int		endcolumn = FALSE;	// cursor in last column when done
     pos_T	old_cursor = curwin->w_cursor;
     int		start_nsubs;
+    int		cmdheight0 = p_ch == 0;
 #ifdef FEAT_EVAL
     int		save_ma = 0;
     int		save_sandbox = 0;
@@ -4010,6 +4011,14 @@
 	}
     }
 
+    if (cmdheight0)
+    {
+	// If cmdheight is 0, cmdheight must be set to 1 when we enter command
+	// line.
+	set_option_value((char_u *)"ch", 1L, NULL, 0);
+	redraw_statuslines();
+    }
+
     /*
      * Check for a match on each line.
      */
@@ -4833,6 +4842,10 @@
 	changed_window_setting();
 #endif
 
+    // Restore cmdheight
+    if (cmdheight0)
+	set_option_value((char_u *)"ch", 0L, NULL, 0);
+
     vim_regfree(regmatch.regprog);
     vim_free(sub_copy);