diff options
Diffstat (limited to 'runtime/ftplugin/tex.vim')
-rw-r--r-- | runtime/ftplugin/tex.vim | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/runtime/ftplugin/tex.vim b/runtime/ftplugin/tex.vim new file mode 100644 index 000000000..1871e8fd5 --- /dev/null +++ b/runtime/ftplugin/tex.vim @@ -0,0 +1,112 @@ +" 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 +" URL: http://www.vim.org/script.php?script_id=411 + +" 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 + +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' + \ . '\|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 +" 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 . +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: |