changeset 823:9ab23f1e137f v7.0c12

updated for version 7.0c12
author vimboss
date Fri, 07 Apr 2006 21:40:07 +0000
parents 45fad0f590d0
children 8dd456c1e283
files runtime/doc/autocmd.txt runtime/doc/eval.txt runtime/doc/syntax.txt runtime/doc/tags runtime/doc/todo.txt runtime/doc/version7.txt runtime/lang/menu_de_de.latin1.vim src/ex_cmds.c src/ex_cmds.h src/ex_cmds2.c src/hardcopy.c src/version.h
diffstat 12 files changed, 106 insertions(+), 73 deletions(-) [+]
line wrap: on
line diff
--- 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 @@ FileChangedRO			Before making the first 
 				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*
--- 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 @@ Number.  Note that this doesn't recogniz
 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({src}, {start}[, {len}])			*strp
 			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
--- 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 @@ somewhere else with "P".
 
 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
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -5611,7 +5611,6 @@ hebrew	hebrew.txt	/*hebrew*
 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*
--- 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 @@ be worked on, but only if you sponsor Vi
 							*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
--- 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 @@ as <line1>.  The items can no longer be 
 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 @@ sensors syntax and ftplugin file. (Nikol
 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 @@ When using the menu in the tab pages lin
 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:
--- 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 @@ endif
 " {{{ 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 Rep&eat<Tab>\.		&Wiederholen<T
 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 @@ menutrans Find\ and\ Rep&lace\.\.\.	Such
 " 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 &Virtual\ Edit				&Virtueller\
 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 @@ menutrans Toggle\ &C-indenting<Tab>:set\ cin!		&C-Einrückung\ ein-\ und\ ausschalten<Tab>:set\ cin!
 " 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 @@ if has("spell")
     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 @@ if has("folding")
   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 @@ menutrans Conve&rt\ back<Tab>:%!xxd\ -r			Zurück\ konvertieren<Tab>:%!xxd\ -r
 " {{{ 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 &Previous					&Vorheriger
 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 @@ if has("toolbar")
     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 @@ if has("toolbar")
     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
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4287,6 +4287,13 @@ do_sub(eap)
     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)
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -768,7 +768,7 @@ EX(CMD_rubyfile,	"rubyfile",	ex_rubyfile
 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_sleep,		"sleep",	ex_sleep,
 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_snext,		"snext",	ex_next,
 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,
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -1488,7 +1488,7 @@ check_changed_any(hidden)
 	 * 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 @@ get_locale_val(what)
      * 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 @@ get_mess_lang()
     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");
--- a/src/hardcopy.c
+++ b/src/hardcopy.c
@@ -2474,7 +2474,7 @@ mch_print_init(psettings, jobname, force
     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;
--- 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 "