updated for version 7.0c12
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 317518d..d09e95f 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.0c.  Last change: 2006 Apr 04
+*autocmd.txt*   For Vim version 7.0c.  Last change: 2006 Apr 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -506,8 +506,8 @@
 				the change was caused by an autocommand.
 				This event is triggered when making the first
 				change in a buffer or the first change after
-				'readonly' was set,
-				just before the change is applied to the text.
+				'readonly' was set, just before the change is
+				applied to the text.
 				WARNING: If the autocommand moves the cursor
 				the effect of the change is undefined.
 							*E788*
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index b830ca0..040007a 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0c.  Last change: 2006 Apr 04
+*eval.txt*      For Vim version 7.0c.  Last change: 2006 Apr 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -819,7 +819,7 @@
 Index zero gives the first character.  This is like it works in C.  Careful:
 text column numbers start with one!  Example, to get the character under the
 cursor: >
-	:let c = getline(line("."))[col(".") - 1]
+	:let c = getline(".")[col(".") - 1]
 
 If the length of the String is less than the index, the result is an empty
 String.  A negative index always results in an empty string (reason: backwards
@@ -4562,7 +4562,7 @@
 			strpart("abcdefg", 3)       == "defg"
 <		Note: To get the first character, {start} must be 0.  For
 		example, to get three bytes under and after the cursor: >
-			strpart(getline(line(".")), col(".") - 1, 3)
+			strpart(getline("."), col(".") - 1, 3)
 <
 strridx({haystack}, {needle} [, {start}])			*strridx()*
 		The result is a Number, which gives the byte index in
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index a0a5b8d..13a5397 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0c.  Last change: 2006 Apr 04
+*syntax.txt*	For Vim version 7.0c.  Last change: 2006 Apr 06
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -2581,7 +2581,7 @@
 
 Do you want to draw with the mouse?  Try the following: >
    :function! GetPixel()
-   :   let c = getline(line("."))[col(".") - 1]
+   :   let c = getline(".")[col(".") - 1]
    :   echo c
    :   exe "noremap <LeftMouse> <LeftMouse>r".c
    :   exe "noremap <LeftDrag>	<LeftMouse>r".c
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 4134a1d..3daf3ba 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5611,7 +5611,6 @@
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
-help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index d24c5c2..bf7f428 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0c.  Last change: 2006 Apr 06
+*todo.txt*      For Vim version 7.0c.  Last change: 2006 Apr 07
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,6 +30,13 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
+Handle postponed prefix with COMPOUNDPERMITFLAG or COMPOUNDFORBIDFLAG.
+    WFP_COMPPERMIT and WFP_COMPFORBID
+
+":mkspell" still takes too long in Hungarian dictionary.
+
+Use ~/tmp/hungarian*.txt to test dictionary with.
+
 New Hungarian dictionary. (Laci Nemeth)
 -   implement use of <compoptions> in .spl file:
 -   implement CHECKCOMPOUNDREP: when a compound word seems to be OK apply REP
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 1005781..1cac881 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0c.  Last change: 2006 Apr 06
+*version7.txt*  For Vim version 7.0c.  Last change: 2006 Apr 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -160,6 +160,7 @@
 When executing a FileChangedRO autocommand it is no longer allowed to switch
 to another buffer or edit another file.  This is to prevent crashes (the event
 is triggered deep down in the code where changing buffers is not anticipated).
+It is possible to reload the buffer.
 
 ==============================================================================
 NEW FEATURES						*new-7*
@@ -951,6 +952,7 @@
 services syntax and ftplugin file. (Nikolai Weibull)
 setserial syntax and ftplugin file. (Nikolai Weibull)
 sieve syntax and ftplugin file. (Nikolai Weibull)
+SiSU syntax file (Ralph Amissah)
 Sive syntax file. (Nikolai Weibull)
 slp config, reg and spi syntax and ftplugin files. (Nikolai Weibull)
 SML indent file. (Saikat Guha)
@@ -2394,4 +2396,19 @@
 where the click was.  Beyond the labels the new tab appears at the end instead
 of after the current tab page.
 
+Inside a mapping with an expression getchar() could not be used.
+
+When vgetc is used recursively vgetc_busy protects it from being used
+recursively.  But after a ":normal" command the protection was reset.
+
+":s/a/b/n" didn't work when 'modifiable' was off.
+
+When $VIMRUNTIME includes a multi-byte character then rgb.txt could not be
+found. (Yukihiro Nakadaira)
+
+":mkspell" didn't work correctly for non-ASCII affix flags when conversion is
+needed on the spell file.
+
+glob('/dir/\$ABC/*') didn't work.
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/lang/menu_de_de.latin1.vim b/runtime/lang/menu_de_de.latin1.vim
index a08a41c..3d28581 100644
--- a/runtime/lang/menu_de_de.latin1.vim
+++ b/runtime/lang/menu_de_de.latin1.vim
@@ -1,7 +1,7 @@
 " Menu Translations:	German / Deutsch
 " Maintainer:		Georg Dahn <gorgyd@yahoo.co.uk>
 " Originally By:	Marcin Dalecki <dalecki@cs.net.pl>
-"            		Johannes Zellner <johannes@zellner.org>
+"			Johannes Zellner <johannes@zellner.org>
 " Last Change:	Sat, 11 Mar 2006 22:40:00 CEST
 " vim:set foldmethod=marker tabstop=8:
 
@@ -20,12 +20,12 @@
 " {{{ FILE / DATEI
 menutrans &File				&Datei
 menutrans &Open\.\.\.<Tab>:e		&Öffnen\.\.\.<Tab>:e
-menutrans Sp&lit-Open\.\.\.<Tab>:sp	In\ geteiltem\ &Fenster\ Öffnen\.\.\.<Tab>:sp
-menutrans Open\ Tab\.\.\.<Tab>:tabnew	In\ neuem\ &Tab\ Öffnen\.\.\.<Tab>:tabnew
+menutrans Sp&lit-Open\.\.\.<Tab>:sp	In\ geteiltem\ &Fenster\ öffnen\.\.\.<Tab>:sp
+menutrans Open\ Tab\.\.\.<Tab>:tabnew	In\ neuem\ &Tab\ öffnen\.\.\.<Tab>:tabnew
 menutrans &New<Tab>:enew		&Neue\ Datei<Tab>:enew
 menutrans &Close<Tab>:close		S&chließen<Tab>:close
 menutrans &Save<Tab>:w			&Speichern<Tab>:w
-menutrans Save\ &As\.\.\.<Tab>:sav	Speichern\ &Als\.\.\.<Tab>:sav
+menutrans Save\ &As\.\.\.<Tab>:sav	Speichern\ &als\.\.\.<Tab>:sav
 menutrans &Print			&Drucken
 menutrans Sa&ve-Exit<Tab>:wqa		Speichern\ und\ Be&enden<Tab>:wqa
 menutrans E&xit<Tab>:qa			&Beenden<Tab>:qa
@@ -44,10 +44,10 @@
 menutrans Cu&t<Tab>"+x			&Ausschneiden<Tab>"+x
 menutrans &Copy<Tab>"+y			&Kopieren<Tab>"+y
 menutrans &Paste<Tab>"+gP		Ein&fügen<Tab>"+gP
-menutrans Put\ &Before<Tab>[p		Da&vor\ Einfügen<Tab>[p
-menutrans Put\ &After<Tab>]p		Da&nach\ Einfügen<Tab>]p
-menutrans &Delete<Tab>x 		&Löschen<Tab>x
-menutrans &Select\ All<Tab>ggVG		Alles\ &Markieren<Tab>ggVG
+menutrans Put\ &Before<Tab>[p		Da&vor\ einfügen<Tab>[p
+menutrans Put\ &After<Tab>]p		Da&nach\ einfügen<Tab>]p
+menutrans &Delete<Tab>x			&Löschen<Tab>x
+menutrans &Select\ All<Tab>ggVG		Alles\ &markieren<Tab>ggVG
 menutrans &Find\.\.\.			&Suchen\.\.\.
 menutrans Find\ and\ Rep&lace\.\.\.	Suchen\ und\ &Ersetzen\.\.\.
 
@@ -55,6 +55,7 @@
 " XXX &E would conflict with 'Suchen\ und\ &Ersetzen', see above
 menutrans Settings\ &Window				E&instellungen\.\.\.
 menutrans &Global\ Settings				&Globale\ Einstellungen
+menutrans Startup\ &Settings                            &Starteinstellungen
 
 menutrans Toggle\ Pattern\ &Highlight<Tab>:set\ hls!	&Hervorhebungen\ ein-\ und\ ausschalten<Tab>:set\ hls!
 menutrans Toggle\ &Ignore-case<Tab>:set\ ic!		Großschreibung\ &ignorieren\ oder\ benutzen<Tab>:set\ ic!
@@ -66,7 +67,7 @@
 menutrans Never						Nie
 menutrans Block\ Selection				Block-Auswahl
 menutrans Insert\ mode					Einfüge-Modus
-menutrans Block\ and\ Insert				Block-\ und\ Einfüge-Modus
+menutrans Block\ and\ Insert				Block-Auswahl\ und\ Einfüge-Modus
 menutrans Always					Immer
 menutrans Toggle\ Insert\ &Mode<Tab>:set\ im!		Einfüge-&Modus\ ein-\ und\ ausschalten<Tab>:set\ im!
 menutrans Toggle\ Vi\ C&ompatible<Tab>:set\ cp!		Vi-Kompatibilität\ ein-\ und\ ausschalten<Tab>:set\ cp!
@@ -94,19 +95,19 @@
 " other options
 menutrans &Shiftwidth					&Schiebeweite
 menutrans Soft\ &Tabstop				&Tabulator
-menutrans Te&xt\ Width\.\.\.				Te&xt\ Breite\.\.\.
-menutrans &File\ Format\.\.\.				&Datei\ Format\.\.\.
+menutrans Te&xt\ Width\.\.\.				Te&xtbreite\.\.\.
+menutrans &File\ Format\.\.\.				&Dateiformat\.\.\.
 menutrans C&olor\ Scheme				F&arbschema\.\.\.
-menutrans &Keymap					&Tastatur-Belegung
+menutrans &Keymap					&Tastaturbelegung
 " }}} EDIT / EDITIEREN
 
 " {{{  TOOLS / WERKZEUGE
 if has("spell")
     menutrans &Spelling					&Rechtschreibung
-    menutrans &Spell\ Check\ On				&Rechtschreibprüfung\ An
-    menutrans Spell\ Check\ &Off			Rechtschreibprüfung\ &Aus
-    menutrans To\ &Next\ error<Tab>]s			Zum\ &Nächsten\ Fehler<Tab>]s
-    menutrans To\ &Previous\ error<Tab>[s		Zum\ &Letzten\ Fehler<Tab>[s
+    menutrans &Spell\ Check\ On				&Rechtschreibprüfung\ an
+    menutrans Spell\ Check\ &Off			Rechtschreibprüfung\ &aus
+    menutrans To\ &Next\ error<Tab>]s			Zum\ &nächsten\ Fehler<Tab>]s
+    menutrans To\ &Previous\ error<Tab>[s		Zum\ &vorherigen\ Fehler<Tab>[s
     menutrans Suggest\ &Corrections<Tab>z=		&Korrekturvorschläge<Tab>z=
     menutrans &Repeat\ correction<Tab>:spellrepall	&Wiederhole\ Korrektur<Tab>:spellrepall
     menutrans Set\ language\ to\ "en"			Verwende\ Wörterbuch\ "en"
@@ -115,7 +116,7 @@
     menutrans Set\ language\ to\ "en_gb"		Verwende\ Wörterbuch\ "en_gb"
     menutrans Set\ language\ to\ "en_nz"		Verwende\ Wörterbuch\ "en_nz"
     menutrans Set\ language\ to\ "en_us"		Verwende\ Wörterbuch\ "en_us"
-    menutrans Set\ language\ to\ "de"   		Verwende\ Wörterbuch\ "de"
+    menutrans Set\ language\ to\ "de"			Verwende\ Wörterbuch\ "de"
     menutrans &Find\ More\ Languages			&Suche\ nach\ Wörterbüchern
 endif
 if has("folding")
@@ -138,29 +139,29 @@
   menutrans Ma&rker					Ma&rkierungen
   " create and delete folds
   " TODO accelerators
-  menutrans Create\ &Fold<Tab>zf			Faltung\ Erzeugen<Tab>zf
-  menutrans &Delete\ Fold<Tab>zd			Faltung\ Löschen<Tab>zd
-  menutrans Delete\ &All\ Folds<Tab>zD			Alle\ Faltungen\ Löschen<Tab>zD
+  menutrans Create\ &Fold<Tab>zf			Faltung\ erzeugen<Tab>zf
+  menutrans &Delete\ Fold<Tab>zd			Faltung\ löschen<Tab>zd
+  menutrans Delete\ &All\ Folds<Tab>zD			Alle\ Faltungen\ löschen<Tab>zD
   " moving around in folds
-  menutrans Fold\ column\ &width			&Breite\ der\ Faltungs-Spalte
+  menutrans Fold\ column\ &width			&Breite\ der\ Faltungsspalte
 endif  " has folding
 
 if has("diff")
   menutrans &Diff					&Differenz
   menutrans &Update					&Aktualisieren
-  menutrans &Get\ Block					Block\ &Einfügen
-  menutrans &Put\ Block					Block\ &Übertragen
+  menutrans &Get\ Block					Block\ &einfügen
+  menutrans &Put\ Block					Block\ &übertragen
 endif
 
 menutrans &Tools					&Werkzeuge
 menutrans &Jump\ to\ this\ tag<Tab>g^]			&Springe\ zum\ Tag<Tab>g^]
