" LaTeX filetype plugin " Language: LaTeX (ft=tex) " Maintainer: Benji Fisher, Ph.D. " 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!\" 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 "%&". " 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:\\\@