updated for version 7.0065
diff --git a/runtime/colors/darkblue.vim b/runtime/colors/darkblue.vim
index 9e004d3..4bf05d0 100644
--- a/runtime/colors/darkblue.vim
+++ b/runtime/colors/darkblue.vim
@@ -1,6 +1,6 @@
 " Vim color file
 " Maintainer:	Bohdan Vlasyuk <bohdan@vstu.edu.ua>
-" Last Change:	2002 Mar 09
+" Last Change:	2005 Mar 28
 
 " darkblue -- for those who prefer dark background
 " [note: looks bit uglier with come terminal palettes,
@@ -32,31 +32,31 @@
 hi Question			guifg=green gui=none ctermfg=green cterm=none
 hi NonText			guifg=#0030ff		ctermfg=darkblue
 
-hi StatusLine		guifg=blue guibg=darkgray gui=none		ctermfg=blue ctermbg=gray term=none cterm=none
-hi StatusLineNC		guifg=black guibg=darkgray gui=none		ctermfg=black ctermbg=gray term=none cterm=none
-hi VertSplit		guifg=black guibg=darkgray gui=none		ctermfg=black ctermbg=gray term=none cterm=none
+hi StatusLine	guifg=blue guibg=darkgray gui=none		ctermfg=blue ctermbg=gray term=none cterm=none
+hi StatusLineNC	guifg=black guibg=darkgray gui=none		ctermfg=black ctermbg=gray term=none cterm=none
+hi VertSplit	guifg=black guibg=darkgray gui=none		ctermfg=black ctermbg=gray term=none cterm=none
 
-hi Folded			guifg=#808080 guibg=#000040			ctermfg=darkgrey ctermbg=black cterm=bold term=bold
-hi FoldColumn		guifg=#808080 guibg=#000040			ctermfg=darkgrey ctermbg=black cterm=bold term=bold
-hi LineNr			guifg=#90f020			ctermfg=green cterm=none
+hi Folded	guifg=#808080 guibg=#000040			ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+hi FoldColumn	guifg=#808080 guibg=#000040			ctermfg=darkgrey ctermbg=black cterm=bold term=bold
+hi LineNr	guifg=#90f020			ctermfg=green cterm=none
 
-hi DiffAdd			guibg=darkblue	ctermbg=darkblue term=none cterm=none
-hi DiffChange		guibg=darkmagenta ctermbg=magenta cterm=none
-hi DiffDelete		ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
-hi DiffText			cterm=bold ctermbg=red gui=bold guibg=Red
+hi DiffAdd	guibg=darkblue	ctermbg=darkblue term=none cterm=none
+hi DiffChange	guibg=darkmagenta ctermbg=magenta cterm=none
+hi DiffDelete	ctermfg=blue ctermbg=cyan gui=bold guifg=Blue guibg=DarkCyan
+hi DiffText	cterm=bold ctermbg=red gui=bold guibg=Red
 
-hi Cursor			guifg=#000020 guibg=#ffaf38 ctermfg=bg ctermbg=brown
-hi lCursor			guifg=#ffffff guibg=#000000 ctermfg=bg ctermbg=darkgreen
+hi Cursor   	guifg=black guibg=yellow ctermfg=black ctermbg=yellow
+hi lCursor   	guifg=black guibg=white ctermfg=black ctermbg=white
 
 
-hi Comment			guifg=#80a0ff ctermfg=darkred
-hi Constant			ctermfg=magenta guifg=#ffa0a0 cterm=none
-hi Special			ctermfg=brown guifg=Orange cterm=none gui=none
-hi Identifier		ctermfg=cyan guifg=#40ffff cterm=none
-hi Statement		ctermfg=yellow cterm=none guifg=#ffff60 gui=none
-hi PreProc			ctermfg=magenta guifg=#ff80ff gui=none cterm=none
-hi type				ctermfg=green guifg=#60ff60 gui=none cterm=none
-hi Underlined		cterm=underline term=underline
-hi Ignore			guifg=bg ctermfg=bg
+hi Comment	guifg=#80a0ff ctermfg=darkred
+hi Constant	ctermfg=magenta guifg=#ffa0a0 cterm=none
+hi Special	ctermfg=brown guifg=Orange cterm=none gui=none
+hi Identifier	ctermfg=cyan guifg=#40ffff cterm=none
+hi Statement	ctermfg=yellow cterm=none guifg=#ffff60 gui=none
+hi PreProc	ctermfg=magenta guifg=#ff80ff gui=none cterm=none
+hi type		ctermfg=green guifg=#60ff60 gui=none cterm=none
+hi Underlined	cterm=underline term=underline
+hi Ignore	guifg=bg ctermfg=bg
 
 
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index dc20786..dc260b9 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 Mar 25
+*eval.txt*      For Vim version 7.0aa.  Last change: 2005 Mar 26
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -2534,8 +2534,8 @@
 				bufname() to get the name
 			lnum	line number in the buffer (first line is 1)
 			col	column number (first column is 1)