-menutrans Jump\ &back<Tab>^T				Springe\ &Zurück<Tab>^T
-menutrans Build\ &Tags\ File				Erstelle\ &Tags\ Datei
+menutrans Jump\ &back<Tab>^T				Springe\ &zurück<Tab>^T
+menutrans Build\ &Tags\ File				Erstelle\ &Tag-Datei
 menutrans &Make<Tab>:make				&Erstellen<Tab>:make
-menutrans &List\ Errors<Tab>:cl				&Fehler\ Anzeigen<Tab>:cl
-menutrans L&ist\ Messages<Tab>:cl!			&Hinweise\ Anzeigen<Tab>:cl!
-menutrans &Next\ Error<Tab>:cn				Zum\ &Nächsten\ Fehler<Tab>:cn
-menutrans &Previous\ Error<Tab>:cp			Zum\ &Vorherigen\ Fehler<Tab>:cp
+menutrans &List\ Errors<Tab>:cl				&Fehler\ anzeigen<Tab>:cl
+menutrans L&ist\ Messages<Tab>:cl!			&Hinweise\ anzeigen<Tab>:cl!
+menutrans &Next\ Error<Tab>:cn				Zum\ &nächsten\ Fehler<Tab>:cn
+menutrans &Previous\ Error<Tab>:cp			Zum\ &vorherigen\ Fehler<Tab>:cp
 menutrans &Older\ List<Tab>:cold			&Ältere\ Liste<Tab>:cold
 menutrans N&ewer\ List<Tab>:cnew			&Neuere\ Liste<Tab>:cnew
 
