0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.1.0082: in terminal window, typing : at more prompt, inserts ':'

Problem:    In terminal window, typing : at more prompt, inserts ':' instead
            of starting another Ex command.
Solution:   Add skip_term_loop and set it when putting ':' in the typeahead
            buffer.
This commit is contained in:
Bram Moolenaar
2018-06-19 17:49:24 +02:00
parent f07f9e731e
commit 1d4754f96f
4 changed files with 21 additions and 2 deletions

View File

@@ -371,6 +371,11 @@ EXTERN int highlight_stltermnc[9]; /* On top of user */
# endif # endif
# endif # endif
#endif #endif
#ifdef FEAT_TERMINAL
// When TRUE skip calling terminal_loop() once. Used when
// typing ':' at the more prompt.
EXTERN int skip_term_loop INIT(= FALSE);
#endif
#ifdef FEAT_GUI #ifdef FEAT_GUI
EXTERN char_u *use_gvimrc INIT(= NULL); /* "-U" cmdline argument */ EXTERN char_u *use_gvimrc INIT(= NULL); /* "-U" cmdline argument */
#endif #endif

View File

@@ -1339,7 +1339,8 @@ main_loop(
#ifdef FEAT_TERMINAL #ifdef FEAT_TERMINAL
if (term_use_loop() if (term_use_loop()
&& oa.op_type == OP_NOP && oa.regname == NUL && oa.op_type == OP_NOP && oa.regname == NUL
&& !VIsual_active) && !VIsual_active
&& !skip_term_loop)
{ {
/* If terminal_loop() returns OK we got a key that is handled /* If terminal_loop() returns OK we got a key that is handled
* in Normal model. With FAIL we first need to position the * in Normal model. With FAIL we first need to position the
@@ -1348,8 +1349,13 @@ main_loop(
normal_cmd(&oa, TRUE); normal_cmd(&oa, TRUE);
} }
else else
#endif
{
#ifdef FEAT_TERMINAL
skip_term_loop = FALSE;
#endif #endif
normal_cmd(&oa, TRUE); normal_cmd(&oa, TRUE);
}
} }
} }
} }
@@ -3320,7 +3326,7 @@ usage(void)
main_msg(_("-dev <device>\t\tUse <device> for I/O")); main_msg(_("-dev <device>\t\tUse <device> for I/O"));
#endif #endif
#ifdef FEAT_ARABIC #ifdef FEAT_ARABIC
main_msg(_("-A\t\t\tstart in Arabic mode")); main_msg(_("-A\t\t\tStart in Arabic mode"));
#endif #endif
#ifdef FEAT_RIGHTLEFT #ifdef FEAT_RIGHTLEFT
main_msg(_("-H\t\t\tStart in Hebrew mode")); main_msg(_("-H\t\t\tStart in Hebrew mode"));

View File

@@ -1219,6 +1219,9 @@ wait_return(int redraw)
cmdline_row = msg_row; cmdline_row = msg_row;
skip_redraw = TRUE; /* skip redraw once */ skip_redraw = TRUE; /* skip redraw once */
do_redraw = FALSE; do_redraw = FALSE;
#ifdef FEAT_TERMINAL
skip_term_loop = TRUE;
#endif
} }
/* /*
@@ -2827,6 +2830,9 @@ do_more_prompt(int typed_char)
/* Since got_int is set all typeahead will be flushed, but we /* Since got_int is set all typeahead will be flushed, but we
* want to keep this ':', remember that in a special way. */ * want to keep this ':', remember that in a special way. */
typeahead_noflush(':'); typeahead_noflush(':');
#ifdef FEAT_TERMINAL
skip_term_loop = TRUE;
#endif
cmdline_row = Rows - 1; /* put ':' on this line */ cmdline_row = Rows - 1; /* put ':' on this line */
skip_redraw = TRUE; /* skip redraw once */ skip_redraw = TRUE; /* skip redraw once */
need_wait_return = FALSE; /* don't wait in main() */ need_wait_return = FALSE; /* don't wait in main() */

View File

@@ -761,6 +761,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
82,
/**/ /**/
81, 81,
/**/ /**/