-			vcol	non-zero: column number is visual column
-				zero: column number is byte index
+			vcol	non-zero: "col" is visual column
+				zero: "col" is byte index
 			nr	error number
 			text	description of the error
 			type	type of the error, 'E', '1', etc.
@@ -3290,7 +3290,9 @@
 			:for line in readfile(fname, '', 10)
 			:  if line =~ 'Date' | echo line | endif
 			:endfor
-<		When {max} is zero or negative the result is an empty list.
+<		When {max} is negative -{max} lines from the end of the file
+		are returned, or as many as there are.
+		When {max} is zero the result is an empty list.
 		Note that without {max} the whole file is read into memory.
 		Also note that there is no recognition of encoding.  Read a
 		file into a buffer if you need to.
@@ -3600,12 +3602,17 @@
 
 		    filename	name of a file
 		    lnum	line number in the file
-		    col		column number
 		    pattern	search pattern used to locate the error
+		    col		column number
+		    vcol	when non-zero: "col" is visual column
+		    		when zero: "col" is byte index
+		    nr		error number
 		    text	description of the error
+		    type	single-character error type, 'E', 'W', etc.
 
-		The "col" and "text" entries are optional.  Either "lnum" or
-		"pattern" entry can be used to locate a matching error line.
+		The "col", "vcol", "nr", "type" and "text" entries are
+		optional.  Either "lnum" or "pattern" entry can be used to
+		locate a matching error line.
 		If the "filename" entry is not present or neither the "lnum"
 		or "pattern" entries are present, then the item will not be
 		handled as an error line.
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index e17c874..96abe9e 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2005 Mar 21
+*options.txt*	For Vim version 7.0aa.  Last change: 2005 Mar 28
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -600,10 +600,10 @@
 			{not in Vi}
 			{only available when compiled with the |+farsi|
 			feature}
-	When on, the second language is Farsi. In editing mode CTRL-_ toggles
+	When on, the second language is Farsi.  In editing mode CTRL-_ toggles
 	the keyboard map between Farsi and English, when 'allowrevins' set.
 
-	When off, the keyboard map toggles between Hebrew and English. This
+	When off, the keyboard map toggles between Hebrew and English.  This
 	is useful to start the Vim in native mode i.e. English (left-to-right
 	mode) and have default second language Farsi or Hebrew (right-to-left
 	mode).  See |farsi.txt|.
@@ -620,7 +620,7 @@
 	letters, Cyrillic letters).
 
 	There are currently two possible values:
-	"single":	Use the same width as characters in US-ASCII. This is
+	"single":	Use the same width as characters in US-ASCII.  This is
 			expected by most users.
 	"double":	Use twice the width of ASCII characters.
 
@@ -628,9 +628,9 @@
 	those characters are solely based on how many octets they take in
 	legacy/traditional CJK encodings.  In those encodings, Euro,
 	Registered sign, Greek/Cyrillic letters are represented by two octets,
-	therefore those fonts have "wide" glyphs for them. This is also
+	therefore those fonts have "wide" glyphs for them.  This is also
 	true of some line drawing characters used to make tables in text
-	file. Therefore, when a CJK font is used for GUI Vim or
+	file.  Therefore, when a CJK font is used for GUI Vim or
 	Vim is running inside a terminal (emulators) that uses a CJK font
 	(or Vim is run inside an xterm invoked with "-cjkwidth" option.),
 	this option should be set to "double" to match the width perceived
@@ -659,7 +659,7 @@
 			|+netbeans_intg| or |+sun_workshop| feature}
 	When on, Vim will change its value for the current working directory
 	whenever you open a file, switch buffers, delete a buffer or
-	open/close a window. It will change to the directory containing the
+	open/close a window.  It will change to the directory containing the
 	file which was opened or selected.  This option is provided for
 	backward compatibility with the Vim released with Sun ONE Studio 4
 	Enterprise Edition.
