Bjorn Winckler wrote:
> On 22/03/2008, björn <[EMAIL PROTECTED]> wrote: > > On 17/03/2008, Charles E Campbell Jr <[EMAIL PROTECTED]> wrote: > > > > > > Hello! > > > > > > Netrw is using > > > > > > silent! emenu Buffers.Refresh\ menu > > > > > > to make certain that the buffers menu is refreshed. Unfortunately, this > > > doesn't work for non-English locales, as was pointed out to me by Stefan > > > Bittner: > > > > > > :emenu Puffer.Aktualisieren -> Works > > > :emenu Buffers.Refresh -> E334 (the silent! prevents any > > > obvious problems, but the refresh isn't being done) > > > > > > So, how may I penetrate the maze (at least to me) of locale and get this > > > menu refreshed? Note that the function calls <SID>BMShow() -- so the > > > underlying function isn't available to be called. > > > > > > I have been thinking about this problem from another viewpoint. > > > > In MacVim I have a command that needs to locate menu items from a menu > > descriptor (e.g. "Buffers.Refresh") just like :emenu does. The > > problem with the :emenu routine (as pointed out above) is that it only > > works if the (input) descriptor has been translated already (when > > using non-English locales, of course). > > > > I will be writing a routine for MacVim that takes a descriptor and > > first translates it, then looks it up in the menu hierarchy. Once > > done I could use this routine in :emenu as well, thereby fixing the > > problem Chip describes above. Would such a patch be desirable? > > (Otherwise I'll keep it inside MacVim.) > > Attached to this post is a patch that makes :emenu accept English menu > descriptors even when the menus have been translated. Basically, I've > just made ex_emenu() work the same way ex_menu() does; that is, given > a descriptor, translate it first, then look for the translated > descriptor in the menu hierarchy. (An alternative approach to this > patch would be to make menu_namecmp() locale independent.) > > With this patch it is possible to write scripts that call :emenu and > which work independently of whether a user has translated menus or > not. Without this patch :emenu must be passed the translated menu > name, hence making :emenu pretty much useless in scripts. Good, thanks. I do think that, for backwards compatibility, :emenu needs to accept both the translated and the untranslated menu name. I suppose that when translation fails it works that way, so it should be OK. > There is quite a lot of code duplication in menu.c already and this > patch actually adds to the chaos. Maybe it would be worthwhile to try > to get rid of code duplication? Might I suggest this as a "simple" > GSoC project (or part of a larger project)? Cleanup would be good, but then we also need some tests to verify it still works the same way. Not really interesting for a SoC project, I suppose. -- hundred-and-one symptoms of being an internet addict: 193. You ask your girlfriend to drive home so you can sit back with your PDA and download the information to your laptop /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\ /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\ download, build and distribute -- http://www.A-A-P.org /// \\\ help me help AIDS victims -- http://ICCF-Holland.org /// --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_dev" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---