[ADD] add man.conf, view with most.
[arrow.git] / conf_slk120 / vim / _vim / plugin / vikiLatex.vim
blobc6f75df5f1ff3cb305d6c0384460ec111909c20c
1 " vikiLatex.vim -- viki add-on for LaTeX
2 " @Author:      Thomas Link (samul AT web.de)
3 " @License:     GPL (see http://www.gnu.org/licenses/gpl.txt)
4 " @Created:     28-Jän-2004.
5 " @Last Change: 04-Mrz-2006.
6 " @Revision:    0.164
8 if &cp || exists("s:loaded_vikiLatex")
9     finish
10 endif
11 let s:loaded_vikiLatex = 1
13 fun! VikiSetupBufferLaTeX(state, ...)
14     let noMatch = ""
15     let b:vikiNameSuffix = '.tex'
16     call VikiSetupBuffer(a:state, "sSic")
17     let b:vikiAnchorRx   = '\\label{%{ANCHOR}}'
18     let b:vikiNameTypes  = substitute(b:vikiNameTypes, '\C[Sicx]', "", "g")
19     let b:vikiLaTeXCommands = 'viki\|include\|input\|usepackage\|psfig\|includegraphics\|bibliography\|ref'
20     if exists("g:vikiLaTeXUserCommands")
21         let b:vikiLaTeXCommands = b:vikiLaTeXCommands .'\|'. g:vikiLaTeXUserCommands
22     endif
23     if b:vikiNameTypes =~# "s"
24         let b:vikiSimpleNameRx         = '\(\\\('. b:vikiLaTeXCommands .'\)\(\[\(.\{-}\)\]\)\?{\(.\{-}\)}\)'
25         let b:vikiSimpleNameSimpleRx   = '\\\('. b:vikiLaTeXCommands .'\)\(\[.\{-}\]\)\?{.\{-}}'
26         let b:vikiSimpleNameNameIdx    = 2
27         let b:vikiSimpleNameDestIdx    = 5
28         let b:vikiSimpleNameAnchorIdx  = 4
29         let b:vikiSimpleNameCompound = 'let erx="'. escape(b:vikiSimpleNameRx, '\"')
30                     \ .'" | let nameIdx='. b:vikiSimpleNameNameIdx
31                     \ .' | let destIdx='. b:vikiSimpleNameDestIdx
32                     \ .' | let anchorIdx='. b:vikiSimpleNameAnchorIdx
33     else
34         let b:vikiSimpleNameRx        = noMatch
35         let b:vikiSimpleNameSimpleRx  = noMatch
36         let b:vikiSimpleNameNameIdx   = 0
37         let b:vikiSimpleNameDestIdx   = 0
38         let b:vikiSimpleNameAnchorIdx = 0
39     endif
40 endf
42 fun! VikiLatexCheckFilename(filename, ...)
43     if a:filename != ""
44         """ search in the current directory
45         let i = 1
46         while i <= a:0
47             exe "let fn = '".a:filename."'.a:". i
48             if filereadable(fn)
49                 return fn
50             endif
51             let i = i + 1
52         endwh
54         """ use kpsewhich
55         let i = 1
56         while i <= a:0
57             exe "let fn = '".a:filename."'.a:". i
58             exe "let rv = system('kpsewhich ". fn ."')"
59             if rv != ""
60                 return substitute(rv, "\n", "", "g")
61             endif
62             let i = i + 1
63         endwh
64     endif
65     return ""
66 endfun
69 fun! VikiCompleteSimpleNameDefLaTeX(def)
70     let cmd = MvElementAt(a:def, g:vikiDefSep, 0)
71     if cmd == g:vikiDefNil
72         throw "Viki: Malformed command (no name): ".a:def
73     endif
74     let dest = MvElementAt(a:def, g:vikiDefSep, 1)
75     let opts = MvElementAt(a:def, g:vikiDefSep, 2)
76     let part = MvElementAt(a:def, g:vikiDefSep, 3)
77     let anchor    = g:vikiDefNil
78     let useSuffix = g:vikiDefSep
80     if cmd == "input"
81         let dest = VikiLatexCheckFilename(dest, "", ".tex", ".sty")
82     elseif cmd == "usepackage"
83         let dest = VikiLatexCheckFilename(dest, ".sty")
84     elseif cmd == "include"
85         let dest = VikiLatexCheckFilename(dest, ".tex")
86     elseif cmd == "viki"
87         let dest = VikiLatexCheckFilename(dest, ".tex")
88         let anchor = opts
89     elseif cmd == "psfig"
90         let f == matchstr(dest, "figure=\zs.\{-}\ze[,}]")
91         let dest = VikiLatexCheckFilename(dest, "")
92     elseif cmd == "includegraphics"
93         let dest = VikiLatexCheckFilename(dest, "", 
94                     \ ".eps", ".ps", ".pdf", ".png", ".jpeg", ".jpg", ".gif", ".wmf")
95     elseif cmd == "bibliography"
96         let n = VikiSelect(dest, ",", "Select Bibliography")
97         if n >= 0
98             let f    = MvElementAt(dest, ",", n)
99             let dest = VikiLatexCheckFilename(f, ".bib")
100         else
101             let dest = ""
102         endif
103     elseif cmd == "ref"
104         let anchor = dest
105         let dest   = g:vikiSelfRef
106     elseif exists("*VikiLaTeX_".cmd)
107         exe VikiLaTeX_{cmd}(dest, opts)
108     else
109         throw "Viki LaTeX: unsupported command: ". cmd
110     endif
111     
112     if dest == ""
113         throw "Viki LaTeX: can't find: ". cmd ." ". a:def
114     else
115         return VikiMakeDef(cmd, dest, anchor, part, 'simple')
116     endif
117 endfun
119 fun! VikiMinorModeLaTeX(state)
120     let b:vikiFamily = "LaTeX"
121     call VikiMinorMode(a:state)
122 endf
124 command! VikiMinorModeLaTeX call VikiMinorModeLaTeX(1)
125 " au FileType tex let b:vikiFamily="LaTeX"
127 " vim: ff=unix