Mercurial > vim
changeset 10400:17165aabc731 v8.0.0094
commit https://github.com/vim/vim/commit/63e4344edc0cc1b4ed68a9d9c787265799602670
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Nov 19 17:28:44 2016 +0100
patch 8.0.0094
Problem: When vimrun.exe is not found the error message is not properly
encoded.
Solution: Use utf-16 and MessageBoxW(). (Ken Takata)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 19 Nov 2016 17:30:05 +0100 |
parents | 1471410c04ae |
children | 7d33f2b6d6ae |
files | src/os_win32.c src/version.c |
diffstat | 2 files changed, 20 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/os_win32.c +++ b/src/os_win32.c @@ -4705,12 +4705,24 @@ mch_call_shell( #if defined(FEAT_GUI_W32) if (need_vimrun_warning) { - MessageBox(NULL, - _("VIMRUN.EXE not found in your $PATH.\n" - "External commands will not pause after completion.\n" - "See :help win32-vimrun for more information."), - _("Vim Warning"), - MB_ICONWARNING); + char *msg = _("VIMRUN.EXE not found in your $PATH.\n" + "External commands will not pause after completion.\n" + "See :help win32-vimrun for more information."); + char *title = _("Vim Warning"); +# ifdef FEAT_MBYTE + if (enc_codepage >= 0 && (int)GetACP() != enc_codepage) + { + WCHAR *wmsg = enc_to_utf16((char_u *)msg, NULL); + WCHAR *wtitle = enc_to_utf16((char_u *)title, NULL); + + if (wmsg != NULL && wtitle != NULL) + MessageBoxW(NULL, wmsg, wtitle, MB_ICONWARNING); + vim_free(wmsg); + vim_free(wtitle); + } + else +# endif + MessageBox(NULL, msg, title, MB_ICONWARNING); need_vimrun_warning = FALSE; } if (!s_dont_use_vimrun && p_stmp)