@@ -977,7 +977,7 @@
 	The pattern is used like with |:autocmd|, see |autocmd-patterns|.
 	Watch out for special characters, see |option-backslash|.
 	When $TMPDIR, $TMP or $TEMP is not defined, it is not used for the
-	default value. "/tmp/*" is only used for Unix.
+	default value.  "/tmp/*" is only used for Unix.
 
 						*'balloondelay'* *'bdlay'*
 'balloondelay' 'bdlay'	number	(default: 600)
@@ -1570,8 +1570,8 @@
 	   6. included files
 
 	As you can see, CTRL-N and CTRL-P can be used to do any 'iskeyword'-
-	based expansion (eg dictionary |i_CTRL-X_CTRL-K|, included patterns
-	|i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions)
+	based expansion (e.g., dictionary |i_CTRL-X_CTRL-K|, included patterns
+	|i_CTRL-X_CTRL-I|, tags |i_CTRL-X_CTRL-]| and normal expansions).
 
 						*'completefunc'* *'cfu'*
 'completefunc' 'cfu'	string	(default: empty)
@@ -1758,7 +1758,7 @@
 			not after '!' or '?'.  Also see 'joinspaces'.
 								*cpo-J*
 		J	A |sentence| has to be followed by two spaces after
-			the '.', '!' or '?'. A <Tab> is not recognized as
+			the '.', '!' or '?'.  A <Tab> is not recognized as
 			white space.
 								*cpo-k*
 		k	Disable the recognition of raw key codes in
@@ -2163,7 +2163,7 @@
 	  "." is replaced with the path name of the edited file.
 	- For Unix and Win32, if a directory ends in two path separators, the
 	  swap file name will be built from the complete path to the file
-	  with all path separators substituted to percent '%' signs. This will
+	  with all path separators substituted to percent '%' signs.  This will
 	  ensure file name uniqueness in the preserve directory.
 	- Spaces after the comma are ignored, other spaces are considered part
 	  of the directory name.  To have a space at the start of a directory
@@ -2902,7 +2902,7 @@
 						      VMS: "SEARCH/NUMBERS ")
 			global or local to buffer |global-local|
 			{not in Vi}
-	Program to use for the |:grep| command. This option may contain '%'
+	Program to use for the |:grep| command.  This option may contain '%'
 	and '#' characters, which are expanded like when used in a command-
 	line.  The placeholder "$*" is allowed to specify where the arguments
 	will be included.  Environment variables are expanded |:set_env|.  See
@@ -3064,7 +3064,7 @@
 		i   - italic
 		u   - underline
 		s   - strikeout
-		cXX - character set XX. valid charsets are: ANSI, ARABIC,
+		cXX - character set XX.  Valid charsets are: ANSI, ARABIC,
 		      BALTIC, CHINESEBIG5, DEFAULT, EASTEUROPE, GB2312, GREEK,
 		      HANGEUL, HEBREW, JOHAB, MAC, OEM, RUSSIAN, SHIFTJIS,
 		      SYMBOL, THAI, TURKISH, VIETNAMESE ANSI and BALTIC.
@@ -3146,7 +3146,7 @@
 
 						*'guioptions'* *'go'*
 'guioptions' 'go'	string	(default "gmrLtT"   (MS-Windows),
-					 "agimrLtT" (GTK, Motif and Athena)
+					 "agimrLtT" (GTK, Motif and Athena))
 			global
 			{not in Vi}
 			{only available when compiled with GUI enabled}
@@ -3441,7 +3441,7 @@
 	Unix xterm and iris-ansi by default, where 't_IS' is taken from the
 	builtin termcap).
 	When Vim was compiled with HAVE_X11 defined, the original icon will be
-	restored if possible |X11|. See |X11-icon| for changing the icon on
+	restored if possible |X11|.  See |X11-icon| for changing the icon on
 	X11.
 
 						*'iconstring'*
@@ -3576,7 +3576,7 @@
 	Pattern to be used to find an include command.  It is a search
 	pattern, just like for the "/" command (See |pattern|).  The default
 	value is for C programs.  This option is used for the commands "[i",
-	"]I", "[d", etc..  The 'isfname' option is used to recognize the file
+	"]I", "[d", etc.  The 'isfname' option is used to recognize the file
 	name that comes after the matched pattern.  See |option-backslash|
 	about including spaces and backslashes.
 
