patch 9.0.0653: BS and DEL do not work properly in an interacive shell

Problem:    BS and DEL do not work properly in an interacive shell. (Gary
            Johnson)
Solution:   Adjust the length for replaced codes.
This commit is contained in:
Bram Moolenaar
2022-10-03 20:24:39 +01:00
parent b6aab8f44b
commit 01c34e7d10
5 changed files with 11 additions and 6 deletions

View File

@ -5106,7 +5106,7 @@ mch_call_shell_fork(
}
}
term_replace_bs_del_keycode(ta_buf, ta_len, len);
len = term_replace_bs_del_keycode(ta_buf, ta_len, len);
/*
* For pipes: echo the typed characters.

View File

@ -4531,7 +4531,7 @@ mch_system_piped(char *cmd, int options)
}
}
term_replace_bs_del_keycode(ta_buf, ta_len, len);
len = term_replace_bs_del_keycode(ta_buf, ta_len, len);
/*
* For pipes: echo the typed characters. For a pty this

View File

@ -86,5 +86,5 @@ void update_tcap(int attr);
void swap_tcap(void);
void ansi_color2rgb(int nr, char_u *r, char_u *g, char_u *b, char_u *ansi_idx);
void cterm_color2rgb(int nr, char_u *r, char_u *g, char_u *b, char_u *ansi_idx);
void term_replace_bs_del_keycode(char_u *ta_buf, int ta_len, int len);
int term_replace_bs_del_keycode(char_u *ta_buf, int ta_len, int len_arg);
/* vim: set ft=c : */

View File

@ -6733,11 +6733,13 @@ cterm_color2rgb(int nr, char_u *r, char_u *g, char_u *b, char_u *ansi_idx)
#endif
/*
* Replace K_BS by <BS> and K_DEL by <DEL>
* Replace K_BS by <BS> and K_DEL by <DEL>.
* Returns "len" adjusted for replaced codes.
*/
void
term_replace_bs_del_keycode(char_u *ta_buf, int ta_len, int len)
int
term_replace_bs_del_keycode(char_u *ta_buf, int ta_len, int len_arg)
{
int len = len_arg;
int i;
int c;
@ -6762,4 +6764,5 @@ term_replace_bs_del_keycode(char_u *ta_buf, int ta_len, int len)
if (has_mbyte)
i += (*mb_ptr2len_len)(ta_buf + i, ta_len + len - i) - 1;
}
return len;
}

View File

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