Mercurial > vim
diff src/main.c @ 12547:aa3f6d093f4b v8.0.1152
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
commit https://github.com/vim/vim/commit/2a02745709127bd56ccdbac8c568b3c25f3072a7
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Sep 26 19:10:37 2017 +0200
patch 8.0.1152: encoding of error message wrong in Cygwin terminal
Problem: Encoding of error message wrong in Cygwin terminal.
Solution: Get locale from environment variables. (Ken Takata)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 26 Sep 2017 19:15:05 +0200 |
parents | 68d7bc045dbe |
children | a75fea44fb77 |
line wrap: on
line diff
--- a/src/main.c +++ b/src/main.c @@ -2564,6 +2564,21 @@ check_tty(mparm_T *parmp) #if defined(WIN3264) && !defined(FEAT_GUI_W32) if (is_cygpty_used()) { +# if defined(FEAT_MBYTE) && defined(HAVE_BIND_TEXTDOMAIN_CODESET) \ + && defined(FEAT_GETTEXT) + char *s, *tofree = NULL; + + /* Set the encoding of the error message based on $LC_ALL or + * other environment variables instead of 'encoding'. + * Note that the message is shown on a Cygwin terminal (e.g. + * mintty) which encoding is based on $LC_ALL or etc., not the + * current codepage used by normal Win32 console programs. */ + tofree = s = enc_locale_env(NULL); + if (s == NULL) + s = "utf-8"; /* Use "utf-8" by default. */ + (void)bind_textdomain_codeset(VIMPACKAGE, s); + vim_free(tofree); +# endif mch_errmsg(_("Vim: Error: This version of Vim does not run in a Cygwin terminal\n")); exit(1); }