@@ -178,8 +179,8 @@
 " {{{ SYNTAX / SYNTAX
 menutrans &Syntax				&Syntax
 menutrans &Show\ filetypes\ in\ menu		Dateitypen\ an&zeigen
-menutrans Set\ '&syntax'\ only			Nur\ '&syntax'\ Setzen
-menutrans Set\ '&filetype'\ too			Auch\ '&filetype'\ Setzen
+menutrans Set\ '&syntax'\ only			Nur\ '&syntax'\ setzen
+menutrans Set\ '&filetype'\ too			Auch\ '&filetype'\ setzen
 menutrans &Off					&Aus
 menutrans &Manual				&Manuell
 menutrans A&utomatic				A&utomatisch
@@ -202,11 +203,11 @@
 menutrans &Window			&Ansicht
 menutrans &New<Tab>^Wn			&Neu<Tab>^Wn
 menutrans S&plit<Tab>^Ws		Aufs&palten<Tab>^Ws
-menutrans Split\ &Vertically<Tab>^Wv	&Vertikal\ Aufspalten<Tab>^Wv
+menutrans Split\ &Vertically<Tab>^Wv	&Vertikal\ aufspalten<Tab>^Wv
 menutrans Split\ File\ E&xplorer	Ver&zeichnis
 menutrans Sp&lit\ To\ #<Tab>^W^^	Aufspa&lten\ in\ #<Tab>^W^^
 menutrans &Close<Tab>^Wc		&Schließen<Tab>^Wc
