home *** CD-ROM | disk | FTP | other *** search
/ vim.ftp.fu-berlin.de / 2015-02-03.vim.ftp.fu-berlin.de.tar / vim.ftp.fu-berlin.de / patches / 6.2.384 < prev    next >
Encoding:
Internet Message Format  |  2004-03-19  |  3.6 KB

  1. To: vim-dev@vim.org
  2. Subject: Patch 6.2.384
  3. Fcc: outbox
  4. From: Bram Moolenaar <Bram@moolenaar.net>
  5. Mime-Version: 1.0
  6. Content-Type: text/plain; charset=ISO-8859-1
  7. Content-Transfer-Encoding: 8bit
  8. ------------
  9.  
  10. Patch 6.2.384
  11. Problem:    ":menu a.&b" ":unmenu a.b" only works if "&b" isn't translated.
  12. Solution:   Also compare the names without '&' characters.
  13. Files:        src/menu.c
  14.  
  15.  
  16. *** ../vim-6.2.383/src/menu.c    Tue Feb 17 21:08:58 2004
  17. --- src/menu.c    Sat Mar 20 21:06:51 2004
  18. ***************
  19. *** 2244,2249 ****
  20. --- 2244,2250 ----
  21.   typedef struct
  22.   {
  23.       char_u    *from;        /* English name */
  24. +     char_u    *from_noamp;    /* same, without '&' */
  25.       char_u    *to;        /* translated name */
  26.   } menutrans_T;
  27.   
  28. ***************
  29. *** 2264,2270 ****
  30.       char_u        *arg = eap->arg;
  31.       menutrans_T        *tp;
  32.       int            i;
  33. !     char_u        *from, *to;
  34.   
  35.       if (menutrans_ga.ga_itemsize == 0)
  36.       ga_init2(&menutrans_ga, (int)sizeof(menutrans_T), 5);
  37. --- 2265,2271 ----
  38.       char_u        *arg = eap->arg;
  39.       menutrans_T        *tp;
  40.       int            i;
  41. !     char_u        *from, *from_noamp, *to;
  42.   
  43.       if (menutrans_ga.ga_itemsize == 0)
  44.       ga_init2(&menutrans_ga, (int)sizeof(menutrans_T), 5);
  45. ***************
  46. *** 2278,2283 ****
  47. --- 2279,2285 ----
  48.       for (i = 0; i < menutrans_ga.ga_len; ++i)
  49.       {
  50.           vim_free(tp[i].from);
  51. +         vim_free(tp[i].from_noamp);
  52.           vim_free(tp[i].to);
  53.       }
  54.       ga_clear(&menutrans_ga);
  55. ***************
  56. *** 2302,2315 ****
  57.           {
  58.           tp = (menutrans_T *)menutrans_ga.ga_data;
  59.           from = vim_strsave(from);
  60.           to = vim_strnsave(to, (int)(arg - to));
  61. !         if (from != NULL && to != NULL)
  62.           {
  63.               tp[menutrans_ga.ga_len].from = from;
  64.               tp[menutrans_ga.ga_len].to = to;
  65.               ++menutrans_ga.ga_len;
  66.               --menutrans_ga.ga_room;
  67.           }
  68.           }
  69.       }
  70.       }
  71. --- 2304,2325 ----
  72.           {
  73.           tp = (menutrans_T *)menutrans_ga.ga_data;
  74.           from = vim_strsave(from);
  75. +         from_noamp = menu_text(from, NULL, NULL);
  76.           to = vim_strnsave(to, (int)(arg - to));
  77. !         if (from != NULL && from_noamp != NULL && to != NULL)
  78.           {
  79.               tp[menutrans_ga.ga_len].from = from;
  80. +             tp[menutrans_ga.ga_len].from_noamp = from_noamp;
  81.               tp[menutrans_ga.ga_len].to = to;
  82.               ++menutrans_ga.ga_len;
  83.               --menutrans_ga.ga_room;
  84.           }
  85. +         else
  86. +         {
  87. +             vim_free(from);
  88. +             vim_free(from_noamp);
  89. +             vim_free(to);
  90. +         }
  91.           }
  92.       }
  93.       }
  94. ***************
  95. *** 2346,2355 ****
  96. --- 2356,2385 ----
  97.   {
  98.       menutrans_T        *tp = (menutrans_T *)menutrans_ga.ga_data;
  99.       int            i;
  100. +     char_u        *dname;
  101. +     int            dlen;
  102.   
  103.       for (i = 0; i < menutrans_ga.ga_len; ++i)
  104.       if (STRNCMP(name, tp[i].from, len) == 0 && tp[i].from[len] == NUL)
  105.           return tp[i].to;
  106. +     /* Now try again while ignoring '&' characters. */
  107. +     i = name[len];
  108. +     name[len] = NUL;
  109. +     dname = menu_text(name, NULL, NULL);
  110. +     name[len] = i;
  111. +     if (dname != NULL)
  112. +     {
  113. +     dlen = STRLEN(dname);
  114. +     for (i = 0; i < menutrans_ga.ga_len; ++i)
  115. +         if (STRCMP(dname, tp[i].from_noamp) == 0)
  116. +         {
  117. +         vim_free(dname);
  118. +         return tp[i].to;
  119. +         }
  120. +     vim_free(dname);
  121. +     }
  122.       return NULL;
  123.   }
  124.   #endif /* FEAT_MULTI_LANG */
  125. *** ../vim-6.2.383/src/version.c    Sat Mar 20 17:59:44 2004
  126. --- src/version.c    Sat Mar 20 21:11:33 2004
  127. ***************
  128. *** 639,640 ****
  129. --- 639,642 ----
  130.   {   /* Add new patch number below this line */
  131. + /**/
  132. +     384,
  133.   /**/
  134.  
  135. -- 
  136. From "know your smileys":
  137.  ...---...   SOS
  138.  
  139.  /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net   \\\
  140. ///        Sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
  141. \\\              Project leader for A-A-P -- http://www.A-A-P.org        ///
  142.  \\\  Buy at Amazon and help AIDS victims -- http://ICCF.nl/click1.html ///
  143.