updated for version 7.0g01
diff --git a/src/digraph.c b/src/digraph.c
index 667ff07..79960f7 100644
--- a/src/digraph.c
+++ b/src/digraph.c
@@ -2500,6 +2500,7 @@
 
     ga_clear(&curbuf->b_kmap_ga);
     curbuf->b_kmap_state &= ~KEYMAP_LOADED;
+    do_cmdline_cmd((char_u *)"unlet! b:keymap_name");
 #ifdef FEAT_WINDOWS
     status_redraw_curbuf();
 #endif
diff --git a/src/edit.c b/src/edit.c
index 90b3b69..1cf2808 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -4695,9 +4695,9 @@
 	compl_matches = n;
     compl_curr_match = compl_shown_match;
     compl_direction = compl_shows_dir;
-    compl_interrupted = FALSE;
 
-    /* eat the ESC to avoid leaving insert mode */
+    /* Eat the ESC that vgetc() returns after a CTRL-C to avoid leaving Insert
+     * mode. */
     if (got_int && !global_busy)
     {
 	(void)vgetc();
@@ -4831,12 +4831,17 @@
     else
 	msg_clr_cmdline();	/* necessary for "noshowmode" */
 
-    /* RedrawingDisabled may be set when invoked through complete(). */
-    n = RedrawingDisabled;
-    RedrawingDisabled = 0;
-    ins_compl_show_pum();
-    setcursor();
-    RedrawingDisabled = n;
+    /* Show the popup menu, unless we got interrupted. */
+    if (!compl_interrupted)
+    {
+	/* RedrawingDisabled may be set when invoked through complete(). */
+	n = RedrawingDisabled;
+	RedrawingDisabled = 0;
+	ins_compl_show_pum();
+	setcursor();
+	RedrawingDisabled = n;
+    }
+    compl_interrupted = FALSE;
 
     return OK;
 }
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 2f4766d..5891f83 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -1529,7 +1529,7 @@
 	    line = getcmdline(c, 0L, indent);
 	else
 	    line = cp->getline(c, cp->cookie, indent);
-	if (store_loop_line(cp->lines_gap, line) == OK)
+	if (line != NULL && store_loop_line(cp->lines_gap, line) == OK)
 	    ++cp->current_line;
 
 	return line;
diff --git a/src/gui.c b/src/gui.c
index 7d11839..0c90539 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -3423,11 +3423,11 @@
     char_u	buf[40];
     int		wincount;
     win_T	*wp;
-    char_u	*opt;
+    char_u	**opt;
 
     /* Use 'guitablabel' or 'guitabtooltip' if it's set. */
-    opt = (tooltip ? p_gtt : p_gtl);
-    if (*opt != NUL)
+    opt = (tooltip ? &p_gtt : &p_gtl);
+    if (**opt != NUL)
     {
 	int	use_sandbox = FALSE;
 	int	save_called_emsg = called_emsg;
@@ -3456,7 +3456,7 @@
 	curbuf = curwin->w_buffer;
 
 	/* Can't use NameBuff directly, build_stl_str_hl() uses it. */
-	build_stl_str_hl(curwin, res, MAXPATHL, opt, use_sandbox,
+	build_stl_str_hl(curwin, res, MAXPATHL, *opt, use_sandbox,
 						 0, (int)Columns, NULL, NULL);
 	STRCPY(NameBuff, res);
 
@@ -3473,7 +3473,10 @@
 					   (char_u *)"", OPT_FREE, SID_ERROR);
 	called_emsg |= save_called_emsg;
     }
