forked from aniani/vim
		
	
		
			
	
	
		
			113 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			113 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " 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: |