updated for version 7.0232
diff --git a/runtime/autoload/netrwFileHandlers.vim b/runtime/autoload/netrwFileHandlers.vim
index bad6d81..cd6de66 100644
--- a/runtime/autoload/netrwFileHandlers.vim
+++ b/runtime/autoload/netrwFileHandlers.vim
@@ -1,8 +1,8 @@
 " netrwFileHandlers: contains various extension-based file handlers for
 "                    netrw's browsers' x command ("eXecute launcher")
 " Author:	Charles E. Campbell, Jr.
-" Date:		Feb 15, 2006
-" Version:	8a	ASTRO-ONLY
+" Date:		Mar 22, 2006
+" Version:	8
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
@@ -22,7 +22,7 @@
 endif
 let s:keepcpo= &cpo
 set cpo&vim
-let g:loaded_netrwFileHandlers= "v8a"
+let g:loaded_netrwFileHandlers= "v8"
 
 " ---------------------------------------------------------------------
 " netrwFileHandlers#Invoke: {{{2
diff --git a/runtime/autoload/netrwSettings.vim b/runtime/autoload/netrwSettings.vim
index e8d6bd2..f51a328 100644
--- a/runtime/autoload/netrwSettings.vim
+++ b/runtime/autoload/netrwSettings.vim
@@ -1,7 +1,7 @@
 " netrwSettings.vim: makes netrw settings simpler
-" Date:		Jan 26, 2006
+" Date:		Mar 22, 2006
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
-" Version:	6a	ASTRO-ONLY
+" Version:	6
 " Copyright:    Copyright (C) 1999-2005 Charles E. Campbell, Jr. {{{1
 "               Permission is hereby granted to use and distribute this code,
 "               with or without modifications, provided that this copyright
@@ -19,7 +19,7 @@
 if exists("g:loaded_netrwSettings") || &cp
   finish
 endif
-let g:loaded_netrwSettings  = "v6a"
+let g:loaded_netrwSettings  = "v6"
 
 " ---------------------------------------------------------------------
 " NetrwSettings: {{{1
@@ -56,10 +56,10 @@
    let g:netrw_ignorenetrc= 0
   endif
 
-  put ='+ --------------------------------------------'
-  put ='+ NetrwSettings:  by Charles E. Campbell, Jr.'
-  put ='+  Press ? with cursor atop any line for help  '
-  put ='+ --------------------------------------------'
+  put ='+ ---------------------------------------------'
+  put ='+  NetrwSettings:  by Charles E. Campbell, Jr.'
+  put ='+ Press <F1> with cursor atop any line for help'
+  put ='+ ---------------------------------------------'
   let s:netrw_settings_stop= line(".")
 
   put =''
@@ -132,7 +132,7 @@
 
   set nomod
 
-  map <buffer> <silent> ? :call NetrwSettingHelp()<cr>
+  map <buffer> <silent> <F1> :call NetrwSettingHelp()<cr>
   let tmpfile= tempname()
   exe 'au BufWriteCmd	Netrw\ Settings	silent w! '.tmpfile.'|so '.tmpfile.'|call delete("'.tmpfile.'")|set nomod'
 endfun
diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim
index be39740..2243ea8 100644
--- a/runtime/autoload/zip.vim
+++ b/runtime/autoload/zip.vim
@@ -1,7 +1,7 @@
 " zip.vim: Handles browsing zipfiles
 "            AUTOLOAD PORTION
-" Date:			Dec 21, 2005
-" Version:		6
+" Date:			Mar 22, 2006
+" Version:		7
 " Maintainer:	Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
 " License:		Vim License  (see vim's :help license)
 " Copyright:    Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
@@ -22,7 +22,8 @@
  finish
 endif
 
-let g:loaded_zip= "v6"
+let g:loaded_zip     = "v7"
+let s:zipfile_escape = ' ?&;\'
 
 " ----------------
 "  Functions: {{{1
@@ -53,6 +54,7 @@
 "   call Dret("zip#Browse : file<".a:zipfile."> not readable")
    return
   endif
+"  call Decho("passed sanity checks")
   if &ma != 1
    set ma
   endif
@@ -73,7 +75,8 @@
   0d
   $
 
