diff --git a/runtime/ftplugin/tex.vim b/runtime/ftplugin/tex.vim
index 1871e8f..b392fa2 100644
--- a/runtime/ftplugin/tex.vim
+++ b/runtime/ftplugin/tex.vim
@@ -1,110 +1,41 @@
 " LaTeX filetype plugin
 " Language:     LaTeX (ft=tex)
 " Maintainer:   Benji Fisher, Ph.D. <benji@member.AMS.org>
-" Version:	1.2
-" Last Change:	Tue 11 May 2004 04:49:20 PM EDT
+" Version:	1.3
+" Last Change:	Wed 22 Mar 2006 09:36:32 AM EST
 "  URL:		http://www.vim.org/script.php?script_id=411
 
-" Only do this when not done yet for this buffer
+" 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
+" Start with plain TeX.  This will also define b:did_ftplugin .
+source $VIMRUNTIME/ftplugin/plaintex.vim
 
+" Avoid problems if running in 'compatible' mode.
 let s:save_cpo = &cpo
 set cpo&vim
 
-" This may be used to set b:tex_flavor.  A more complete version can be found
-" in foo.vim (see http://www.vim.org/script.php?script_id=72).
-if !exists("*s:GetModelines")
-  fun! s:GetModelines(pat, ...)
-    " Long but simple:  set start line and finish line.
-    let EOF = line("$")
-    if a:0 > 1
-      let start = a:1 | let finish = a:2
-    elseif a:0 == 1
-      if a:1 > 0
-	let finish = a:1
-      else
-	let start = EOF + a:1 + 1
-      endif
-    endif
-    if !exists("start") || start < 1
-      let start = 1
-    endif
-    if !exists("finish") || finish > EOF
-      let finish = EOF
-    endif
-    let n = 0
-    silent! execute start .",". finish
-	  \ 'g/' . escape(a:pat, "/") . "/let n=line('.')"
-    if n
-      execute "normal!\<C-O>"
-    endif
-    return n . ":"
-  endfun
-endif " !exists("*GetModelines")
-
-" Define the buffer-local variable b:tex_flavor to "tex" (for plain) or
-" "latex".
-" 1. Check the first line of the file for "%&<format>".
-" 2. Check the first 1000 lines for "\begin{document}".
-" 3. Check for a global variable g:tex_flavor, can be set in user's vimrc.
-" 4. Default to "latex".
-" 5. Strip "pdf" and change "plain" to "tex".
-if getline(1) =~ '^%&\s*\k\+'
-	let b:tex_flavor = matchstr(getline(1), '%&\s*\zs\k\+')
-elseif s:GetModelines('\\begin\s*{\s*document\s*}', 1000) != "0:"
-	let b:tex_flavor = "latex"
-elseif exists("g:tex_flavor")
-	let b:tex_flavor = g:tex_flavor
-else
-	let b:tex_flavor = "latex"
-endif
-let b:tex_flavor = substitute(b:tex_flavor, 'pdf', '', '')
-if b:tex_flavor == "plain"
-	let b:tex_flavor = "tex"
-endif
-
-" Set 'comments' to format dashed lists in comments
-setlocal com=sO:%\ -,mO:%\ \ ,eO:%%,:%
-
-" Set 'commentstring' to recognize the % comment character:
-" (Thanks to Ajit Thakkar.)
-setlocal cms=%%s
-
 " Allow "[d" to be used to find a macro definition:
 " Recognize plain TeX \def as well as LaTeX \newcommand and \renewcommand .
 " I may as well add the AMS-LaTeX DeclareMathOperator as well.
-let &l:define='\\\([egx]\|char\|mathchar\|count\|dimen\|muskip\|skip\|toks\)\='
-	\ .	'def\|\\font\|\\\(future\)\=let'
-	\ . '\|\\new\(count\|dimen\|skip\|muskip\|box\|toks\|read\|write'
-	\ .	'\|fam\|insert\)'
-	\ . '\|\\\(re\)\=new\(boolean\|command\|counter\|environment\|font'
+let &l:define .= '\|\\\(re\)\=new\(boolean\|command\|counter\|environment\|font'
 	\ . '\|if\|length\|savebox\|theorem\(style\)\=\)\s*\*\=\s*{\='
 	\ . '\|DeclareMathOperator\s*{\=\s*'
 
 " Tell Vim how to recognize LaTeX \include{foo} and plain \input bar :
-setlocal include=\\\\input\\\\|\\\\include{
-setlocal suffixesadd=.tex
+let &l:include .= '\|\\include{'
 " On some file systems, "{" and "}" are inluded in 'isfname'.  In case the
 " TeX file has \include{fname} (LaTeX only), strip everything except "fname".
 let &l:includeexpr = "substitute(v:fname, '^.\\{-}{\\|}.*', '', 'g')"
-" fun! TexIncludeExpr()
-"   let fname = substitute(v:fname, '}.*', '', '')
-"   return fname
-" endfun
 
 " The following lines enable the macros/matchit.vim plugin for
 " extended matching with the % key.
-" TODO:  Customize this based on b:tex_flavor .
+" ftplugin/plaintex.vim already defines b:match_skip and b:match_ignorecase
+" and matches \(, \), \[, and \].
 if exists("loaded_matchit")
-  let b:match_ignorecase = 0
-    \ | let b:match_skip = 'r:\\\@<!\%(\\\\\)*%'
-    \ | let b:match_words = '(:),\[:],{:},\\(:\\),\\\[:\\],' .
-    \ '\\begin\s*\({\a\+\*\=}\):\\end\s*\1'
+  let b:match_words .= '\\begin\s*\({\a\+\*\=}\):\\end\s*\1'
 endif " exists("loaded_matchit")
 
 let &cpo = s:save_cpo