-menutrans Close\ &Other(s)<Tab>^Wo	&Andere\ Schließen<Tab>^Wo
+menutrans Close\ &Other(s)<Tab>^Wo	&Andere\ schließen<Tab>^Wo
 menutrans Ne&xt<Tab>^Ww			N&ächstes<Tab>^Ww
 menutrans P&revious<Tab>^WW		Vor&heriges<Tab>^WW
 menutrans &Equal\ Size<Tab>^W=		&Gleiche\ Höhen<Tab>^W=
@@ -259,9 +260,9 @@
     delfun Do_toolbar_tmenu
   endif
   fun Do_toolbar_tmenu()
-    tmenu ToolBar.Open		Datei Öffnen
-    tmenu ToolBar.Save		Datei Speichern
-    tmenu ToolBar.SaveAll	Alle Dateien Speichern
+    tmenu ToolBar.Open		Datei öffnen
+    tmenu ToolBar.Save		Datei speichern
+    tmenu ToolBar.SaveAll	Alle Dateien speichern
     tmenu ToolBar.Print		Drucken
     tmenu ToolBar.Undo		Zurück
     tmenu ToolBar.Redo		Wiederholen
@@ -269,25 +270,25 @@
     tmenu ToolBar.Copy		Kopieren
     tmenu ToolBar.Paste		Einfügen
     tmenu ToolBar.Find		Suchen...