-  exe "silent r! unzip -l ".a:zipfile
+  call Decho("exe silent r! unzip -l '".escape(a:zipfile,s:zipfile_escape)."'")
+  exe "silent r! unzip -l '".escape(a:zipfile,s:zipfile_escape)."'"
   $d
   silent 4,$v/^\s\+\d\+\s\{0,5}\d/d
   silent  4,$s/^\%(.*\)\s\+\(\S\)/\1/
@@ -111,12 +114,15 @@
 
   " get zipfile to the new-window
   let zipfile= substitute(w:zipfile,'.zip$','','e')
-  let curfile= expand("%")
+  let curfile= escape(expand("%"),s:zipfile_escape)
+"  call Decho("zipfile<".zipfile.">")
+"  call Decho("curfile<".curfile.">")
 
   new
   wincmd _
   let s:zipfile_{winnr()}= curfile
-  exe "e zipfile:".zipfile.':'.fname
+"  call Decho("exe e zipfile:".escape(zipfile,s:zipfile_escape).':'.fname)
+  exe "e zipfile:".escape(zipfile,s:zipfile_escape).':'.fname
   filetype detect
 
   let &report= repkeep
@@ -130,11 +136,12 @@
   let repkeep= &report
   set report=10
 
-  let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):.*$','\1','')
-  let fname   = substitute(a:fname,'zipfile:.\{-}:\(.*\)$','\1','')
+  let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):[^\\].*$','\1','')
+  let fname   = substitute(a:fname,'zipfile:.\{-}:\([^\\].*\)$','\1','')
 "  call Decho("zipfile<".zipfile."> fname<".fname.">")
 
-  exe "r! unzip -p ".zipfile." ".fname
+"  call Decho("exe r! unzip -p '".escape(zipfile,s:zipfile_escape)."' ".fname)
+  exe "r! unzip -p '".escape(zipfile,s:zipfile_escape)."' ".fname
 
   " cleanup
   0d
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 18342b8..b25a88e 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 21
+*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -3591,7 +3591,7 @@
 		This can be used to save and restore the cursor position: >
 			let save_cursor = getpos(".")
 			MoveTheCursorAround
-			call setpos(save_cursor)
+			call setpos('.', save_cursor)
 <		Also see |setpos()|.
 
 prevnonblank({lnum})					*prevnonblank()*
@@ -4225,6 +4225,7 @@
 		the current buffer.  To set a mark in another buffer you can
 		use the |bufnr()| function to turn a file name into a buffer
 		number.
+		Does not change the jumplist.
 
 		"lnum" and "col" are the position in the buffer.  The first
 		column is 1.  Use a zero "lnum" to delete a mark.
@@ -4918,8 +4919,8 @@
 		This is useful if you have a mapping that jumps around in the
 		buffer and you want to go back to the original view.
 		This does not save fold information.  Use the 'foldenable'
-		option to temporarily switch of folding, so that folds are not
-		opened when moving around.
+		option to temporarily switch off folding, so that folds are
+		not opened when moving around.
 		The return value includes:
 			lnum		cursor line number
 			col		cursor column
diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt
index 3a8b164..778b639 100644
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 09
+*filetype.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -148,6 +148,7 @@
 	*.i		g:filetype_i	|ft-progress-syntax|
 	*.p		g:filetype_p	|ft-pascal-syntax|
 	*.sh		g:bash_is_sh	|ft-sh-syntax|
+	*.tex		g:tex_flavor	|ft-tex-plugin|
 
 							*filetype-ignore*
 To avoid that certain files are being inspected, the g:ft_ignore_pat variable
@@ -542,4 +543,16 @@
 file: |sql.txt|.
 
 
+TEX							*ft-tex-plugin*
+
+If the first line of a *.tex file has the form >
+	%&<format>
+then this determined the file type:  plaintex (for plain TeX), context (for
+ConTeXt), or tex (for LaTeX).  Otherwise, the file is searched for keywords to
+choose context or tex.  If no keywords are found, it defaults to tex.  You can
+change the default by defining the variable g:tex_flavor to the format (not
+the file type) you use most:  plain or context or latex.  (Currently no other
+formats are recognized.)
+
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index 4814a09..81a3822 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 20
+*quickfix.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -189,6 +189,15 @@
 :lb[uffer] [bufnr]	Same as ":cbuffer", except the location list for the
 			current window is used instead of the quickfix list.
 