@@ -3754,7 +3754,7 @@
 	The characters given by this option are included in identifiers.
 	Identifiers are used in recognizing environment variables and after a
 	match of the 'define' option.  It is also used for "\i" in a
-	|pattern|. See 'isfname' for a description of the format of this
+	|pattern|.  See 'isfname' for a description of the format of this
 	option.
 	Careful: If you change this option, it might break expanding
 	environment variables.  E.g., when '/' is included and Vim tries to
@@ -4336,12 +4336,12 @@
 			like in an xterm.
 	   popup	Right mouse button pops up a menu.  The shifted left
 			mouse button extends a selection.  This works like
-			with Microsoft Windows
+			with Microsoft Windows.
 	   popup_setpos Like "popup", but the cursor will be moved to the
 			position where the mouse was clicked, and thus the
 			selected operation will act upon the clicked object.
 			If clicking inside a selection, that selection will
-			be acted upon, ie. no cursor move.  This implies of
+			be acted upon, i.e. no cursor move.  This implies of
 			course, that right clicking outside a selection will
 			end Visual mode.
 	Overview of what button does what for each model:
@@ -4364,7 +4364,7 @@
 
 					*'mouseshape'* *'mouses'* *E547*
 'mouseshape' 'mouses'	string	(default "i:beam,r:beam,s:updown,sd:cross,
-					m:no,ml:up-arrow,v:rightup-arrow"
+					m:no,ml:up-arrow,v:rightup-arrow")
 			global
 			{not in Vi}
 			{only available when compiled with the |+mouseshape|
@@ -4896,7 +4896,7 @@
 	If 'rulerformat' is set, it will determine the contents of the ruler.
 	Each window has its own ruler.  If a window has a status line, the
 	ruler is shown there.  Otherwise it is shown in the last line of the
-	screen.  If the statusline is given by 'statusline' (ie. not empty),
+	screen.  If the statusline is given by 'statusline' (i.e. not empty),
 	this option takes precedence over 'ruler' and 'rulerformat'
 	If the number of characters displayed is different from the number of
 	bytes in the text (e.g., for a TAB or a multi-byte character), both
@@ -4950,7 +4950,7 @@
 						$VIM/vimfiles,
 						$VIMRUNTIME,
 						$VIM/vimfiles/after,
-						sys$login:vimfiles/after"
+						sys$login:vimfiles/after")
 			global
 			{not in Vi}
 	This is a list of directories which will be searched for runtime
@@ -5415,7 +5415,7 @@
 		on the command-line, "<" will appear in the left most column.
 		Ignored in Ex mode.
 	  T	truncate other messages in the middle if they are too long to
-		fit on the command line. "..." will appear in the middle.
+		fit on the command line.  "..." will appear in the middle.
 		Ignored in Ex mode.
 	  W	don't give "written" or "[w]" when writing a file
 	  A	don't give the "ATTENTION" message when an existing swap file
@@ -5535,7 +5535,7 @@
 			global
 			{not in Vi}
 	The minimal number of screen columns to keep to the left and to the
-	right of the cursor if 'nowrap' is set. Setting this option to a value
+	right of the cursor if 'nowrap' is set.  Setting this option to a value
 	greater than 0 while having |'sidescroll'| also at a non-zero value
 	makes some context visible in the line you are scrolling in
 	horizontally (except at the end and beginning of the line).  Setting
@@ -5700,9 +5700,9 @@
 	'laststatus' is 2) is controlling the output of |CTRL-G|.
 
 	field	    meaning ~
-	-	    Left justify the item. The default is right justified
+	-	    Left justify the item.  The default is right justified
 		    when minwid is larger than the length of the item.
-	0	    Leading zeroes in numeric items. Overridden by '-'.
+	0	    Leading zeroes in numeric items.  Overridden by '-'.
 	minwid	    Minimum width of the item, padding as set by '-' & '0'.
 		    Value must be 50 or less.
 	maxwid	    Maximum width of the item.  Truncation occurs with a '<'
@@ -5743,7 +5743,7 @@
 	      Mnemonic: Offset from start of file (with one added)
 	      {not available when compiled without |+byte_offset| feature}
 	O N   As above, in hexadecimal.
-	N N   Printer page number. (Only works in the 'printheader' option.)
+	N N   Printer page number.  (Only works in the 'printheader' option.)
 	l N   Line number.
 	L N   Number of lines in buffer.
 	c N   Column number.
@@ -5752,7 +5752,7 @@
 	p N   Percentage through file in lines as in |CTRL-G|.
 	P S   Percentage through file of displayed window.  This is like the
 	      percentage described for 'ruler'.  Always 3 in length.
-	a S   Argument list status as in default title. ({current} of {max})
+	a S   Argument list status as in default title.  ({current} of {max})
 	      Empty if the argument file count is zero or one.
 	{ NF  Evaluate expression between '{' and '}' and substitute result.
 	( -   Start of item group.  Can be used for setting the width and
@@ -5763,7 +5763,7 @@
 	= -   Separation point between left and right aligned items.
 	      No width fields allowed.
 	* -   Set highlight group to User{N}, where {N} is taken from the
-	      minwid field. eg. %1*.  Restore normal highlight with %* or %0*.
+	      minwid field, e.g. %1*.  Restore normal highlight with %* or %0*.
 	      The difference between User{N} and StatusLine  will be applied
 	      to StatusLineNC for the statusline of non-current windows.
 	      The number N must be between 1 and 9.  See |hl-User1..9|
@@ -5774,10 +5774,10 @@
 	with a space it is assumed that it wants to separate itself from
 	anything but other flags.  That is: A leading comma is removed if the
 	preceding character stems from plaintext.  A leading space is removed
-	if the preceding character stems from another active flag. This will
+	if the preceding character stems from another active flag.  This will
 	make a nice display when flags are used like in the examples below.
 
-	When all items in a group becomes an empty string (ie. flags that are
+	When all items in a group becomes an empty string (i.e. flags that are
 	not set) and a minwid is not set for the group, the whole group will
 	become empty.  This will make a group like the following disappear
 	completely from the statusline when none of the flags are set. >
@@ -5786,7 +5786,7 @@
 	Beware that an expression is evaluated each and every time the status
 	line is displayed.  The current buffer and current window will be set
 	temporarily to that of the window (and buffer) whose statusline is
-	currently being drawn. The expression will evaluate in this context.
+	currently being drawn.  The expression will evaluate in this context.
 	The variable "actual_curbuf" is set to the 'bufnr()' number of the
 	real current buffer.  The expression is evaluated in the |sandbox|.
 
@@ -5896,7 +5896,7 @@
 			also used in all buffer related split commands, for
 			example ":sbuffer", ":sbnext", or ":sbrewind".
 	   split	If included, split the current window before loading
-			a buffer. Otherwise: do not split, use current window.
+			a buffer.  Otherwise: do not split, use current window.
 			Supported in |quickfix| commands that display errors.
 
 						*'syntax'* *'syn'*
@@ -6628,7 +6628,7 @@
 		saved.  When not included, the value of 'history' is used.
 	c	When included, convert the text in the viminfo file from the
 		'encoding' used when writing the file to the current
-		'encoding'. See |viminfo-encoding|.
+		'encoding'.  See |viminfo-encoding|.
 	f	Whether file marks need to be stored.  If zero, file marks ('0
 		to '9, 'A to 'Z) are not stored.  When not present or when
 		non-zero, they are all stored.  '0 is used for the current
@@ -6771,8 +6771,8 @@
 			global
 			{not in Vi}
 	'wildcharm' works exactly like 'wildchar', except that it is
-	recognized when used inside a macro. You can find "spare" command-line
-	keys suitable for this option by looking at |ex-edit-index|. Normally
+	recognized when used inside a macro.  You can find "spare" command-line
+	keys suitable for this option by looking at |ex-edit-index|.  Normally
 	you'll never actually type 'wildcharm', just use it in mappings that
 	automatically invoke completion mode, e.g.: >
 		:set wcm=<C-Z>
@@ -6862,7 +6862,7 @@
 
 	Examples: >
 		:set wildmode=full
-<	Complete first full match, next match, etc. (the default) >
+<	Complete first full match, next match, etc.  (the default) >
 		:set wildmode=longest,full
 <	Complete longest common string, then each full match >
 		:set wildmode=list:full
diff --git a/runtime/ftplugin/c.vim b/runtime/ftplugin/c.vim
index cf6686c..39ba823 100644
--- a/runtime/ftplugin/c.vim
+++ b/runtime/ftplugin/c.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2004 Sep 01
+" Last Change:	2005 Mar 27
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -11,12 +11,10 @@
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
+" Using line continuation here.
 set cpo-=C
 
-let b:undo_ftplugin = "setl cin< fo< com<"
-	\ . "| if has('vms') | setl isk< | endif"
-
-setlocal cindent
+let b:undo_ftplugin = "setl fo< com< | if has('vms') | setl isk< | endif"
 
 " Set 'formatoptions' to break comment lines but not other lines,
 " and insert the comment leader when hitting <CR> or using "o".
diff --git a/runtime/ftplugin/changelog.vim b/runtime/ftplugin/changelog.vim
index 47d58cc..847cca7 100644
--- a/runtime/ftplugin/changelog.vim
+++ b/runtime/ftplugin/changelog.vim
@@ -216,7 +216,7 @@
     command! -nargs=0 NewChangelogEntry call s:new_changelog_entry()
   endif
 
-  let b:undo_ftplugin = "setl com< tw< fo< et< ai<"
+  let b:undo_ftplugin = "setl com< tw< fo< et<"
 
   if &textwidth == 0
     setlocal textwidth=78
@@ -224,7 +224,7 @@
   setlocal comments=
   setlocal formatoptions+=t
   setlocal noexpandtab
-  setlocal autoindent
+  " setlocal autoindent     now in indent file
 
   let &cpo = cpo_save
 else
diff --git a/runtime/ftplugin/cs.vim b/runtime/ftplugin/cs.vim
index 7f45098..0ff3c9d 100644
--- a/runtime/ftplugin/cs.vim
+++ b/runtime/ftplugin/cs.vim
@@ -11,8 +11,6 @@
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setlocal cindent
-
 " 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+=croql
diff --git a/runtime/ftplugin/ishd.vim b/runtime/ftplugin/ishd.vim
index 63e1a74..dedb328 100644
--- a/runtime/ftplugin/ishd.vim
+++ b/runtime/ftplugin/ishd.vim
@@ -6,8 +6,6 @@
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
 
-setlocal nocindent
-setlocal autoindent
 setlocal foldmethod=syntax
 
 set cpo-=C
diff --git a/runtime/ftplugin/lisp.vim b/runtime/ftplugin/lisp.vim
index 9482833..b477214 100644
--- a/runtime/ftplugin/lisp.vim
+++ b/runtime/ftplugin/lisp.vim
@@ -14,7 +14,6 @@
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setl autoindent
 setl comments=:;
 setl define=^\\s*(def\\k*
 setl formatoptions-=t
@@ -25,6 +24,3 @@
 " e.g. insertion of ;;; and ;; on normal "O" or "o" when staying in comment
 setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|#
 setl formatoptions+=croql
-" with smartindent # cause left alignment
-setl nosmartindent
-
diff --git a/runtime/ftplugin/rpl.vim b/runtime/ftplugin/rpl.vim
index 2b26ef1..5ddf2c1 100644
--- a/runtime/ftplugin/rpl.vim
+++ b/runtime/ftplugin/rpl.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:     RPL/2
 " Maintainer:   Joël BERTRAND <rpl2@free.fr>
-" Last Change:	2002 Feb 07
+" Last Change:	2005 Mar 28
 " Version: 		0.1
 
 " Only do this when not done yet for this buffer
@@ -12,8 +12,6 @@
 " Don't load another plugin for this buffer
 let b:did_ftplugin = 1
 
-setlocal autoindent
-
 " 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+=croql
diff --git a/runtime/ftplugin/vb.vim b/runtime/ftplugin/vb.vim
index bb4c23a..d70db89 100644
--- a/runtime/ftplugin/vb.vim
+++ b/runtime/ftplugin/vb.vim
@@ -6,8 +6,6 @@
 if exists("b:did_ftplugin") | finish | endif
 let b:did_ftplugin = 1
 
-setlocal nocindent
-setlocal autoindent
 setlocal com=sr:'\ -,mb:'\ \ ,el:'\ \ ,:'
 
 " we need this wrapper, as call doesn't allow a count
diff --git a/runtime/indent.vim b/runtime/indent.vim
index 78fb9d0..1557d71 100644
--- a/runtime/indent.vim
+++ b/runtime/indent.vim
@@ -1,7 +1,7 @@
 " Vim support file to switch on loading indent files for file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 Sep 12
+" Last Change:	2005 Mar 28
 
 if exists("did_indent_on")
   finish
@@ -9,5 +9,17 @@
 let did_indent_on = 1
 
 augroup filetypeindent
-  au FileType * if expand("<amatch>") != "" | if exists("b:did_indent") | unlet b:did_indent | endif | runtime! indent/<amatch>.vim | endif
+  au FileType * call s:LoadIndent()
+  func! s:LoadIndent()
+    if exists("b:undo_indent")
+      exe b:undo_indent
+      unlet! b:undo_indent b:did_indent
+    endif
+    if expand("<amatch>") != ""
+      if exists("b:did_indent")
+	unlet b:did_indent
+      endif
+      runtime! indent/<amatch>.vim
+    endif
+  endfunc
 augroup END
diff --git a/runtime/indent/bib.vim b/runtime/indent/bib.vim
new file mode 100644
index 0000000..d1a0636
--- /dev/null
+++ b/runtime/indent/bib.vim
@@ -0,0 +1,15 @@
+" Vim indent file
+" Language:      BibTeX
+" Maintainer:    Dorai Sitaram <ds26@gte.com>
+" URL:		 http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html
+" Last Change:   2005 Mar 28
+
+" Only do this when not done yet for this buffer
+if exists("b:did_indent")
+  finish
+endif
+let b:did_indent = 1
+
+setlocal cindent
+
+let b:undo_indent = "setl cin<"
diff --git a/runtime/indent/c.vim b/runtime/indent/c.vim
index 135251d..e224382 100644
--- a/runtime/indent/c.vim
+++ b/runtime/indent/c.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2001 Jun 12
+" Last Change:	2005 Mar 27
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -11,3 +11,5 @@
 
 " C indenting is built-in, thus this is very simple
 setlocal cindent
+
+let b:undo_indent = "setl cin<"
diff --git a/runtime/indent/cs.vim b/runtime/indent/cs.vim
index 064ab00..4a040b6 100644
--- a/runtime/indent/cs.vim
+++ b/runtime/indent/cs.vim
@@ -11,3 +11,5 @@
 
 " C# is like indenting C
 setlocal cindent
+
+let b:undo_indent = "setl cin<"
diff --git a/runtime/indent/lisp.vim b/runtime/indent/lisp.vim
new file mode 100644
index 0000000..444fe10
--- /dev/null
+++ b/runtime/indent/lisp.vim
@@ -0,0 +1,15 @@
+" Vim indent file
+" Language:	Lisp
+" Maintainer:	noone
+" Last Change:	2005 Mar 28
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+   finish
+endif
+let b:did_indent = 1
+
+" Autoindent is the best we can do.
+setlocal ai
+
+let b:undo_indent = "setl ai<"
diff --git a/runtime/indent/rpl.vim b/runtime/indent/rpl.vim
index 341f5f9..07bfd06 100644
--- a/runtime/indent/rpl.vim
+++ b/runtime/indent/rpl.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	RPL/2
 " Version:	0.2
-" Last Change:	2002 August 16
+" Last Change:	2005 Mar 28
 " Maintainer:	BERTRAND Joël <rpl2@free.fr>
 
 " Only load this indent file when no other was loaded.
@@ -10,6 +10,7 @@
 endif
 let b:did_indent = 1
 
+setlocal autoindent
 setlocal indentkeys+==~end,=~case,=~if,=~then,=~else,=~do,=~until,=~while,=~repeat,=~select,=~default,=~for,=~start,=~next,=~step,<<>,<>>
 
 " Define the appropriate indent function but only once
@@ -18,6 +19,8 @@
   finish
 endif
 
+let b:undo_indent = "set ai< indentkeys< indentexpr<"
+
 function RplGetIndent(lnum)
   let ind = indent(a:lnum)
   let prevline=getline(a:lnum)
diff --git a/runtime/indent/vb.vim b/runtime/indent/vb.vim
index b570b56..85021bd 100644
--- a/runtime/indent/vb.vim
+++ b/runtime/indent/vb.vim
@@ -8,10 +8,13 @@
 endif
 let b:did_indent = 1
 
+setlocal autoindent
 setlocal indentexpr=VbGetIndent(v:lnum)
 setlocal indentkeys&
 setlocal indentkeys+==~else,=~elseif,=~end,=~wend,=~case,=~next,=~select,=~loop,<:>
 
+let b:undo_indent = "set ai< indentexpr< indentkeys<"
+
 " Only define the function once.
 if exists("*VbGetIndent")
     finish