-    else
+
+    /* If 'guitablabel'/'guitabtooltip' is not set or the result is empty then
+     * use a default label. */
+    if (**opt == NUL || *NameBuff == NUL)
     {
 	/* Get the buffer name into NameBuff[] and shorten it. */
 	get_trans_bufname(tp == curtab ? curbuf : tp->tp_curwin->w_buffer);
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index c27ce7c..c6b093f 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -4024,7 +4024,11 @@
 	if (mask & WidthValue)
 	    Columns = w;
 	if (mask & HeightValue)
+	{
+	    if (p_window > h - 1 || !option_was_set((char_u *)"window"))
+		p_window = h - 1;
 	    Rows = h;
+	}
 	if (mask & (XValue | YValue))
 #ifdef HAVE_GTK2
 	    gtk_window_move(GTK_WINDOW(gui.mainwin), x, y);
diff --git a/src/gui_mac.c b/src/gui_mac.c
index a9e6f5c..e7e5437 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -2003,6 +2003,9 @@
  * Handle the key
  */
 #ifdef USE_CARBONKEYHANDLER
+
+static int dialog_busy = FALSE;	    /* TRUE when gui_mch_dialog() wants the keys */
+
 # define INLINE_KEY_BUFFER_SIZE 80
     static pascal OSStatus
 gui_mac_doKeyEventCarbon(
@@ -2031,6 +2034,10 @@
 
     do
     {
+	/* Don't use the keys when the dialog wants them. */
+	if (dialog_busy)
+	    break;
+
 	if (noErr != GetEventParameter(theEvent, kEventParamTextInputSendText,
 		    typeUnicodeText, NULL, 0, &actualSize, NULL))
 	    break;
@@ -2615,7 +2622,7 @@
 	    break;
 #endif
 	case (keyUp):
-	    /* We don't care about when the key get release */
+	    /* We don't care about when the key is released */
 	    break;
 
 	case (mouseDown):
@@ -5472,7 +5479,7 @@
     /* Add the input box if needed */
     if (textfield != NULL)
     {
-	/* Cheat for now reuse the message and convet to text edit */
+	/* Cheat for now reuse the message and convert to text edit */
 	inputItm.idx = lastButton + 3;
 	inputDITL = GetResource('DITL', 132);
 	AppendDITL(theDialog, inputDITL, overlayDITL);
@@ -5566,12 +5573,21 @@
     SetPortDialogPort(theDialog);
 #endif
 
+#ifdef USE_CARBONKEYHANDLER
+    /* Avoid that we use key events for the main window. */
+    dialog_busy = TRUE;
+#endif
+
     /* Hang until one of the button is hit */
     do
     {
 	ModalDialog(nil, &itemHit);
     } while ((itemHit < 1) || (itemHit > lastButton));
 
+#ifdef USE_CARBONKEYHANDLER
+    dialog_busy = FALSE;
+#endif
+
     /* Copy back the text entered by the user into the param */
     if (textfield != NULL)
     {
diff --git a/src/gui_x11.c b/src/gui_x11.c
index c49bbe5..01f4e0f 100644
--- a/src/gui_x11.c
+++ b/src/gui_x11.c
@@ -1437,7 +1437,11 @@
 	if (mask & WidthValue)
 	    Columns = w;
 	if (mask & HeightValue)
+	{
+	    if (p_window > h - 1 || !option_was_set((char_u *)"window"))
+		p_window = h - 1;
 	    Rows = h;
+	}
 	/*
 	 * Set the (x,y) position of the main window only if specified in the
 	 * users geometry, so we get good defaults when they don't. This needs
diff --git a/src/option.c b/src/option.c
index c134124..8d5dcac 100644
--- a/src/option.c
+++ b/src/option.c
@@ -3548,8 +3548,7 @@
      * 'window' is only for backwards compatibility with Vi.
      * Default is Rows - 1.
      */
-    idx = findoption((char_u *)"wi");
-    if (idx >= 0 && !(options[idx].flags & P_WAS_SET))
+    if (!option_was_set((char_u *)"window"))
 	p_window = Rows - 1;
     set_number_default("window", Rows - 1);
 
@@ -7904,7 +7903,7 @@
 	    if (cmdline_row > Rows - p_ch && Rows > p_ch)
 		cmdline_row = Rows - p_ch;
 	}
-	if (p_window >= Rows)
+	if (p_window >= Rows || !option_was_set((char_u *)"window"))
 	    p_window = Rows - 1;
     }
 
diff --git a/src/os_unix.c b/src/os_unix.c
index 5d52a7f..0059d30 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -5787,7 +5787,9 @@
 	if (SETJMP(lc_jump_env) != 0)
 	{
 	    success = FALSE;
+#  if defined(USE_DLOPEN)
 	    dlerr = NULL;
+#  endif
 	    mch_didjmp();
 	}
 	else
diff --git a/src/po/de.po b/src/po/de.po
index 046e2ea..43fbbe7 100644
--- a/src/po/de.po
+++ b/src/po/de.po
@@ -334,16 +334,16 @@
 
 #, c-format
 msgid "E712: Argument of %s must be a List or Dictionary"
-msgstr "E712: Argument von %s muss eine Liste oder ein Wörterbuch"
+msgstr "E712: Argument von %s muss eine Liste oder ein Dictionary"
 
 msgid "E713: Cannot use empty key for Dictionary"
-msgstr "E713: Der Schlüssel für das Wörterbuch darf nicht leer sein"
+msgstr "E713: Der Schlüssel für das Dictionary darf nicht leer sein"
 
 msgid "E714: List required"
 msgstr "E714: Liste benötigt"
 
 msgid "E715: Dictionary required"
-msgstr "E715: Wörterbuch benötigt"
+msgstr "E715: Dictionary benötigt"
 
 #, c-format
 msgid "E118: Too many arguments for function: %s"
@@ -351,20 +351,20 @@
 
 #, c-format
 msgid "E716: Key not present in Dictionary: %s"
-msgstr "E716: Schlüssel nicht vorhanden im Wörterbuch: %s"
+msgstr "E716: Schlüssel nicht vorhanden im Dictionary: %s"
 
 #, c-format
 msgid "E122: Function %s already exists, add ! to replace it"
 msgstr "E122: Funktion %s existiert bereits; zum Ersetzen ! hinzufügen"
 
 msgid "E717: Dictionary entry already exists"
-msgstr "E717: Wörterbucheintrag existiert bereits"
+msgstr "E717: Dictionary-Eintrag existiert bereits"
 
 msgid "E718: Funcref required"
 msgstr "E718: Funcref benötigt"
 
 msgid "E719: Cannot use [:] with a Dictionary"
-msgstr "E719: Kann [:] nicht mit einem Wörterbuch verwenden"
+msgstr "E719: Kann [:] nicht mit einem Dictionary verwenden"
 
 #, c-format
 msgid "E734: Wrong variable type for %s="
@@ -392,7 +392,7 @@
 msgstr "E738: Kann Variablen nicht auflisten: %s"
 
 msgid "E689: Can only index a List or Dictionary"
-msgstr "E689: Kann nur Listen und Wörterbücher indizieren"
+msgstr "E689: Kann nur Listen und Dictionarys indizieren"
 
 msgid "E708: [:] must come last"
 msgstr "E708: [:] muss am Schluss kommen"
@@ -430,10 +430,10 @@
 msgstr "E692: Unzulässige Operation für Listen"
 
 msgid "E735: Can only compare Dictionary with Dictionary"
-msgstr "E735: Kann nur ein Wörterbuch mit einem Wörterbuch vergleichen"
+msgstr "E735: Kann nur ein Dictionary mit einem Dictionary vergleichen"
 
 msgid "E736: Invalid operation for Dictionary"
-msgstr "E736: Unzulässige Operation für ein Wörterbuch"
+msgstr "E736: Unzulässige Operation für ein Dictionary"
 
 msgid "E693: Can only compare Funcref with Funcref"
 msgstr "E693: Kann nur eine Funcref mit einer Funcref vergleichen"
@@ -473,19 +473,19 @@
 
 #, c-format
 msgid "E720: Missing colon in Dictionary: %s"
-msgstr "E720: Fehlender Doppelpunkt im Wörterbuch: %s"
+msgstr "E720: Fehlender Doppelpunkt im Dictionary: %s"
 
 #, c-format
 msgid "E721: Duplicate key in Dictionary: \"%s\""
-msgstr "E721: Doppelter Schlüssel im Wörterbuch: \"%s\""
+msgstr "E721: Doppelter Schlüssel im Dictionary: \"%s\""
 
 #, c-format
 msgid "E722: Missing comma in Dictionary: %s"
-msgstr "E722: Fehlendes Komma im Wörterbuch: %s"
+msgstr "E722: Fehlendes Komma im Dictionary: %s"
 
 #, c-format
 msgid "E723: Missing end of Dictionary '}': %s"
-msgstr "E723: Fehlendes Ende des Wörterbuchs '}': %s"
+msgstr "E723: Fehlendes Ende des Dictionarys '}': %s"
 
 msgid "E724: variable nested too deep for displaying"
 msgstr "E724: Variable ist zu tief verschachtelt für die Anzeige"
@@ -573,7 +573,7 @@
 msgstr "E745: Liste als Zahl verwendet"
 
 msgid "E728: Using a Dictionary as a number"
-msgstr "E728: Wörterbuch als Zahl verwendet"
+msgstr "E728: Dictionary als Zahl verwendet"
 
 msgid "E729: using Funcref as a String"
 msgstr "E729: Funcref als String verwendet"
@@ -582,7 +582,7 @@
 msgstr "E730: Liste als String verwendet"
 
 msgid "E731: using Dictionary as a String"
-msgstr "E731: Wörterbuch als String verwendet"
+msgstr "E731: Dictionary als String verwendet"
 
 #, c-format
 msgid "E704: Funcref variable name must start with a capital: %s"
@@ -894,7 +894,7 @@
 
 #, c-format
 msgid "E154: Duplicate tag \"%s\" in file %s"
-msgstr "E154: Tag \"%s\" ist mehrmals in der Datei %s"
+msgstr "E154: Doppelter Tag \"%s\" in der Datei %s"
 
 #, c-format
 msgid "E160: Unknown sign command: %s"
@@ -5995,3 +5995,139 @@
 
 msgid "%ld seconds ago"
 msgstr "vor %ld Sekunden"
+
+msgid "E790: undojoin is not allowed after undo"
+msgstr "E790: 'undojoin' ist nicht erlaubt nach 'undo'"
+
+#, c-format
+msgid "E117: Unknown function: %s"
+msgstr "E117: Unbekannte Funktion: %s"
+
+#, c-format
+msgid "E119: Not enough arguments for function: %s"
+msgstr "E119: Zu wenige Argumente für Funktion: %s"
+
+#, c-format
+msgid "E120: Using <SID> not in a script context: %s"
+msgstr "E120: <SID> wurde nicht in einer Skript-Umgebung benutzt: %s"
+
+#, c-format
+msgid "E725: Calling dict function without Dictionary: %s"
+msgstr "E725: Aufruf der 'dict' Funktion ohne Dictionary: %s"
+
+msgid "E786: Range not allowed"
+msgstr "E786: Bereich nicht erlaubt"
+
+#, c-format
+msgid "E154: Duplicate tag \"%s\" in file %s/%s"
+msgstr "E154: Doppelter Tag \"%s\" in der Datei %s/%s"
+
+msgid "E179: argument required for -complete"
+msgstr "E179: Argument benötigt für -complete"
+
+#, c-format
+msgid "Tab page %d"
+msgstr "Tab %d"
+
+msgid "E585: :while/:for nesting too deep"
+msgstr "E585: :while/:for Schachtelung zu tief"
+
+msgid "E586: :continue without :while or :for"
+msgstr "E586: :continue ohne :while or :for"
+
+msgid "E587: :break without :while or :for"
+msgstr "E587: :break ohne :while oder :for"
+
+msgid "E788: Not allowed to edit another buffer now"
+msgstr "E788: Einen weiteren Puffer zu editieren ist im Moment nicht erlaubt"
+
+msgid "E513: write error, conversion failed (make 'fenc' empty to override)"
+msgstr "E513: Schreibfehler, Umwandlung schlug fehl (leere 'fenc' um sie zu erzwingen)"
+
+#, c-format
+msgid "E211: File \"%s\" no longer available"
+msgstr "E211: Datei \"%s\" ist nicht länger vorhanden"
+
+msgid "See \":help W12\" for more info."
+msgstr "Siehe \":help W12\" für mehr Information"
+
+msgid "See \":help W11\" for more info."
+msgstr "Siehe \":help W11\" für mehr Information"
+
+#, c-format
+msgid "E46: Cannot change read-only variable \"%s\""
+msgstr "E46: Variable \"%s\" kann nur gelesen werden"
+
+#, c-format
+msgid "E46: Cannot set variable in the sandbox: \"%s\""
+msgstr "E46: Variable \"%s\" kann in der Sandbox nur gelesen werden"
+
+msgid "E267: unexpected return"
+msgstr "E267: Unerwartetes 'return'"
+
+msgid "E268: unexpected next"
+msgstr "E268: Unerwartetes 'next'"
+
+msgid "E269: unexpected break"
+msgstr "E269: Unerwartetes 'break'"
+
+msgid "E270: unexpected redo"
+msgstr "E270: Unerwartetes 'redo'"
+
+msgid "E271: retry outside of rescue clause"
+msgstr "E271: 'retry' außerhalb der 'rescue clause'"
+
+msgid "E272: unhandled exception"
+msgstr "E272: Unbehandelte Ausnahme"
+
+#, c-format
+msgid "%d files to edit\n"
+msgstr "%d Dateien zum Editieren\n"
+
+msgid "-p[N]\t\tOpen N tab pages (default: one for each file)"
+msgstr "-p[N]\t\tÖffne N Tabs (Vorgabe: einzeln für jede Datei)"
+
+msgid "--remote-tab <files>  As --remote but open tab page for each file"
+msgstr "--remote-tab <Dateien>  Wie --remote, aber öffne ein Tab für jede Datei"
+
+msgid "E304: ml_upd_block0(): Didn't get block 0??"
+msgstr "E304: ml_upd_block0(): Block Nr. 0 nicht erhalten?"
+
+msgid "Select Directory dialog"
+msgstr "Verzeichnis Auswahl Dialog"
+
+msgid "No match at cursor, finding next"
+msgstr "Kein Treffer beim Cursur, finde den nächsten"
+
+msgid "E265: $_ must be an instance of String"
+msgstr "E265: $_ muss eine Instanz einer Zeichenkette sein"
+
+msgid "E773: Symlink loop for \"%s\""
+msgstr "E773: Symlink Schleife für \"%s\""
+
+#, c-format
+msgid ""
+"\n"
+"# Last %sSearch Pattern:\n"
+"~"
+msgstr ""
+"\n"
+"# Letztes %sSuchmuster:\n"
+"~"
+
+#, c-format
+msgid ""
+"Defining COMPOUNDFORBIDFLAG after PFX item may give wrong results in %s line "
+"%d"
+msgstr ""
+"Die Definition von COMPOUNDFORBIDFLAG nach dem PFX Element kann falsches Ergebnis in Zeile %s ergeben "
+"%d"
+
+#, c-format
+msgid ""
+"Defining COMPOUNDPERMITFLAG after PFX item may give wrong results in %s line "
+"%d"
+msgstr ""
+"Die Definition von COMPOUNDPERMITFLAG nach dem PFX Element kann falsches Ergebnis in Zeile %s ergeben "
+"%d"
+
diff --git a/src/po/fr.po b/src/po/fr.po
index f7bc907..990059f 100644
--- a/src/po/fr.po
+++ b/src/po/fr.po
@@ -3,14 +3,14 @@
 # Do ":help uganda"  in Vim to read copying and usage conditions.
 # Do ":help credits" in Vim to see a list of people who contributed.
 #
-#  FIRST AUTHOR  DindinX      <David.Odin@bigfoot.com>	   2000.
-# SECOND AUTHOR  Adrien Beau  <version.francaise@free.fr>  2002, 2003.
+#  FIRST AUTHOR  DindinX         <David.Odin@bigfoot.com>     2000.
+# SECOND AUTHOR  Adrien Beau     <version.francaise@free.fr>  2002, 2003.
+#  THIRD AUTHOR  David Blanchet  <david.blanchet@free.fr>     2006
 #
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 #
-# Ce fichier n'est pas finalisé ! Le gros du travail a été fait, mais la touche
-# finale reste à apporter. Je pense que tout sera bel et bien fini pour Vim 6.3
-# (hum, c'était censé être le cas pour Vim 6.2).
+# Ce fichier est perfectible ! Le gros du travail a été fait, mais la touche
+# finale reste à apporter.
 #
 # Consultez http://version.francaise.free.fr/ pour les mises à jour de ce
 # fichier, ainsi que pour les versions françaises des menus et du tutoriel.
@@ -28,8 +28,7 @@
 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 #
 # This file still needs work! The rough work has been done, some polishing
-# needs to be applied. I expect everything to be bright and shiny for Vim 6.3
-# (err, that was supposed to be Vim 6.2).
+# needs to be applied.
 #
 # Go to http://version.francaise.free.fr/ for updates to this file, and to the
 # French versions of the menus and the tutor.
@@ -71,15 +70,18 @@
 # 			  - Hundreds of error messages numbers added (wow)
 # 2006-04-15    DB      Vim 7.0 first draft, based on fr.po 7.0c03
 #                         - 285 new messages.
-# 2006-05-17    DB      VIM 7.0 second draft, still 7.0c03
+# 2006-04-17    DB      VIM 7.0 second draft, still 7.0c03
 #                         - (check.vim) Fixed 2 wrong translated messages.
-# 2006-05-19    DB      VIM 7.0 second draft, 7.0e02
+# 2006-04-19    DB      VIM 7.0e02
 #                         - 15 new messages.
-# 2006-05-19    DB      VIM 7.0, based on 7.0e03
+# 2006-04-19    DB      VIM 7.0e03
 #                         - (check.vim) Fixed wrong messages.
-#                         - header comment of this file should be updated.
+# 2006-05-01    DB      VIM 7.0g
+#                         - 1 message fixed, 2 messages translated.
+# 2006-05-02    DB      VIM 7.0g
+#                         - 3 message fixed.
 #
-# Translated:	 1692/1692 (100.00%)
+# Translated:	 1694/1694 (100.00%)
 #
 # Polishing done on:
 #  buffer.c
@@ -99,9 +101,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: Vim(Français)\n"
-"Report-Msgid-Bugs-To: Adrien Beau <version.francaise@free.fr>\n"
-"POT-Creation-Date: 2006-04-01 17:09+0200\n"
-"PO-Revision-Date: 2006-04-21 00:31+0200\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-05-01 19:42+0200\n"
+"PO-Revision-Date: 2006-05-02 14:15+0200\n"
 "Last-Translator: David Blanchet <david.blanchet@free.fr>\n"
 "Language-Team: Adrien Beau <version.francaise@free.fr>\n"
 "MIME-Version: 1.0\n"
@@ -349,6 +351,9 @@
 msgid "E105: Using :loadkeymap not in a sourced file"
 msgstr "E105: :loadkeymap ne peut être utilisé que dans un script Vim"
 
+msgid "E791: Empty keymap entry"
+msgstr "E791: Entrée du descripteur de clavier (keymap) vide"
+
 # AB - Remplacer "complétion" par "complètement" ? Voir l'éthymologie
 #      d'"accrétion".
 msgid " Keyword completion (^N^P)"
@@ -5158,7 +5163,7 @@
 "%d"
 msgstr ""
 "Définir COMPOUNDPERMITFLAG après des PFX peut donner des résultats erronés "
-" dans %s ligne %d"
+"dans %s ligne %d"
 
 #, c-format
 msgid "Wrong COMPOUNDWORDMAX value in %s line %d: %s"
@@ -5516,8 +5521,8 @@
 msgstr "E397: Nom de fichier requis"
 
 #, c-format
-msgid "E747: Missing ']': %s"
-msgstr "E747: ']' manquant : %s"
+msgid "E789: Missing ']': %s"
+msgstr "E789: ']' manquant : %s"
 
 #, c-format
 msgid "E398: Missing '=': %s"
@@ -5808,6 +5813,9 @@
 msgid "%ld seconds ago"
 msgstr "il y a %ld secondes"
 
+msgid "E790: undojoin is not allowed after undo"
+msgstr "E790: undojoin n'est pas autorisé après une annulation"
+
 msgid "E439: undo list corrupt"
 msgstr "E439: la liste d'annulation est corrompue"
 
@@ -6533,4 +6541,3 @@
 
 msgid "search hit BOTTOM, continuing at TOP"
 msgstr "La recherche a atteint le BAS, et continue en HAUT"
-
diff --git a/src/quickfix.c b/src/quickfix.c
index 95cf8f7..4f5fe24 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2153,7 +2153,7 @@
      * it if we have errors; otherwise, leave it closed.
      */
     if (qi->qf_lists[qi->qf_curlist].qf_nonevalid
-	|| qi->qf_curlist >= qi->qf_listcount)
+	    || qi->qf_curlist >= qi->qf_listcount)
     {
 	if (win != NULL)
 	    ex_cclose(eap);
@@ -3290,6 +3290,7 @@
 	if (readfile(fname, NULL,
 		    (linenr_T)0, (linenr_T)0, (linenr_T)MAXLNUM,
 		    NULL, READ_NEW | READ_DUMMY) == OK
+		&& !got_int
 		&& !(curbuf->b_flags & BF_NEW))
 	{
 	    failed = FALSE;
@@ -3329,7 +3330,24 @@
     buf_T	*buf;
 {
     if (curbuf != buf)		/* safety check */
+    {
+#if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
+	cleanup_T   cs;
+
+	/* Reset the error/interrupt/exception state here so that aborting()
+	 * returns FALSE when wiping out the buffer.  Otherwise it doesn't
+	 * work when got_int is set. */
+	enter_cleanup(&cs);
+#endif
+
 	wipe_buffer(buf, FALSE);
+
+#if defined(FEAT_AUTOCMD) && defined(FEAT_EVAL)
+	/* Restore the error/interrupt/exception state if not discarded by a
+	 * new aborting error, interrupt, or uncaught exception. */
+	leave_cleanup(&cs);
+#endif
+    }
 }
 
 /*
diff --git a/src/spell.c b/src/spell.c
index eeb3629..5e37500 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -2131,8 +2131,6 @@
 		/* We found a bad word.  Check the attribute. */
 		if (allwords || attr == HLF_SPB)
 		{
-		    found_one = TRUE;
-
 		    /* When searching forward only accept a bad word after
 		     * the cursor. */
 		    if (dir == BACKWARD
@@ -2149,6 +2147,8 @@
 			    col = (int)(p - buf);
 			    (void)syn_get_id(wp, lnum, (colnr_T)col,
 						       FALSE, &can_spell);
+			    if (!can_spell)
+				attr = HLF_COUNT;
 			}
 			else
 #endif
@@ -2156,6 +2156,7 @@
 
 			if (can_spell)
 			{
+			    found_one = TRUE;
 			    found_pos.lnum = lnum;
 			    found_pos.col = (int)(p - buf);
 #ifdef FEAT_VIRTUALEDIT
@@ -2177,6 +2178,8 @@
 			    found_len = len;
 			}
 		    }
+		    else
+			found_one = TRUE;
 		}
 	    }
 
diff --git a/src/version.c b/src/version.c
index e9150d5..0129009 100644
--- a/src/version.c
+++ b/src/version.c
@@ -445,6 +445,11 @@
 #else
 	"-quickfix",
 #endif
+#ifdef FEAT_RELTIME
+	"+reltime",
+#else
+	"-reltime",
+#endif
 #ifdef FEAT_RIGHTLEFT
 	"+rightleft",
 #else
diff --git a/src/version.h b/src/version.h
index 0243df9..d37c326 100644
--- a/src/version.h
+++ b/src/version.h
@@ -35,6 +35,6 @@
  */
 #define VIM_VERSION_NODOT	"vim70g"
 #define VIM_VERSION_SHORT	"7.0g"
-#define VIM_VERSION_MEDIUM	"7.0g BETA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0g BETA (2006 Apr 30)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0g BETA (2006 Apr 30, compiled "
+#define VIM_VERSION_MEDIUM	"7.0g-01 BETA"
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0g01 BETA (2006 May 2)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0g01 BETA (2006 May 2, compiled "
diff --git a/src/window.c b/src/window.c
index 7ba9e22..09c638e 100644
--- a/src/window.c
+++ b/src/window.c
@@ -3491,6 +3491,18 @@
     tabpage_T	*ttp;
     int		i;
 
+    if (text_locked())
+    {
+	/* Not allowed when editing the command line. */
+#ifdef FEAT_CMDWIN
+	if (cmdwin_type != 0)
+	    EMSG(_(e_cmdwin));
+	else
+#endif
+	    EMSG(_(e_secure));
+	return;
+    }
+
     /* If there is only one it can't work. */
     if (first_tabpage->tp_next == NULL)
     {