+						*:cgetb* *:cgetbuffer*
+:cgetb[uffer] [bufnr]	Read the error list from the current buffer.  Just
+			like ":cbuffer" but don't jump to the first error.
+
+						*:lgetb* *:lgetbuffer*
+:lgetb[uffer] [bufnr]	Same as ":cgetbuffer", except the location list for
+			the current window is used instead of the quickfix
+			list.
+
 							*:caddb* *:caddbuffer*
 :caddb[uffer] [bufnr]	Read the error list from the current buffer and add
 			the errors to the current quickfix list.  If a
@@ -231,6 +240,14 @@
 :lad[dexpr][!] {expr}	Same as ":caddexpr", except the location list for the
 			current window is used instead of the quickfix list.
 
+							*:cgete* *:cgetexpr*
+:cgete[xpr][!] {expr}	Create a quickfix list using the result of {expr}.
+			Just like ":cexpr", but don't jump to the first error.
+
+							*:lgete* *:lgetexpr*
+:lgete[xpr][!] {expr}	Same as ":cgetexpr", except the location list for the
+			current window is used instead of the quickfix list.
+
 							*:cl* *:clist*
 :cl[ist] [from] [, [to]]
 			List all errors that are valid |quickfix-valid|.
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 4d6cc63..5a8086f 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1849,6 +1849,10 @@
 :cfir	quickfix.txt	/*:cfir*
 :cfirst	quickfix.txt	/*:cfirst*
 :cg	quickfix.txt	/*:cg*
+:cgetb	quickfix.txt	/*:cgetb*
+:cgetbuffer	quickfix.txt	/*:cgetbuffer*
+:cgete	quickfix.txt	/*:cgete*
+:cgetexpr	quickfix.txt	/*:cgetexpr*
 :cgetfile	quickfix.txt	/*:cgetfile*
 :ch	change.txt	/*:ch*
 :change	change.txt	/*:change*
@@ -2188,6 +2192,10 @@
 :lfir	quickfix.txt	/*:lfir*
 :lfirst	quickfix.txt	/*:lfirst*
 :lg	quickfix.txt	/*:lg*
+:lgetb	quickfix.txt	/*:lgetb*
+:lgetbuffer	quickfix.txt	/*:lgetbuffer*
+:lgete	quickfix.txt	/*:lgete*
+:lgetexpr	quickfix.txt	/*:lgetexpr*
 :lgetfile	quickfix.txt	/*:lgetfile*
 :lgr	quickfix.txt	/*:lgr*
 :lgrep	quickfix.txt	/*:lgrep*
@@ -5299,6 +5307,7 @@
 ft-syntax-omni	insert.txt	/*ft-syntax-omni*
 ft-tcsh-syntax	syntax.txt	/*ft-tcsh-syntax*
 ft-termcap-syntax	syntax.txt	/*ft-termcap-syntax*
+ft-tex-plugin	filetype.txt	/*ft-tex-plugin*
 ft-tex-syntax	syntax.txt	/*ft-tex-syntax*
 ft-tf-syntax	syntax.txt	/*ft-tf-syntax*
 ft-vb-syntax	syntax.txt	/*ft-vb-syntax*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index faaf2b2..22d0608 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 21
+*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 23
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,11 +30,8 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-HTML indenting can be slow, find out why.
-
-Adjust src/main.aap for installing manpages like in Makefile.
-    And for generating Vim.app for the Mac.
-    Install spell files with src/main.aap.
+Include patch for recognizing TeX flavor. (Benji Fisher)
+And new tex.vim and plaintex.vim.
 
 Win32: Describe how to do debugging. (George Reilly)
 
@@ -50,6 +47,12 @@
 Darren is including the patch in ctags.  Test it when it's ready.  Change
 "typename" to "typeref" in C complete code.
 
+HTML indenting can be slow.  Caused by using searchpair().  Can search() be
+used instead?
+
+ccomplete: use "signature:" field from tags file when it's present.
+Or list all the fields? (Martin Stubenschrott)
+
 Add more tests for all new functionality in Vim 7.  Especially new functions.
 
 Add text in user manual for using the undo tree.  Example with finding the
@@ -1129,7 +1132,7 @@
     means the compound flags of the word are not used.
     Instead of "SFX a 0 add/FLAGS ." we could use "SFX a 0 add . /FLAGS" (or
     support both).
--   Support breakpoint character · 0xb7 and ignore it?  Makes it possible to
+-   Support breakpoint character ? 0xb7 and ignore it?  Makes it possible to
     use same wordlist for hyphenation.
 -   Compound word is accepted if nr of words is <= COMPOUNDMAX OR nr of
     syllables <= COMPOUNDSYLMAX.  Specify using AND in the affix file?
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 3930541..e3e8655 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -756,6 +756,13 @@
 files.  Vim will search for all help in "doc" directories in 'runtimepath'.
 This is only available when compiled with the |+multi_lang| feature.
 
+At this moment translations are available for:
+	Chinese - multiple authors
+	French  - translated by David Blanchet
+	Italian - translated by Antonio Colombo
+	Russian - translated by Vassily Ragosin
+See the Vim website to find them: http://www.vim.org/translations.php
+
 A set of translated help files consists of these files:
 
 	help.abx
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 05ed7d2..777dff0 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 21
+*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 23
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -609,24 +609,27 @@
 
 |:viusage|		Help for Vi commands (Nvi command).
 
-|:cbuffer|		Read error lines from a buffer. (partly by Yegappan
-			Lakshmanan)
-
 |:sort|			Sort lines in the buffer without depending on an
 			external command.
 
 |:caddfile|		Add error messages to an existing quickfix list
 			(Yegappan Lakshmanan).
-
-|:cexpr|		Read error messages from a Vim expression (Yegappan
-			Lakshmanan).
-
-|:caddexpr|		Add error messages from a Vim expression to an
-			existing quickfix list. (Yegappan Lakshmanan).
+|:cbuffer|		Read error lines from a buffer. (partly by Yegappan
+			Lakshmanan)
+|:cgetbuffer|		Create a quickfix list from a buffer but don't jump to
+			the first error.
 |:caddbuffer|		Add errors from the current buffer to the quickfix
 			list.
+|:cexpr|		Read error messages from a Vim expression (Yegappan
+			Lakshmanan).
+|:caddexpr|		Add error messages from a Vim expression to an
+			existing quickfix list. (Yegappan Lakshmanan).
+|:cgetexpr|		Create a quickfix list from a Vim expression, but
+			don't jump to the first error. (Yegappan Lakshmanan).
 
 |:lfile|		Like |:cfile| but use the location list.
+|:lgetbuffer|		Like |:cgetbuffer| but use the location list.
+|:lgetexpr|		Like |:cgetexpr| but use the location list.
 |:lgetfile|		Like |:cgetfile| but use the location list.
 |:laddfile|		Like |:caddfile| but use the location list.
 |:lbuffer|		Like |:cbuffer| but use the location list.
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index f245eec..2ab0987 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Mar 21
+" Last Change:	2006 Mar 23
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -638,7 +638,7 @@
 " HTML (.shtml and .stm for server side)
 au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm  call s:FThtml()
 
-" Distinguish between HTML and XHTML
+" Distinguish between HTML, XHTML and Django
 fun! s:FThtml()
   let n = 1
   while n < 10 && n < line("$")
@@ -646,6 +646,10 @@
       setf xhtml
       return
     endif
+    if getline(n) =~ '{%\s*\(extends\|block\)\>'
+      setf htmldjango
+      return
+    endif
     let n = n + 1
   endwhile
   setf html
diff --git a/runtime/keymap/greek_cp737.vim b/runtime/keymap/greek_cp737.vim
new file mode 100644
index 0000000..e41114e
--- /dev/null
+++ b/runtime/keymap/greek_cp737.vim
@@ -0,0 +1,104 @@
+" Vim Keymap file for greek DOS cp737
+" Maintainer: Panagiotis Louridas <louridas@acm.org>
+" Last Updated: Thu Mar 23 14:05:45 EET 2006
+
+" This keyboard layout allows all Greek symbols to be typed,
+" including accented capitals and diaeresis. It does not
+" include diaeresis and accent on the same vowel, nor
+" the greek quotes, as these were not included in the codepage. 
+" It includes the Greek semicolon sign.
+
+"
+" accent			";" + letter
+" diaeresis			":" + letter
+" diaeresis + accent		";" + ":" (or ":" + ";") + letter
+" semicolon			"q"
+" colon				"Q"
+" greek semicolon		"W"
+" sigma at end of word		"w"
+
+" Use this short name in the status line.
+let b:keymap_name = "greek"
+
+loadkeymap
+" capital
+A	<char-128>	" €
+B	<char-129>	" 
+G	<char-130>	" ‚
+D	<char-131>	" ƒ
+E	<char-132>	" „
+Z	<char-133>	" …
+H	<char-134>	" †
+U	<char-135>	" ‡
+I	<char-136>	" ˆ
+K	<char-137>	" ‰
+L	<char-138>	" Š
+M	<char-139>	" ‹
+N	<char-140>	" Œ
+J	<char-141>	" 
+O	<char-142>	" Ž
+P	<char-143>	" 
+R	<char-144>	" 
+S	<char-145>	" ‘
+T	<char-146>	" ’
+Y	<char-147>	" “
+F	<char-148>	" ”
+X	<char-149>	" •
+C	<char-150>	" –
+V	<char-151>	" —
+
+" small
+a	<char-152>	" ˜
+b	<char-153>	" ™
+g	<char-154>	" š
+d	<char-155>	" ›
+e	<char-156>	" œ
+z	<char-157>	" 
+h	<char-158>	" ž
+u	<char-159>	" Ÿ
+i	<char-160>	"  
+k	<char-161>	" ¡
+l	<char-162>	" ¢
+m	<char-163>	" £
+n	<char-164>	" ¤
+j	<char-165>	" ¥
+o	<char-166>	" ¦
+p	<char-167>	" §
+r	<char-168>	" ¨
+s	<char-169>	" ©
+w	<char-170>	" ª
+t	<char-171>	" «
+y	<char-172>	" ¬
+f	<char-173>	" ­
+x	<char-174>	" ®
+c	<char-175>	" ¯
+v	<char-224>	" à
+
+" accented capital
+;A	<char-234>	" ê
+;E	<char-235>	" ë
+;H	<char-236>	" ì
+;I	<char-237>	" í
+;O	<char-238>	" î
+;Y	<char-239>	" ï
+;V	<char-240>	" ð
+"
+:I	<char-244>	" ô
+:Y	<char-245>	" õ
+
+" accented small
+;a	<char-225>	" á
+;e	<char-226>	" â
+;h	<char-227>	" ã
+;i	<char-229>	" å
+;o	<char-230>	" æ
+;y	<char-231>	" ç
+;v	<char-233>	" é
+"
+:i	<char-228>	" ä
+:y	<char-232>	" è
+"
+" symbols
+q	;		" ;
+Q	:		" :
+W	<char-250>	" ú
diff --git a/runtime/plugin/vimball.vim b/runtime/plugin/vimball.vim
deleted file mode 100644
index 89d2ee1..0000000
--- a/runtime/plugin/vimball.vim
+++ /dev/null
@@ -1,256 +0,0 @@
-" vimball : construct a file containing both paths and files
-" Author: Charles E. Campbell, Jr.
-" Date:   Mar 20, 2006
-" Version: 3
-" GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
-" Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
-"            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
-"            (see |copyright|) except use "Vimball" instead of "Vim".
-"            No warranty, express or implied.
-"  *** ***   Use At-Your-Own-Risk!   *** ***
-
-" ---------------------------------------------------------------------
-"  Load Once: {{{1
-if &cp || exists("g:loaded_vimball")
- finish
-endif
-
-let s:keepcpo        = &cpo
-let g:loaded_vimball = "v3"
-set cpo&vim
-
-" ------------------------------------------------------------------------------
-" Public Interface: {{{1
-com! -ra -na=+ -bang MkVimball call s:MkVimball(<line1>,<line2>,<bang>0,<f-args>)
-com! -na=0 UseVimball  call s:Vimball(1)
-com! -na=0 VimballList call s:Vimball(0)
-au BufReadPost *.vba echohl WarningMsg | echo "Source this file to extract it! (:so %)" | echohl None
-
-" =====================================================================
-"  Functions: {{{1
-
-" ---------------------------------------------------------------------
-" MkVimball: creates a vimball given a list of paths to files {{{2
-" Vimball Format:
-"     path
-"     filesize
-"     [file]
-"     path
-"     filesize
-"     [file]
-fun! s:MkVimball(line1,line2,writelevel,vimballname) range
-"  call Dfunc("MkVimball(line1=".a:line1." line2=".a:line2." writelevel=".a:writelevel." vimballname<".a:vimballname.">")
-  let vbname= substitute(a:vimballname,'\.[^.]*$','','e').'.vba'
-  if !a:writelevel && filereadable(vbname)
-   echohl Error | echoerr "(MkVimball) file<".vbname."> exists; use ! to insist" | echohl None
-"   call Dret("MkVimball : file<".vbname."> already exists; use ! to insist")
-   return
-  endif
-
-  " user option bypass
-  let eikeep= &ei
-  set ei=all
-
-  let home   = substitute(&rtp,',.*$','','')
-  let curdir = getcwd()
-  exe "cd ".home
-
-  " record current tab, initialize while loop index
-  let curtabnr = tabpagenr()
-  let linenr   = a:line1
-"  call Decho("curtabnr=".curtabnr)
-
-  while linenr <= a:line2
-   let svfile  = getline(linenr)
-"   call Decho("svfile<".svfile.">")
- 
-   if !filereadable(svfile)
-    echohl Error | echo "unable to read file<".svfile.">" | echohl None
-    let &ei= eikeep
-    exe "cd ".curdir
-"    call Dret("MkVimball")
-    return
-   endif
- 
-   " create/switch to mkvimball tab
-   if !exists("vbtabnr")
-    tabnew
-    silent! file Vimball
-    let vbtabnr= tabpagenr()
-   else
-    exe "tabn ".vbtabnr
-   endif
- 
-   let lastline= line("$") + 1
-   if lastline == 2 && getline("$") == ""
-	call setline(1,'" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.')
-	call setline(2,'UseVimball')
-	call setline(3,'finish')
-	let lastline= 4
-   endif
-   call setline(lastline  ,svfile)
-   call setline(lastline+1,0)
-   exe "$r ".svfile
-   call setline(lastline+1,line("$") - lastline - 1)
-"   call Decho("lastline=".lastline." line$=".line("$"))
-
-  " restore to normal tab
-   exe "tabn ".curtabnr
-   let linenr= linenr + 1
-  endwhile
-
-  " write the vimball
-  exe "tabn ".vbtabnr
-  exe "cd ".curdir
-  if a:really
-   if a:writelevel
-    exe "w! ".vbname
-   else
-    exe "w ".vbname
-   endif
-  endif
-"  call Decho("Vimball<".vbname."> created")
-  echo "Vimball<".vbname."> created"
-
-  " remove the evidence
-  setlocal nomod bh=wipe
-  exe "tabn ".curtabnr
-  exe "tabc ".vbtabnr
-
-  " restore options
-  let &ei= eikeep
-
-"  call Dret("MkVimball")
-endfun
-
-" ---------------------------------------------------------------------
-" Vimball: {{{2
-fun! s:Vimball(really)
-"  call Dfunc("Vimball(really=".a:really.")")
-
-  if getline(1) !~ '^" Vimball Archiver by Charles E. Campbell, Jr., Ph.D.$'
-   echoerr "(Vimball) The current file does not appear to be a Vimball!"
-"   call Dret("Vimball")
-   return
-  endif
-
-  " initialize
-  let regakeep = @a
-  let eikeep   = &ei
-  let vekeep   = &ve
-  let makeep   = getpos("'a")
-  let curtabnr = tabpagenr()
-  set ei=all ve=all
-
-  " set up vimball tab
-  tabnew
-  silent! file Vimball
-  let vbtabnr= tabpagenr()
-  let didhelp= ""
-
-  " go to vim plugin home
-  let home   = substitute(&rtp,',.*$','','')
-  let curdir = getcwd()
-"  call Decho("exe cd ".home)
-  exe "cd ".home
-  let linenr  = 4
-  let filecnt = 0
-
-  " give title to listing of (extracted) files from Vimball Archive
-  if a:really
-   echohl Title | echomsg "Vimball Archive" | echohl None
-  else
-   echohl Title | echomsg "Vimball Archive Listing" | echohl None
-  endif
-
-  " apportion vimball contents to various files
-"  call Decho("exe tabn ".curtabnr)
-  exe "tabn ".curtabnr
-"  call Decho("linenr=".linenr." line$=".line("$"))
-  while 1 < linenr && linenr < line("$")
-   let fname   = getline(linenr)
-   let fsize   = getline(linenr+1)
-   let filecnt = filecnt + 1
-   if a:really
-    echomsg "extracted <".fname.">: ".fsize." lines"
-   else
-    echomsg "would extract <".fname.">: ".fsize." lines"
-   endif
-"   call Decho(linenr.": will extract file<".fname.">")
-"   call Decho((linenr+1).": fsize=".fsize)
-
-   " make directories if they don't exist yet
-   let fnamebuf= fname
-   while fnamebuf =~ '/'
-   	let dirname  = substitute(fnamebuf,'/.*$','','e')
-   	let fnamebuf = substitute(fnamebuf,'^.\{-}/\(.*\)$','\1','e')
-	if !isdirectory(dirname)
-"	 call Decho("making <".dirname.">")
-	 call mkdir(dirname)
-	endif
-	exe "cd ".dirname
-   endwhile
-   exe "cd ".home
-
-   " grab specified qty of lines and place into "a" buffer
-   exe linenr
-   norm! jjma
-   exe (linenr + fsize + 1)
-   silent norm! "ay'a
-"   call Decho("yanked ".fsize." lines into register-a")
-
-"   call Decho("didhelp<".didhelp."> fname<".fname.">")
-   if didhelp == "" && fname =~ 'doc/[^/]\+\.txt$'
-   	let didhelp= substitute(fname,'^\(.*\<doc\)[/\\][^.]*\.txt$','\1','e')
-"	call Decho("didhelp<".didhelp.">")
-   endif
-
-   " copy "a" buffer into tab
-"   call Decho('copy "a buffer into tab#'.vbtabnr)
-   exe "tabn ".vbtabnr
-   silent! %d
-   silent norm! "aPGdd1G
-"   call Decho("rega<".@a.">")
-
-   " write tab to file
-"   call Decho("exe w! ".fname)
-   exe "silent w! ".fname
-
-"   call Decho("exe tabn ".curtabnr)
-   exe "tabn ".curtabnr
-"   let oldlinenr = linenr " Decho
-   let linenr    = linenr + fsize + 2
-"   call Decho("update linenr= [linenr=".oldlinenr."] + [fsize=".fsize."] + 2 = ".linenr)
-  endwhile
-
-  " set up help
-"  call Decho("about to set up help: didhelp<".didhelp.">")
-  if didhelp != ""
-"   call Decho("exe helptags ".home."/".didhelp)
-   exe "helptags ".home."/".didhelp
-   echomsg "did helptags"
-  endif
-
-  " make sure a "Press ENTER..." prompt appears to keep the messages showing!
-  while filecnt < &ch
-   echomsg " "
-   let filecnt= filecnt + 1
-  endwhile
-
-  " restore events, delete tab and buffer
-  exe "tabn ".vbtabnr
-  setlocal nomod bh=wipe
-  exe "tabn ".curtabnr
-  exe "tabc ".vbtabnr
-  let &ei= eikeep
-  let @a = regakeep
-  if makeep[0] != 0
-   " restore mark a
-"   call Decho("restore mark-a: makeep=".string(makeep))
-   call setpos("'a",makeep)
-   ka
-  endif
-  exe "cd ".curdir
-
-"  call Dret("Vimball")
-endfun
diff --git a/runtime/syntax/django.vim b/runtime/syntax/django.vim
new file mode 100644
index 0000000..fc48d26
--- /dev/null
+++ b/runtime/syntax/django.vim
@@ -0,0 +1,72 @@
+" Vim syntax file
+" Language:	Django template
+" Maintainer:	Dave Hodder <dmh@dmh.org.uk>
+" Last Change:	2006 Mar 23
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+syntax case match
+
+" Django template built-in tags and parameters
+" 'comment' doesn't appear here because it gets special treatment
+syn keyword djangoStatement contained as block endblock by cycle debug else
+syn keyword djangoStatement contained extends filter endfilter firstof for
+syn keyword djangoStatement contained endfor if endif ifchanged endifchanged
+syn keyword djangoStatement contained ifequal endifequal ifnotequal
+syn keyword djangoStatement contained endifnotequal in include load not now or
+syn keyword djangoStatement contained parsed regroup reversed spaceless
+syn keyword djangoStatement contained endspaceless ssi templatetag openblock
+syn keyword djangoStatement contained closeblock openvariable closevariable
+syn keyword djangoStatement contained widthratio with
+
+" Django templete built-in filters
+syn keyword djangoFilter contained add addslashes capfirst center cut date
+syn keyword djangoFilter contained default default_if_none dictsort
+syn keyword djangoFilter contained dictsortreversed divisibleby escape
+syn keyword djangoFilter contained filesizeformat first fix_ampersands
+syn keyword djangoFilter contained floatformat get_digit join length length_is
+syn keyword djangoFilter contained linebreaks linebreaksbr linenumbers ljust
+syn keyword djangoFilter contained lower make_list phone2numeric pluralize
+syn keyword djangoFilter contained pprint random removetags rjust slice slugify
+syn keyword djangoFilter contained stringformat striptags time timesince title
+syn keyword djangoFilter contained truncatewords unordered_list upper urlencode
+syn keyword djangoFilter contained urlize urlizetrunc wordcount wordwrap yesno
+
+" Django template constants (always surrounded by double quotes)
+syn region djangoArgument contained start=/"/ skip=/\\"/ end=/"/
+
+" Django template tag and variable blocks
+syn region djangoTagBlock start="{%" end="%}" contains=djangoStatement,djangoFilter,djangoArgument display
+syn region djangoVarBlock start="{{" end="}}" contains=djangoFilter,djangoArgument display
+
+" Django template 'comment' tag
+syn region djangoComment start="{%\s*comment\s*%}" end="{%\s*endcomment\s*%}"
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_django_syn_inits")
+  if version < 508
+    let did_django_syn_inits = 1
+    command -nargs=+ HiLink hi link <args>
+  else
+    command -nargs=+ HiLink hi def link <args>
+  endif
+
+  HiLink djangoTagBlock PreProc
+  HiLink djangoVarBlock PreProc
+  HiLink djangoStatement Statement
+  HiLink djangoFilter Identifier
+  HiLink djangoArgument Constant
+  HiLink djangoComment Comment
+
+  delcommand HiLink
+endif
+
+let b:current_syntax = "django"
diff --git a/runtime/syntax/htmldjango.vim b/runtime/syntax/htmldjango.vim
new file mode 100644
index 0000000..a3c65fd
--- /dev/null
+++ b/runtime/syntax/htmldjango.vim
@@ -0,0 +1,30 @@
+" Vim syntax file
+" Language:	Django HTML template
+" Maintainer:	Dave Hodder <dmh@dmh.org.uk>
+" Last Change:	2006 Mar 06
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+  syntax clear
+elseif exists("b:current_syntax")
+  finish
+endif
+
+if !exists("main_syntax")
+  let main_syntax = 'html'
+endif
+
+if version < 600
+  so <sfile>:p:h/django.vim
+  so <sfile>:p:h/html.vim
+else
+  runtime! syntax/django.vim
+  runtime! syntax/html.vim
+  unlet b:current_syntax
+endif
+
+syntax cluster htmlPreproc add=djangoPlaceHolder
+syntax cluster htmlString add=djangoPlaceHolder
+
+let b:current_syntax = "htmldjango"