updated for version 7.0047
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index dc58f1c..034276b 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Jan 31
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Feb 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -80,8 +80,8 @@
 "foo" is converted to 0, which means FALSE.  To test for a non-empty string,
 use strlen(): >
 	:if strlen("foo")
-<						*E728* *E729* *E730* *E731*
-List and Funcref types are not automatically converted.
+<				*E745* *E728* *E703* *E729* *E730* *E731*
+List, Dictionary and Funcref types are not automatically converted.
 
 								*E706*
 You will get an error if you try to change the type of a variable.  You need
@@ -93,7 +93,7 @@
 
 
 1.2 Function references ~
-					*Funcref* *E695* *E703* *E718*
+					*Funcref* *E695* *E718*
 A Funcref variable is obtained with the |function()| function.  It can be used
 in an expression in the place of a function name, before the parenthesis
 around the arguments, to invoke the function it refers to.  Example: >
@@ -1560,11 +1560,11 @@
 
 
 append({lnum}, {expr})					*append()*
-		When {expr} is a List: Append each item of the list as a text
+		When {expr} is a List: Append each item of the List as a text
 		line below line {lnum} in the current buffer.
-		Otherwise append the text line {expr} below line {lnum} in the
-		current buffer.
-		{lnum} can be zero, to insert a line before the first one.
+		Otherwise append {expr} as one text line below line {lnum} in
+		the current buffer.
+		{lnum} can be zero to insert a line before the first one.
 		Returns 1 for failure ({lnum} out of range or out of memory),
 		0 for success.  Example: >
 			:let failed = append(line('$'), "# THE END")
@@ -2683,7 +2683,8 @@
 index({list}, {expr} [, {start} [, {ic}]])			*index()*
 		Return the lowest index in List {list} where the item has a
 		value equal to {expr}.
-		If {start} is given then skip items with a lower index.
+		If {start} is given then start looking at the item with index
+		{start} (may be negative for an item relative to the end).
 		When {ic} is given and it is non-zero, ignore case.  Otherwise
 		case must match.
 		-1 is returned when {expr} is not found in {list}.
@@ -3762,15 +3763,17 @@
 
 							*type()*
 type({expr})	The result is a Number, depending on the type of {expr}:
-			Number:  0
-			String:  1
-			Funcref: 2
-			List:    3
-		To avoid the magic numbers it can be used this way: >
+			Number:	    0
+			String:	    1
+			Funcref:    2
+			List:	    3
+			Dictionary: 4
+		To avoid the magic numbers it should be used this way: >
 			:if type(myvar) == type(0)
 			:if type(myvar) == type("")
 			:if type(myvar) == type(function("tr"))
 			:if type(myvar) == type([])
+			:if type(myvar) == type({})
 
 values({dict})						*values()*
 		Return a List with all the values of {dict}.  The List is in
@@ -4358,7 +4361,7 @@
 			When the selected range of items is partly past the
 			end of the list, items will be added.
 
-						*:let+=* *:let-=* *:let.=*
+					*:let+=* *:let-=* *:let.=* *E734*
 :let {var} += {expr1}	Like ":let {var} = {var} + {expr1}".
 :let {var} -= {expr1}	Like ":let {var} = {var} - {expr1}".
 :let {var} .= {expr1}	Like ":let {var} = {var} . {expr1}".
diff --git a/runtime/doc/netbeans.txt b/runtime/doc/netbeans.txt
index 11c24a6..5007122 100644
--- a/runtime/doc/netbeans.txt
+++ b/runtime/doc/netbeans.txt
@@ -560,6 +560,9 @@
 stopDocumentListen
 		Mark the buffer to stop reporting changes to the IDE.
 		Opposite of startDocumentListen.
+		NOTE: if "netbeansBuffer" was used to mark this buffer as a
+		NetBeans buffer, then the buffer is deleted in Vim.  This is
+		for compatibility with Sun Studio 10.
 
 unguard off len
 		Opposite of "guard", remove guarding for a text area.
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 227d1f3..c8e765f 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -3639,6 +3639,7 @@
 E731	eval.txt	/*E731*
 E732	eval.txt	/*E732*
 E733	eval.txt	/*E733*
+E734	eval.txt	/*E734*
 E735	eval.txt	/*E735*
 E736	eval.txt	/*E736*
 E737	eval.txt	/*E737*
@@ -3650,6 +3651,7 @@
 E742	eval.txt	/*E742*
 E743	eval.txt	/*E743*
 E744	netbeans.txt	/*E744*
+E745	eval.txt	/*E745*
 E75	vi_diff.txt	/*E75*
 E76	pattern.txt	/*E76*
 E77	message.txt	/*E77*
diff --git a/runtime/ftplugin/vhdl.vim b/runtime/ftplugin/vhdl.vim
new file mode 100644
index 0000000..3e4ca4b
--- /dev/null
+++ b/runtime/ftplugin/vhdl.vim
@@ -0,0 +1,41 @@
+" Vim filetype plugin file
+" Language: VHDL
+" Maintainer:   R.Shankar (shankar at txc.stpn.soft.net)
+" Last Change:  Tue Oct 8
+
+
+" Only do this when not done yet for this buffer
+if exists("b:did_ftplugin")
+  finish
+endif
+
+" Don't load another plugin for this buffer
+let b:did_ftplugin = 1
+
+" Set 'formatoptions' to break comment lines but not other lines,
+" and insert the comment leader when hitting <CR> or using "o".
+"setlocal fo-=t fo+=croqlm1
+
+" Set 'comments' to format dashed lists in comments.
+"setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,://
+
+" Format comments to be up to 78 characters long
+setlocal tw=75
+
+set cpo-=C
+
+" Win32 can filter files in the browse dialog
+"if has("gui_win32") && !exists("b:browsefilter")
+"  let b:browsefilter = "Verilog Source Files (*.v)\t*.v\n" .
+"   \ "All Files (*.*)\t*.*\n"
+"endif
+
+" Let the matchit plugin know what items can be matched.
+if ! exists("b:match_words")  &&  exists("loaded_matchit")
+  let b:match_ignorecase=1
+  let s:notend = '\%(\<end\s\+\)\@<!'
+  let b:match_words=
+  \ s:notend . '\<if\>:\<elsif\>:\<else\>:\<end\>\s\+\<if\>,' .
+  \ s:notend . '\<case\>:\<when\>:\<end\>\s\+\<case\>,' .
+  \ s:notend . '\<process\>:\<end\>\s\+\<process\>'
+endif