mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
updated for version 7.1-158
This commit is contained in:
@@ -486,10 +486,11 @@ _OnDeadChar(
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert Unicode character "ch" to bytes in "string[slen]".
|
* Convert Unicode character "ch" to bytes in "string[slen]".
|
||||||
|
* When "had_alt" is TRUE the ALT key was included in "ch".
|
||||||
* Return the length.
|
* Return the length.
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
char_to_string(int ch, char_u *string, int slen)
|
char_to_string(int ch, char_u *string, int slen, int had_alt)
|
||||||
{
|
{
|
||||||
int len;
|
int len;
|
||||||
int i;
|
int i;
|
||||||
@@ -522,8 +523,22 @@ char_to_string(int ch, char_u *string, int slen)
|
|||||||
* "enc_codepage" is non-zero use the standard Win32 function,
|
* "enc_codepage" is non-zero use the standard Win32 function,
|
||||||
* otherwise use our own conversion function (e.g., for UTF-8). */
|
* otherwise use our own conversion function (e.g., for UTF-8). */
|
||||||
if (enc_codepage > 0)
|
if (enc_codepage > 0)
|
||||||
|
{
|
||||||
len = WideCharToMultiByte(enc_codepage, 0, wstring, len,
|
len = WideCharToMultiByte(enc_codepage, 0, wstring, len,
|
||||||
string, slen, 0, NULL);
|
string, slen, 0, NULL);
|
||||||
|
/* If we had included the ALT key into the character but now the
|
||||||
|
* upper bit is no longer set, that probably means the conversion
|
||||||
|
* failed. Convert the original character and set the upper bit
|
||||||
|
* afterwards. */
|
||||||
|
if (had_alt && len == 1 && ch >= 0x80 && string[0] < 0x80)
|
||||||
|
{
|
||||||
|
wstring[0] = ch & 0x7f;
|
||||||
|
len = WideCharToMultiByte(enc_codepage, 0, wstring, len,
|
||||||
|
string, slen, 0, NULL);
|
||||||
|
if (len == 1) /* safety check */
|
||||||
|
string[0] |= 0x80;
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
len = 1;
|
len = 1;
|
||||||
@@ -573,7 +588,7 @@ _OnChar(
|
|||||||
char_u string[40];
|
char_u string[40];
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
len = char_to_string(ch, string, 40);
|
len = char_to_string(ch, string, 40, FALSE);
|
||||||
if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts)
|
if (len == 1 && string[0] == Ctrl_C && ctrl_c_interrupts)
|
||||||
{
|
{
|
||||||
trash_input_buf();
|
trash_input_buf();
|
||||||
@@ -640,7 +655,7 @@ _OnSysChar(
|
|||||||
{
|
{
|
||||||
/* Although the documentation isn't clear about it, we assume "ch" is
|
/* Although the documentation isn't clear about it, we assume "ch" is
|
||||||
* a Unicode character. */
|
* a Unicode character. */
|
||||||
len += char_to_string(ch, string + len, 40 - len);
|
len += char_to_string(ch, string + len, 40 - len, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
add_to_input_buf(string, len);
|
add_to_input_buf(string, len);
|
||||||
@@ -1775,7 +1790,7 @@ process_message(void)
|
|||||||
int len;
|
int len;
|
||||||
|
|
||||||
/* Handle "key" as a Unicode character. */
|
/* Handle "key" as a Unicode character. */
|
||||||
len = char_to_string(key, string, 40);
|
len = char_to_string(key, string, 40, FALSE);
|
||||||
add_to_input_buf(string, len);
|
add_to_input_buf(string, len);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@@ -1521,7 +1521,12 @@ mch_inchar(
|
|||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
#ifdef FEAT_MBYTE
|
||||||
|
n = (*mb_char2bytes)(typeahead[typeaheadlen] | 0x80,
|
||||||
|
typeahead + typeaheadlen);
|
||||||
|
#else
|
||||||
typeahead[typeaheadlen] |= 0x80;
|
typeahead[typeaheadlen] |= 0x80;
|
||||||
|
#endif
|
||||||
modifiers &= ~MOD_MASK_ALT;
|
modifiers &= ~MOD_MASK_ALT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -666,6 +666,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 */
|
||||||
|
/**/
|
||||||
|
158,
|
||||||
/**/
|
/**/
|
||||||
157,
|
157,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user