Skip to content
Permalink
Browse files

patch 8.0.0411: menu translations don't match when case is changed.

Problem:    We can't change the case in menu entries, it breaks translations.
Solution:   Ignore case when looking up a menu translation.
  • Loading branch information...
brammool committed Mar 4, 2017
1 parent a54d2fc commit 11dd8c1201033dd74e2ea665ba277425b4b965b0
Showing with 24 additions and 2 deletions.
  1. +2 −2 src/menu.c
  2. +20 −0 src/testdir/test_menu.vim
  3. +2 −0 src/version.c
@@ -2455,7 +2455,7 @@ menutrans_lookup(char_u *name, int len)
char_u *dname;

for (i = 0; i < menutrans_ga.ga_len; ++i)
if (STRNCMP(name, tp[i].from, len) == 0 && tp[i].from[len] == NUL)
if (STRNICMP(name, tp[i].from, len) == 0 && tp[i].from[len] == NUL)
return tp[i].to;

/* Now try again while ignoring '&' characters. */
@@ -2466,7 +2466,7 @@ menutrans_lookup(char_u *name, int len)
if (dname != NULL)
{
for (i = 0; i < menutrans_ga.ga_len; ++i)
if (STRCMP(dname, tp[i].from_noamp) == 0)
if (STRICMP(dname, tp[i].from_noamp) == 0)
{
vim_free(dname);
return tp[i].to;
@@ -1,9 +1,29 @@
" Test that the system menu can be loaded.

if !has('menu')
finish
endif

func Test_load_menu()
try
source $VIMRUNTIME/menu.vim
catch
call assert_false(1, 'error while loading menus: ' . v:exception)
endtry
source $VIMRUNTIME/delmenu.vim
endfunc

func Test_translate_menu()
if !has('multi_lang')
return
endif
if !filereadable($VIMRUNTIME . '/lang/menu_de_de.latin1.vim')
throw 'Skipped: translated menu not found'
endif

set langmenu=de_de
source $VIMRUNTIME/menu.vim
call assert_match(':browse tabnew', execute(':menu File.In\ neuem\ Tab\ öffnen\.\.\.'))

source $VIMRUNTIME/delmenu.vim
endfunc
@@ -764,6 +764,8 @@ static char *(features[]) =

static int included_patches[] =
{ /* Add new patch number below this line */
/**/
411,
/**/
410,
/**/

0 comments on commit 11dd8c1

Please sign in to comment.
You can’t perform that action at this time.