]> granicus.if.org Git - vim/commitdiff
updated for version 7.4.363 v7.4.363
authorBram Moolenaar <Bram@vim.org>
Wed, 9 Jul 2014 18:51:07 +0000 (20:51 +0200)
committerBram Moolenaar <Bram@vim.org>
Wed, 9 Jul 2014 18:51:07 +0000 (20:51 +0200)
Problem:    In Windows console typing 0xCE does not work.
Solution:   Convert 0xCE to K_NUL 3. (Nobuhiro Takasaki et al.)

src/os_win32.c
src/term.c
src/version.c

index 09e5c610ddec8029eb8ab27a74db4e5c62a206a1..0c896efc374b9ff60f50496edf7062f62d512eef 100644 (file)
@@ -619,7 +619,7 @@ win32_enable_privilege(LPTSTR lpszPrivilege, BOOL bEnable)
        return FALSE;
     }
 
-    tokenPrivileges.PrivilegeCount           = 1;
+    tokenPrivileges.PrivilegeCount          = 1;
     tokenPrivileges.Privileges[0].Luid       = luid;
     tokenPrivileges.Privileges[0].Attributes = bEnable ?
                                                    SE_PRIVILEGE_ENABLED : 0;
@@ -1785,13 +1785,14 @@ mch_inchar(
 #endif
            {
                int     n = 1;
+               int     conv = FALSE;
 
-               /* A key may have one or two bytes. */
                typeahead[typeaheadlen] = c;
                if (ch2 != NUL)
                {
-                   typeahead[typeaheadlen + 1] = ch2;
-                   ++n;
+                   typeahead[typeaheadlen + 1] = 3;
+                   typeahead[typeaheadlen + 2] = ch2;
+                   n += 2;
                }
 #ifdef FEAT_MBYTE
                /* Only convert normal characters, not special keys.  Need to
@@ -1800,6 +1801,7 @@ mch_inchar(
                if (input_conv.vc_type != CONV_NONE
                                                && (ch2 == NUL || c != K_NUL))
                {
+                   conv = TRUE;
                    typeaheadlen -= unconverted;
                    n = convert_input_safe(typeahead + typeaheadlen,
                                n + unconverted, TYPEAHEADLEN - typeaheadlen,
@@ -1807,6 +1809,24 @@ mch_inchar(
                }
 #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
                 * when it's one byte, the 8th bit isn't set yet and not
                 * using a double-byte encoding (would become a lead
index 949b6fa4bcded44fb98b7212dab5221a7e3cd25a..95c29ccf48d3424449e8091cd99c730e3ce7e074 100644 (file)
@@ -3724,7 +3724,11 @@ add_termcode(name, string, flags)
        return;
     }
 
+#if defined(WIN3264) && !defined(FEAT_GUI)
+    s = vim_strnsave(string, (int)STRLEN(string) + 1);
+#else
     s = vim_strsave(string);
+#endif
     if (s == NULL)
        return;
 
@@ -3734,6 +3738,15 @@ add_termcode(name, string, flags)
        STRMOVE(s, s + 1);
        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);
 
     need_gather = TRUE;                /* need to fill termleader[] */
index 232a2d083e5cde9328e39f35cca004613395a103..150a950e7e6b877c2f5318f6ec8168533d74733d 100644 (file)
@@ -734,6 +734,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    363,
 /**/
     362,
 /**/