diff --git a/src/gui.c b/src/gui.c
index 9a69a09..fe12864 100644
--- a/src/gui.c
+++ b/src/gui.c
@@ -3394,6 +3394,11 @@
 
     if (!gui.starting && starting == 0)
     {
+	/* Updating the tabline uses direct GUI commands, flush
+	 * outstanding instructions first. (esp. clear screen) */
+	out_flush();
+	gui_mch_flush();
+
 	if (!showit != !shown)
 	    gui_mch_show_tabline(showit);
 	if (showit != 0)
diff --git a/src/po/pl.UTF-8.po b/src/po/pl.UTF-8.po
index 6149080..302ff8c 100644
--- a/src/po/pl.UTF-8.po
+++ b/src/po/pl.UTF-8.po
@@ -910,7 +910,7 @@
 
 #, c-format
 msgid "# Value of 'encoding' when this file was written\n"
-msgstr "# Wartość 'encoding' w czasie zapsu tego pliku\n"
+msgstr "# Wartość 'encoding' w czasie zapisu tego pliku\n"
 
 msgid "Illegal starting char"
 msgstr "Niedopuszczalny początkowy znak"
@@ -1483,7 +1483,7 @@
 
 #. Re-opening the original file failed!
 msgid "E202: Conversion made file unreadable!"
-msgstr "E202: Plik stworzony poprzez przemianę jest nieodczytywalny!"
+msgstr "E202: Nie można otworzyć pliku utworzonego przez przemianę!"
 
 msgid "[fifo/socket]"
 msgstr "[fifo/socket]"
@@ -1648,13 +1648,13 @@
 msgstr "[mac]"
 
 msgid "[mac format]"
-msgstr "[format mac-a]"
+msgstr "[format maca]"
 
 msgid "[unix]"
 msgstr "[unix]"
 
 msgid "[unix format]"
-msgstr "[format unix-a]"
+msgstr "[format unixa]"
 
 msgid "1 line, "
 msgstr "1 wiersz, "
@@ -1928,7 +1928,7 @@
 msgstr "Input _Methods"
 
 msgid "VIM - Search and Replace..."
-msgstr "VIM - Szukaj i Zamieniaj..."
+msgstr "VIM - Szukaj i Zamień..."
 
 msgid "VIM - Search..."
 msgstr "VIM - Szukaj..."
@@ -1967,7 +1967,7 @@
 msgstr "Zamień wszystkie"
 
 msgid "Vim: Received \"die\" request from session manager\n"
-msgstr "Vim: otrzymano żądanie \"die\" od manadżera sesji\n"
+msgstr "Vim: otrzymano żądanie \"die\" od menedżera sesji\n"
 
 msgid "Close"
 msgstr "Zamknij"
@@ -2463,7 +2463,7 @@
 msgstr "writelines() wymaga listy ciągów"
 
 msgid "E264: Python: Error initialising I/O objects"
-msgstr "E264: Python: Błąd w inicjalizacji obiektów I/O"
+msgstr "E264: Python: Błąd w uruchomieniu obiektów I/O"
 
 msgid "attempt to refer to deleted buffer"
 msgstr "próba odniesienia do skasowanego bufora"
@@ -2542,7 +2542,7 @@
 msgstr "Pokaż bazę klasy"
 
 msgid "Show overridden member function"
-msgstr "Pokaż przepisaną funkcję członkową"
+msgstr "Pokaż przepisaną funkcję członową"
 
 msgid "Retrieve from file"
 msgstr "Pobieraj z pliku"
@@ -2587,7 +2587,7 @@
 msgstr "Pokaż dokumentację dla"
 
 msgid "Generate docu for"
-msgstr "Wygeneruj dokumentację dla"
+msgstr "Utwórz dokumentację dla"
 
 msgid ""
 "Cannot connect to SNiFF+. Check environment (sniffemacs must be found in "
diff --git a/src/proto/ex_getln.pro b/src/proto/ex_getln.pro
index e6b5b87..f5feb20 100644
--- a/src/proto/ex_getln.pro
+++ b/src/proto/ex_getln.pro
@@ -1,54 +1,56 @@
 /* ex_getln.c */
-extern char_u *getcmdline __ARGS((int firstc, long count, int indent));
-extern char_u *getcmdline_prompt __ARGS((int firstc, char_u *prompt, int attr, int xp_context, char_u *xp_arg));
-extern int text_locked __ARGS((void));
-extern void text_locked_msg __ARGS((void));
-extern int curbuf_locked __ARGS((void));
-extern char_u *getexline __ARGS((int c, void *dummy, int indent));
-extern char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
-extern int cmdline_overstrike __ARGS((void));
-extern int cmdline_at_end __ARGS((void));
-extern colnr_T cmdline_getvcol_cursor __ARGS((void));
-extern void free_cmdline_buf __ARGS((void));
-extern void putcmdline __ARGS((int c, int shift));
-extern void unputcmdline __ARGS((void));
-extern int put_on_cmdline __ARGS((char_u *str, int len, int redraw));
-extern void cmdline_paste_str __ARGS((char_u *s, int literally));
-extern void redrawcmdline __ARGS((void));
-extern void redrawcmd __ARGS((void));
-extern void compute_cmdrow __ARGS((void));
-extern void gotocmdline __ARGS((int clr));
-extern char_u *ExpandOne __ARGS((expand_T *xp, char_u *str, char_u *orig, int options, int mode));
-extern void ExpandInit __ARGS((expand_T *xp));
-extern void ExpandCleanup __ARGS((expand_T *xp));
-extern void ExpandEscape __ARGS((expand_T *xp, char_u *str, int numfiles, char_u **files, int options));
-extern void tilde_replace __ARGS((char_u *orig_pat, int num_files, char_u **files));
-extern char_u *sm_gettail __ARGS((char_u *s));
-extern char_u *addstar __ARGS((char_u *fname, int len, int context));
-extern void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
-extern int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
-extern int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
-extern char_u *globpath __ARGS((char_u *path, char_u *file));
-extern void init_history __ARGS((void));
-extern int get_histtype __ARGS((char_u *name));
-extern void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
-extern int get_history_idx __ARGS((int histype));
-extern char_u *get_cmdline_str __ARGS((void));
-extern int get_cmdline_pos __ARGS((void));
-extern int set_cmdline_pos __ARGS((int pos));
-extern int get_cmdline_type __ARGS((void));
-extern char_u *get_history_entry __ARGS((int histype, int idx));
-extern int clr_history __ARGS((int histype));
-extern int del_history_entry __ARGS((int histype, char_u *str));
-extern int del_history_idx __ARGS((int histype, int idx));
-extern void remove_key_from_history __ARGS((void));
-extern int get_list_range __ARGS((char_u **str, int *num1, int *num2));
-extern void ex_history __ARGS((exarg_T *eap));
-extern void prepare_viminfo_history __ARGS((int asklen));
-extern int read_viminfo_history __ARGS((vir_T *virp));
-extern void finish_viminfo_history __ARGS((void));
-extern void write_viminfo_history __ARGS((FILE *fp));
-extern void cmd_pchar __ARGS((int c, int offset));
-extern int cmd_gchar __ARGS((int offset));
-extern char_u *script_get __ARGS((exarg_T *eap, char_u *cmd));
+char_u *getcmdline __ARGS((int firstc, long count, int indent));
+char_u *getcmdline_prompt __ARGS((int firstc, char_u *prompt, int attr, int xp_context, char_u *xp_arg));
+int text_locked __ARGS((void));
+void text_locked_msg __ARGS((void));
+int curbuf_locked __ARGS((void));
+char_u *getexline __ARGS((int c, void *dummy, int indent));
+char_u *getexmodeline __ARGS((int promptc, void *dummy, int indent));
+int cmdline_overstrike __ARGS((void));
+int cmdline_at_end __ARGS((void));
+colnr_T cmdline_getvcol_cursor __ARGS((void));
+void free_cmdline_buf __ARGS((void));
+void putcmdline __ARGS((int c, int shift));
+void unputcmdline __ARGS((void));
+int put_on_cmdline __ARGS((char_u *str, int len, int redraw));
+char_u *save_cmdline_alloc __ARGS((void));
+void restore_cmdline_alloc __ARGS((char_u *p));
+void cmdline_paste_str __ARGS((char_u *s, int literally));
+void redrawcmdline __ARGS((void));
+void redrawcmd __ARGS((void));
+void compute_cmdrow __ARGS((void));
+void gotocmdline __ARGS((int clr));
+char_u *ExpandOne __ARGS((expand_T *xp, char_u *str, char_u *orig, int options, int mode));
+void ExpandInit __ARGS((expand_T *xp));
+void ExpandCleanup __ARGS((expand_T *xp));
+void ExpandEscape __ARGS((expand_T *xp, char_u *str, int numfiles, char_u **files, int options));
+void tilde_replace __ARGS((char_u *orig_pat, int num_files, char_u **files));
+char_u *sm_gettail __ARGS((char_u *s));
+char_u *addstar __ARGS((char_u *fname, int len, int context));
+void set_cmd_context __ARGS((expand_T *xp, char_u *str, int len, int col));
+int expand_cmdline __ARGS((expand_T *xp, char_u *str, int col, int *matchcount, char_u ***matches));
+int ExpandGeneric __ARGS((expand_T *xp, regmatch_T *regmatch, int *num_file, char_u ***file, char_u *((*func)(expand_T *, int))));
+char_u *globpath __ARGS((char_u *path, char_u *file));
+void init_history __ARGS((void));
+int get_histtype __ARGS((char_u *name));
+void add_to_history __ARGS((int histype, char_u *new_entry, int in_map, int sep));
+int get_history_idx __ARGS((int histype));
+char_u *get_cmdline_str __ARGS((void));
+int get_cmdline_pos __ARGS((void));
+int set_cmdline_pos __ARGS((int pos));
+int get_cmdline_type __ARGS((void));
+char_u *get_history_entry __ARGS((int histype, int idx));
+int clr_history __ARGS((int histype));
+int del_history_entry __ARGS((int histype, char_u *str));
+int del_history_idx __ARGS((int histype, int idx));
+void remove_key_from_history __ARGS((void));
+int get_list_range __ARGS((char_u **str, int *num1, int *num2));
+void ex_history __ARGS((exarg_T *eap));
+void prepare_viminfo_history __ARGS((int asklen));
+int read_viminfo_history __ARGS((vir_T *virp));
+void finish_viminfo_history __ARGS((void));
+void write_viminfo_history __ARGS((FILE *fp));
+void cmd_pchar __ARGS((int c, int offset));
+int cmd_gchar __ARGS((int offset));
+char_u *script_get __ARGS((exarg_T *eap, char_u *cmd));
 /* vim: set ft=c : */
