summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/os_mswin.c2
-rw-r--r--src/os_win32.c31
-rw-r--r--src/version.c2
3 files changed, 33 insertions, 2 deletions
diff --git a/src/os_mswin.c b/src/os_mswin.c
index dff09397..dfd40af8 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -344,7 +344,7 @@ mch_restore_title(
int which)
{
#ifndef FEAT_GUI_MSWIN
- mch_settitle((which & 1) ? g_szOrigTitle : NULL, NULL);
+ SetConsoleTitle(g_szOrigTitle);
#endif
}
diff --git a/src/os_win32.c b/src/os_win32.c
index eb66ed2d..a831ada5 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -4648,6 +4648,35 @@ mch_call_shell(
#ifdef FEAT_TITLE
char szShellTitle[512];
+# ifdef FEAT_MBYTE
+ /* Change the title to reflect that we are in a subshell. */
+ if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+ {
+ WCHAR szShellTitle[512];
+
+ if (GetConsoleTitleW(szShellTitle,
+ sizeof(szShellTitle)/sizeof(WCHAR) - 4) > 0)
+ {
+ if (cmd == NULL)
+ wcscat(szShellTitle, L" :sh");
+ else
+ {
+ WCHAR *wn = enc_to_utf16(cmd, NULL);
+
+ if (wn != NULL)
+ {
+ wcscat(szShellTitle, L" - !");
+ if ((wcslen(szShellTitle) + wcslen(wn) <
+ sizeof(szShellTitle)/sizeof(WCHAR)))
+ wcscat(szShellTitle, wn);
+ SetConsoleTitleW(szShellTitle);
+ vim_free(wn);
+ goto didset;
+ }
+ }
+ }
+ }
+#endif
/* Change the title to reflect that we are in a subshell. */
if (GetConsoleTitle(szShellTitle, sizeof(szShellTitle) - 4) > 0)
{
@@ -4659,7 +4688,7 @@ mch_call_shell(
if ((strlen(szShellTitle) + strlen(cmd) < sizeof(szShellTitle)))
strcat(szShellTitle, cmd);
}
- mch_settitle(szShellTitle, NULL);
+ SetConsoleTitle(szShellTitle);
}
#endif
diff --git a/src/version.c b/src/version.c
index fed16aa1..3388fafe 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 479,
+/**/
478,
/**/
477,