-    tmenu ToolBar.FindNext	Suche Nächsten
-    tmenu ToolBar.FindPrev	Suche Vorherigen
+    tmenu ToolBar.FindNext	Suche nächsten
+    tmenu ToolBar.FindPrev	Suche vorherigen
     tmenu ToolBar.Replace	Suchen und Ersetzen...
     if 0	" disabled; These are in the Windows menu
       tmenu ToolBar.New		Neue Ansicht
-      tmenu ToolBar.WinSplit	Ansicht Aufspalten
-      tmenu ToolBar.WinMax	Ansicht Maximale Höhen
-      tmenu ToolBar.WinMin	Ansicht Minimale Höhen
-      tmenu ToolBar.WinClose	Ansicht Schließen
+      tmenu ToolBar.WinSplit	Ansicht aufspalten
+      tmenu ToolBar.WinMax	Ansicht maximale Höhen
+      tmenu ToolBar.WinMin	Ansicht minimale Höhen
+      tmenu ToolBar.WinClose	Ansicht schließen
     endif
-    tmenu ToolBar.LoadSesn	Sitzung Laden
-    tmenu ToolBar.SaveSesn	Sitzung Speichern
-    tmenu ToolBar.RunScript	Vim-Skript Ausführen
+    tmenu ToolBar.LoadSesn	Sitzung laden
+    tmenu ToolBar.SaveSesn	Sitzung speichern
+    tmenu ToolBar.RunScript	Vim-Skript ausführen
     tmenu ToolBar.Make		Erstellen
-    tmenu ToolBar.Shell		Shell Starten
-    tmenu ToolBar.RunCtags	Erstelle Tags Datei
+    tmenu ToolBar.Shell		Shell starten
+    tmenu ToolBar.RunCtags	Erstelle Tag-Datei
     tmenu ToolBar.TagJump	Springe zum Tag
     tmenu ToolBar.Help		Hilfe!
-    tmenu ToolBar.FindHelp	Hilfe Durchsuchen...
+    tmenu ToolBar.FindHelp	Hilfe durchsuchen...
   endfun
 endif
 " }}} TOOLBAR
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index bf03721..790b30e 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4287,6 +4287,13 @@
     if (eap->skip)	    /* not executing commands, only parsing */
 	return;
 
