updated for version 7.2a
diff --git a/src/po/pl.po b/src/po/pl.po
index 4f4e29f..696355d 100644
--- a/src/po/pl.po
+++ b/src/po/pl.po
@@ -73,7 +73,7 @@
 
 #, c-format
 msgid "E89: No write since last change for buffer %ld (add ! to override)"
-msgstr "E89 Nie zapisano zmian w buforze %ld (wymu¶ przez !)"
+msgstr "E89: Nie zapisano zmian w buforze %ld (wymu¶ przez !)"
 
 msgid "E90: Cannot unload last buffer"
 msgstr "E90: Nie mogê wy³adowaæ ostatniego bufora"
@@ -339,7 +339,7 @@
 
 #, c-format
 msgid "E686: Argument of %s must be a List"
-msgstr "E487: Argument %s musi byæ List±"
+msgstr "E686: Argument %s musi byæ List±"
 
 #, c-format
 msgid "E712: Argument of %s must be a List or Dictionary"
@@ -385,7 +385,7 @@
 
 #, c-format
 msgid "E461: Illegal variable name: %s"
-msgstr "E418: Niedozwolona nazwa zmiennej: %s"
+msgstr "E461: Niedozwolona nazwa zmiennej: %s"
 
 msgid "E687: Less targets than List items"
 msgstr "E687: Mniej celów ni¿ elementów Listy"
@@ -1064,7 +1064,7 @@
 msgstr "E156: Brak nazwy znaku"
 
 msgid "E612: Too many signs defined"
-msgstr "E255: Zbyt wiele nazw znaków"
+msgstr "E612: Zbyt wiele nazw znaków"
 
 #, c-format
 msgid "E239: Invalid sign text: %s"
@@ -1228,7 +1228,7 @@
 msgid "Append File"
 msgstr "Do³±cz plik"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr ""
 "E747: Nie mogê zmieniæ katalogu, bufor zosta³ zmodyfikowany (dodaj ! aby "
 "wymusiæ)"
@@ -1465,8 +1465,8 @@
 msgid "is not a file"
 msgstr "nie jest plikiem"
 
-msgid "is a device (disabled with 'opendevice' option"
-msgstr "jest urz±dzeniem (wy³±czonym w opcji 'opendevice'"
+msgid "is a device (disabled with 'opendevice' option)"
+msgstr "jest urz±dzeniem (wy³±czonym w opcji 'opendevice')"
 
 msgid "[New File]"
 msgstr "[Nowy Plik]"
@@ -2523,8 +2523,7 @@
 msgstr "E265: $_ musi byæ reprezentacj± £añcucha"
 
 msgid "E266: Sorry, this command is disabled, the Ruby library could not be loaded."
-msgstr ""
-"E263: Przykro mi, ta komenda jest wy³±czona, bo nie mo¿na za³adowaæ "
+msgstr "E266: Przykro mi, ta komenda jest wy³±czona, bo nie mo¿na za³adowaæ "
 "biblioteki Ruby."
 
 msgid "E267: unexpected return"
@@ -2692,7 +2691,7 @@
 "bufora/okna"
 
 msgid "E571: Sorry, this command is disabled: the Tcl library could not be loaded."
-msgstr "Przykro mi, ta komenda jest wy³±czona, bo nie mo¿na za³adowaæ biblioteki Tcl."
+msgstr "E571: Przykro mi, ta komenda jest wy³±czona, bo nie mo¿na za³adowaæ biblioteki Tcl."
 
 msgid "E281: TCL ERROR: exit code is not int!? Please report this to vim-dev@vim.org"
 msgstr ""
@@ -3843,7 +3842,7 @@
 msgstr "E548: oczekiwano cyfry"
 
 msgid "E549: Illegal percentage"
-msgstr "E459: Niedozwolony procent"
+msgstr "E549: Niedozwolony procent"
 
 msgid "Enter encryption key: "
 msgstr "Wprowad¼ klucz do odkodowania: "
diff --git a/src/po/zh_CN.po b/src/po/zh_CN.po
index 3d3ab62..5d9aceb 100644
--- a/src/po/zh_CN.po
+++ b/src/po/zh_CN.po
@@ -1207,7 +1207,7 @@
 msgid "Append File"
 msgstr "×·¼ÓÎļþ"
 
-msgid "E747: Cannot change directory, buffer is modifed (add ! to override)"
+msgid "E747: Cannot change directory, buffer is modified (add ! to override)"
 msgstr "E747: ²»ÄܸıäĿ¼£¬»º³åÇøÒÑÐÞ¸Ä (Çë¼Ó ! Ç¿ÖÆÖ´ÐÐ)"
 
 msgid "E186: No previous directory"
