updated for version 7.4.363
Problem: In Windows console typing 0xCE does not work. Solution: Convert 0xCE to K_NUL 3. (Nobuhiro Takasaki et al.)
This commit is contained in:
@ -1785,13 +1785,14 @@ mch_inchar(
|
|||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
int n = 1;
|
int n = 1;
|
||||||
|
int conv = FALSE;
|
||||||
|
|
||||||
/* A key may have one or two bytes. */
|
|
||||||
typeahead[typeaheadlen] = c;
|
typeahead[typeaheadlen] = c;
|
||||||
if (ch2 != NUL)
|
if (ch2 != NUL)
|
||||||
{
|
{
|
||||||
typeahead[typeaheadlen + 1] = ch2;
|
typeahead[typeaheadlen + 1] = 3;
|
||||||
++n;
|
typeahead[typeaheadlen + 2] = ch2;
|
||||||
|
n += 2;
|
||||||
}
|
}
|
||||||
#ifdef FEAT_MBYTE
|
#ifdef FEAT_MBYTE
|
||||||
/* Only convert normal characters, not special keys. Need to
|
/* Only convert normal characters, not special keys. Need to
|
||||||
@ -1800,6 +1801,7 @@ mch_inchar(
|
|||||||
if (input_conv.vc_type != CONV_NONE
|
if (input_conv.vc_type != CONV_NONE
|
||||||
&& (ch2 == NUL || c != K_NUL))
|
&& (ch2 == NUL || c != K_NUL))
|
||||||
{
|
{
|
||||||
|
conv = TRUE;
|
||||||
typeaheadlen -= unconverted;
|
typeaheadlen -= unconverted;
|
||||||
n = convert_input_safe(typeahead + typeaheadlen,
|
n = convert_input_safe(typeahead + typeaheadlen,
|
||||||
n + unconverted, TYPEAHEADLEN - typeaheadlen,
|
n + unconverted, TYPEAHEADLEN - typeaheadlen,
|
||||||
@ -1807,6 +1809,24 @@ mch_inchar(
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (conv)
|
||||||
|
{
|
||||||
|
char_u *p = typeahead + typeaheadlen;
|
||||||
|
char_u *e = typeahead + TYPEAHEADLEN;
|
||||||
|
|
||||||
|
while (*p && p < e)
|
||||||
|
{
|
||||||
|
if (*p == K_NUL)
|
||||||
|
{
|
||||||
|
++p;
|
||||||
|
mch_memmove(p + 1, p, ((size_t)(e - p)) - 1);
|
||||||
|
*p = 3;
|
||||||
|
++n;
|
||||||
|
}
|
||||||
|
++p;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Use the ALT key to set the 8th bit of the character
|
/* Use the ALT key to set the 8th bit of the character
|
||||||
* when it's one byte, the 8th bit isn't set yet and not
|
* when it's one byte, the 8th bit isn't set yet and not
|
||||||
* using a double-byte encoding (would become a lead
|
* using a double-byte encoding (would become a lead
|
||||||
|
|||||||
13
src/term.c
13
src/term.c
@ -3724,7 +3724,11 @@ add_termcode(name, string, flags)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(WIN3264) && !defined(FEAT_GUI)
|
||||||
|
s = vim_strnsave(string, (int)STRLEN(string) + 1);
|
||||||
|
#else
|
||||||
s = vim_strsave(string);
|
s = vim_strsave(string);
|
||||||
|
#endif
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -3734,6 +3738,15 @@ add_termcode(name, string, flags)
|
|||||||
STRMOVE(s, s + 1);
|
STRMOVE(s, s + 1);
|
||||||
s[0] = term_7to8bit(string);
|
s[0] = term_7to8bit(string);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(WIN3264) && !defined(FEAT_GUI)
|
||||||
|
if (s[0] == K_NUL)
|
||||||
|
{
|
||||||
|
STRMOVE(s + 1, s);
|
||||||
|
s[1] = 3;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
len = (int)STRLEN(s);
|
len = (int)STRLEN(s);
|
||||||
|
|
||||||
need_gather = TRUE; /* need to fill termleader[] */
|
need_gather = TRUE; /* need to fill termleader[] */
|
||||||
|
|||||||
@ -734,6 +734,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 */
|
||||||
|
/**/
|
||||||
|
363,
|
||||||
/**/
|
/**/
|
||||||
362,
|
362,
|
||||||
/**/
|
/**/
|
||||||
|
|||||||
Reference in New Issue
Block a user