+    if (!do_count && !curbuf->b_p_ma)
+    {
+	/* Substitusion is not allowed in non-'modifiable' buffer */
+	EMSG(_(e_modifiable));
+	return;
+    }
+
     if (search_regcomp(pat, RE_SUBST, which_pat, SEARCH_HIS, &regmatch) == FAIL)
     {
 	if (do_error)
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 32e079d..278a096 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -768,7 +768,7 @@
 EX(CMD_rviminfo,	"rviminfo",	ex_viminfo,
 			BANG|FILE1|TRLBAR|CMDWIN),
 EX(CMD_substitute,	"substitute",	do_sub,
-			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
+			RANGE|WHOLEFOLD|EXTRA|CMDWIN),
 EX(CMD_sNext,		"sNext",	ex_previous,
 			EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_sargument,	"sargument",	ex_argument,
@@ -828,7 +828,7 @@
 EX(CMD_slast,		"slast",	ex_last,
 			EXTRA|BANG|EDITCMD|ARGOPT|TRLBAR),
 EX(CMD_smagic,		"smagic",	ex_submagic,
-			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
+			RANGE|WHOLEFOLD|EXTRA|CMDWIN),
 EX(CMD_smap,		"smap",		ex_map,
 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
 EX(CMD_smapclear,	"smapclear",	ex_mapclear,
@@ -840,7 +840,7 @@
 EX(CMD_sniff,		"sniff",	ex_sniff,
 			EXTRA|TRLBAR),
 EX(CMD_snomagic,	"snomagic",	ex_submagic,
-			RANGE|WHOLEFOLD|EXTRA|CMDWIN|MODIFY),
+			RANGE|WHOLEFOLD|EXTRA|CMDWIN),
 EX(CMD_snoremap,	"snoremap",	ex_map,
 			EXTRA|TRLBAR|NOTRLCOM|USECTRLV|CMDWIN),
 EX(CMD_snoremenu,	"snoremenu",	ex_menu,
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index ab616bb..3d6e217 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1488,7 +1488,7 @@
 	 * may cause a redraw.  But wait_return() is a no-op when vgetc()
 	 * is busy (Quit used from window menu), then make sure we don't
 	 * cause a scroll up. */
-	if (vgetc_busy)
+	if (vgetc_busy > 0)
 	{
 	    msg_row = cmdline_row;
 	    msg_col = 0;
@@ -3696,20 +3696,20 @@
      * redefined and it doesn't use the arguments. */
     loc = setlocale(what, NULL);
 
-# if defined(__BORLANDC__)
+# ifdef WIN32
     if (loc != NULL)
     {
 	char_u	*p;
 
-	/* Borland returns something like "LC_CTYPE=<name>\n"
-	 * Let's try to fix that bug here... */
+	/* setocale() returns something like "LC_COLLATE=<name>;LC_..." when
+	 * one of the values (e.g., LC_CTYPE) differs. */
 	p = vim_strchr(loc, '=');
 	if (p != NULL)
 	{
 	    loc = ++p;
 	    while (*p != NUL)	/* remove trailing newline */
 	    {
-		if (*p < ' ')
+		if (*p < ' ' || *p == ';')
 		{
 		    *p = NUL;
 		    break;
@@ -3778,8 +3778,10 @@
     p = (char_u *)get_locale_val(LC_MESSAGES);
 #  else
     /* This is necessary for Win32, where LC_MESSAGES is not defined and $LANG
-     * may be set to the LCID number. */
-    p = (char_u *)get_locale_val(LC_ALL);
+     * may be set to the LCID number.  LC_COLLATE is the best guess, LC_TIME
+     * and LC_MONETARY may be set differently for a Japanese working in the
+     * US. */
+    p = (char_u *)get_locale_val(LC_COLLATE);
 #  endif
 # else
     p = mch_getenv((char_u *)"LC_ALL");
diff --git a/src/hardcopy.c b/src/hardcopy.c
index e6c89a6..2b5c70e 100644
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -2474,7 +2474,7 @@
     double      bottom;
 #ifdef FEAT_MBYTE
     int         props;
-    int         cmap;
+    int         cmap = 0;
     char_u	*p_encoding;
     struct prt_ps_encoding_S *p_mbenc;
     struct prt_ps_encoding_S *p_mbenc_first;
diff --git a/src/version.h b/src/version.h
index e3bccb5..993e747 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70c"
 #define VIM_VERSION_SHORT	"7.0c"
-#define VIM_VERSION_MEDIUM	"7.0c11 BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0c11 BETA (2006 Apr 6)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0c11 BETA (2006 Apr 6, compiled "
+#define VIM_VERSION_MEDIUM	"7.0c12 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0c12 BETA (2006 Apr 7)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0c12 BETA (2006 Apr 7, compiled "