updated for version 7.0110
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 0c65bb5..09f203a 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 7.0aa.  Last change: 2005 Apr 04
+*motion.txt*    For Vim version 7.0aa.  Last change: 2005 Jul 19
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -595,6 +595,20 @@
 			'>', excluding the '<' and '>'.
 			When used in Visual mode it is made characterwise.
 
+						*v_at* *at*
+at			"a tag block", select [count] tag blocks, from the
+			[count]'th unmatched "<aaa>" backwards to the matching
+			"</aaa>", including the "<aaa>" and "</aaa>".
+			See |tag-blocks| about the details.
+			When used in Visual mode it is made characterwise.
+
+						*v_it* *it*
+it			"inner tag block", select [count] tag blocks, from the
+			[count]'th unmatched "<aaa>" backwards to the matching
+			"</aaa>", excluding the "<aaa>" and "</aaa>".
+			See |tag-blocks| about the details.
+			When used in Visual mode it is made characterwise.
+
 a}							*v_a}* *a}* *a{*
 a{							*v_aB* *v_a{* *aB*
 aB			"a Block", select [count] Blocks, from "[count] [{" to
@@ -679,6 +693,25 @@
 deletes from the cursor position to the start of the next word, "daw" deletes
 the word under the cursor and the space after or before it.
 
+
+Tag blocks						*tag-blocks*
+
+For the "it" and "at" text objects an attempt is done to select blocks between
+matching tags for HTML and XML.  But since these are not completely compatible
+there are a few restrictions.
+
+The normal method is to select a <tag> until the matching </tag>.  For "at"
+the tags are included, for "it" they are excluded.  But when "it" is repeated
+the tags will be included (otherwise nothing would change).
+
+"<aaa/>" items are skipped.  Case is ignored, also for XML where case does
+matter.
+
+In HTML it is possible to have a tag like <br> or <meta ...> without a
+matching end tag.  These are ignored.
+
+The text objects are tolerant about mistakes.  Stray end tags are ignored.
+
 ==============================================================================
 7. Marks					*mark-motions* *E20* *E78*
 
diff --git a/runtime/doc/tags b/runtime/doc/tags
index b4ed2d1..a43ba3a 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -4177,6 +4177,7 @@
 asmh8300.vim	syntax.txt	/*asmh8300.vim*
 aspperl-syntax	syntax.txt	/*aspperl-syntax*
 aspvbs-syntax	syntax.txt	/*aspvbs-syntax*
+at	motion.txt	/*at*
 athena-intellimouse	gui.txt	/*athena-intellimouse*
 attr-list	syntax.txt	/*attr-list*
 author	intro.txt	/*author*
@@ -5429,6 +5430,7 @@
 is	motion.txt	/*is*
 isdirectory()	eval.txt	/*isdirectory()*
 islocked()	eval.txt	/*islocked()*
+it	motion.txt	/*it*
 italic	syntax.txt	/*italic*
 items()	eval.txt	/*items()*
 iw	motion.txt	/*iw*
@@ -6550,6 +6552,7 @@
 tag-!	tagsrch.txt	/*tag-!*
 tag-any-white	tagsrch.txt	/*tag-any-white*
 tag-binary-search	tagsrch.txt	/*tag-binary-search*
+tag-blocks	motion.txt	/*tag-blocks*
 tag-commands	tagsrch.txt	/*tag-commands*
 tag-details	tagsrch.txt	/*tag-details*
 tag-highlight	syntax.txt	/*tag-highlight*
@@ -6828,6 +6831,7 @@
 v_ap	motion.txt	/*v_ap*
 v_aquote	motion.txt	/*v_aquote*
 v_as	motion.txt	/*v_as*
+v_at	motion.txt	/*v_at*
 v_aw	motion.txt	/*v_aw*
 v_a{	motion.txt	/*v_a{*
 v_a}	motion.txt	/*v_a}*
@@ -6871,6 +6875,7 @@
 v_ip	motion.txt	/*v_ip*
 v_iquote	motion.txt	/*v_iquote*
 v_is	motion.txt	/*v_is*
+v_it	motion.txt	/*v_it*
 v_iw	motion.txt	/*v_iw*
 v_i{	motion.txt	/*v_i{*
 v_i}	motion.txt	/*v_i}*
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index 1f8f21f..6a2d44e 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -49,6 +49,7 @@
 long get_dict_number __ARGS((dict_T *d, char_u *key));
 char_u *get_function_name __ARGS((expand_T *xp, int idx));
 char_u *get_expr_name __ARGS((expand_T *xp, int idx));
+long do_searchpair __ARGS((char_u *spat, char_u *mpat, char_u *epat, int dir, char_u *skip, int flags));
 void set_vim_var_nr __ARGS((int idx, long val));
 long get_vim_var_nr __ARGS((int idx));
 char_u *get_vim_var_str __ARGS((int idx));
diff --git a/src/screen.c b/src/screen.c
index 3e11c53..c07691e 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -1253,7 +1253,8 @@
 			from = to;
 		}
 
-		if (VIsual.lnum != wp->w_old_visual_lnum)
+		if (VIsual.lnum != wp->w_old_visual_lnum
+					|| VIsual.col != wp->w_old_visual_col)
 		{
 		    if (wp->w_old_visual_lnum < from
 						&& wp->w_old_visual_lnum != 0)
@@ -1379,6 +1380,7 @@
 	wp->w_old_visual_mode = VIsual_mode;
 	wp->w_old_cursor_lnum = curwin->w_cursor.lnum;
 	wp->w_old_visual_lnum = VIsual.lnum;
+	wp->w_old_visual_col = VIsual.col;
 	wp->w_old_curswant = curwin->w_curswant;
     }
     else
@@ -1386,6 +1388,7 @@
 	wp->w_old_visual_mode = 0;
 	wp->w_old_cursor_lnum = 0;
 	wp->w_old_visual_lnum = 0;
+	wp->w_old_visual_col = 0;
     }
 #endif /* FEAT_VISUAL */
 
diff --git a/src/structs.h b/src/structs.h
index e238d0f..4da6862 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1580,6 +1580,7 @@
     colnr_T	w_old_cursor_fcol;  /* first column for block visual part */
     colnr_T	w_old_cursor_lcol;  /* last column for block visual part */
     linenr_T	w_old_visual_lnum;  /* last known start of visual part */
+    colnr_T	w_old_visual_col;   /* last known start of visual part */
     colnr_T	w_old_curswant;	    /* last known value of Curswant */
 #endif
 
diff --git a/src/version.h b/src/version.h
index a5695f7..01d8221 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 18)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 18, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 19)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jul 19, compiled "