diff --git a/runtime/ftplugin/plaintex.vim b/runtime/ftplugin/plaintex.vim
new file mode 100644
index 0000000..1660a3a
--- /dev/null
+++ b/runtime/ftplugin/plaintex.vim
@@ -0,0 +1,48 @@
+" plain TeX filetype plugin
+" Language:     plain TeX (ft=plaintex)
+" Maintainer:   Benji Fisher, Ph.D. <benji@member.AMS.org>
+" Version:	1.0
+" Last Change:	Wed 22 Mar 2006 09:36:32 AM EST
+
+" 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
+
+" Avoid problems if running in 'compatible' mode.
+let s:save_cpo = &cpo
+set cpo&vim
+
+" 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:
+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\)'
+
+" Tell Vim to recognize \input bar :
+let &l:include = '\\input'
+setlocal suffixesadd=.tex
+
+" The following lines enable the macros/matchit.vim plugin for
+" extended matching with the % key.
+" There is no default meaning for \(...\) etc., but many users define one.
+if exists("loaded_matchit")
+  let b:match_ignorecase = 0
+    \ | let b:match_skip = 'r:\\\@<!\%(\\\\\)*%'
+    \ | let b:match_words = '(:),\[:],{:},\\(:\\),\\\[:\\],' .
+    \ '\\begin\s*\({\a\+\*\=}\):\\end\s*\1'
+endif " exists("loaded_matchit")
+
+let &cpo = s:save_cpo
+
+" vim:sts=2:sw=2:
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