diff --git a/src/term.c b/src/term.c
index f1c7180..cbf406c 100644
--- a/src/term.c
+++ b/src/term.c
@@ -85,7 +85,8 @@
 static void check_for_codes_from_term __ARGS((void));
 #endif
 #if defined(FEAT_GUI) \
-    || (defined(FEAT_MOUSE) && (!defined(UNIX) || defined(FEAT_MOUSE_XTERM)))
+    || (defined(FEAT_MOUSE) && (!defined(UNIX) || defined(FEAT_MOUSE_XTERM) \
+		|| defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE)))
 static int get_bytes_from_buf __ARGS((char_u *, char_u *, int));
 #endif
 static void del_termcode_idx __ARGS((int idx));
@@ -1923,7 +1924,7 @@
 #    endif
 	    clip_init(FALSE);
 #   endif
-	if (term_is_xterm)
+	if (use_xterm_like_mouse(term))
 	{
 	    if (use_xterm_mouse())
 		p = NULL;	/* keep existing value, might be "xterm2" */
@@ -2067,9 +2068,7 @@
 static int has_mouse_termcode = 0;
 # endif
 
-# if (!defined(UNIX) || defined(FEAT_MOUSE_XTERM) || defined(FEAT_MOUSE_NET) \
-	|| defined(FEAT_MOUSE_DEC)) || defined(FEAT_MOUSE_JSB) \
-	|| defined(FEAT_MOUSE_PTERM) || defined(PROTO)
+# if (!defined(UNIX) || defined(FEAT_MOUSE_TTY)) || defined(PROTO)
     void
 set_mouse_termcode(n, s)
     int		n;	/* KS_MOUSE, KS_NETTERM_MOUSE or KS_DEC_MOUSE */
@@ -2107,9 +2106,7 @@
 # endif
 
 # if ((defined(UNIX) || defined(VMS) || defined(OS2)) \
-	&& (defined(FEAT_MOUSE_XTERM) || defined(FEAT_MOUSE_DEC) \
-	    || defined(FEAT_MOUSE_GPM) || defined(FEAT_MOUSE_PTERM))) \
-	    || defined(PROTO)
+	&& defined(FEAT_MOUSE_TTY)) || defined(PROTO)
     void
 del_mouse_termcode(n)
     int		n;	/* KS_MOUSE, KS_NETTERM_MOUSE or KS_DEC_MOUSE */
@@ -2951,7 +2948,8 @@
 #endif
 
 #if defined(FEAT_GUI) \
-    || (defined(FEAT_MOUSE) && (!defined(UNIX) || defined(FEAT_MOUSE_XTERM)))
+    || (defined(FEAT_MOUSE) && (!defined(UNIX) || defined(FEAT_MOUSE_XTERM) \
+		|| defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE)))
 /*
  * Read the next num_bytes bytes from buf, and store them in bytes.  Assume
  * that buf has been through inchar().	Returns the actual number of bytes used
@@ -3583,7 +3581,7 @@
     /* Change leading <Esc>[ to CSI, change <Esc>O to <M-O>. */
     if (flags != 0 && flags != ATC_FROM_TERM && term_7to8bit(string) != 0)
     {
-	mch_memmove(s, s + 1, STRLEN(s));
+	STRMOVE(s, s + 1);
 	s[0] = term_7to8bit(string);
     }
     len = (int)STRLEN(s);
@@ -3768,8 +3766,7 @@
 	    c = term_7to8bit(termcodes[i].code);
 	    if (c != 0)
 	    {
-		mch_memmove(termcodes[i].code + 1, termcodes[i].code + 2,
-					       STRLEN(termcodes[i].code + 1));
+		STRMOVE(termcodes[i].code + 1, termcodes[i].code + 2);
 		termcodes[i].code[0] = c;
 	    }
 	}
@@ -3838,7 +3835,8 @@
     int		i, j;
     int		idx = 0;
 #ifdef FEAT_MOUSE
-# if !defined(UNIX) || defined(FEAT_MOUSE_XTERM) || defined(FEAT_GUI)
+# if !defined(UNIX) || defined(FEAT_MOUSE_XTERM) || defined(FEAT_GUI) \
+    || defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE)
     char_u	bytes[6];
     int		num_bytes;
 # endif
@@ -4181,7 +4179,8 @@
 	{
 	    is_click = is_drag = FALSE;
 
-# if !defined(UNIX) || defined(FEAT_MOUSE_XTERM) || defined(FEAT_GUI)
+# if !defined(UNIX) || defined(FEAT_MOUSE_XTERM) || defined(FEAT_GUI) \
+	    || defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE)
 	    if (key_name[0] == (int)KS_MOUSE)
 	    {
 		/*