summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2013-09-17 01:43:28 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2013-09-17 01:43:28 +0200
commitba1305772d6dc5939fd7fbad57108aa71ee2d158 (patch)
tree17fbd0d7dcd8f3f7847a953cb5d7eed98bd4cd65
parentff3cc42bf3ef067324364b5a40f2e457d202588c (diff)
downloadvim-polyglot-ba1305772d6dc5939fd7fbad57108aa71ee2d158.tar.gz
vim-polyglot-ba1305772d6dc5939fd7fbad57108aa71ee2d158.zip
fix: Switch latex to LaTeX-Box-Team/LaTeX-Box, fixes #6
-rw-r--r--README.md2
-rw-r--r--after/syntax/tex.vim2
-rwxr-xr-xbuild2
-rw-r--r--compiler/tex.vim298
-rw-r--r--ftplugin/bib_latexSuite.vim15
-rw-r--r--ftplugin/latex-box/common.vim351
-rw-r--r--ftplugin/latex-box/complete.vim805
-rw-r--r--ftplugin/latex-box/findmain.vim64
-rw-r--r--ftplugin/latex-box/folding.vim317
-rw-r--r--ftplugin/latex-box/latexmk.vim442
-rw-r--r--ftplugin/latex-box/mappings.vim96
-rw-r--r--ftplugin/latex-box/motion.vim518
-rw-r--r--ftplugin/latex-suite/bibtex.vim265
-rw-r--r--ftplugin/latex-suite/brackets.vim144
-rw-r--r--ftplugin/latex-suite/compiler.vim874
-rw-r--r--ftplugin/latex-suite/custommacros.vim255
-rw-r--r--ftplugin/latex-suite/diacritics.vim124
-rw-r--r--ftplugin/latex-suite/elementmacros.vim330
-rw-r--r--ftplugin/latex-suite/envmacros.vim1166
-rw-r--r--ftplugin/latex-suite/folding.vim400
-rw-r--r--ftplugin/latex-suite/main.vim1042
-rw-r--r--ftplugin/latex-suite/mathmacros-utf.vim729
-rw-r--r--ftplugin/latex-suite/mathmacros.vim730
-rw-r--r--ftplugin/latex-suite/multicompile.vim16
-rw-r--r--ftplugin/latex-suite/packages.vim676
-rw-r--r--ftplugin/latex-suite/projecttemplate.vim11
-rw-r--r--ftplugin/latex-suite/smartspace.vim102
-rw-r--r--ftplugin/latex-suite/templates.vim148
-rw-r--r--ftplugin/latex-suite/texmenuconf.vim130
-rw-r--r--ftplugin/latex-suite/texproject.vim54
-rw-r--r--ftplugin/latex-suite/texviewer.vim1070
-rw-r--r--ftplugin/latex-suite/version.vim30
-rw-r--r--ftplugin/latex-suite/wizardfuncs.vim376
-rw-r--r--ftplugin/latextoc.vim166
-rw-r--r--ftplugin/tex_LatexBox.vim33
-rw-r--r--ftplugin/tex_latexSuite.vim13
-rw-r--r--indent/tex.vim304
-rw-r--r--syntax/latextoc.vim9
38 files changed, 2871 insertions, 9238 deletions
diff --git a/README.md b/README.md
index 95e58820..05993f05 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo
- [javascript](https://github.com/pangloss/vim-javascript) (syntax, indent, ftdetect)
- [json](https://github.com/leshill/vim-json) (syntax, ftdetect)
- [jst](https://github.com/briancollins/vim-jst) (syntax, indent, ftdetect)
-- [latex](https://github.com/jcf/vim-latex) (indent, compiler, ftplugin)
+- [latex](https://github.com/LaTeX-Box-Team/LaTeX-Box) (syntax, indent, ftplugin)
- [less](https://github.com/groenewege/vim-less) (syntax, indent, ftplugin, ftdetect)
- [markdown](https://github.com/tpope/vim-markdown) (syntax, ftplugin, ftdetect)
- [nginx](https://github.com/mutewinter/nginx.vim) (syntax, ftdetect)
diff --git a/after/syntax/tex.vim b/after/syntax/tex.vim
new file mode 100644
index 00000000..32af7253
--- /dev/null
+++ b/after/syntax/tex.vim
@@ -0,0 +1,2 @@
+" adds support for cleverref package (`\cref` and `\Cref`)
+syn region texRefZone matchgroup=texStatement start="\\\(c\|C\)ref{" end="}\|%stopzone\>" contains=@texRefGroup
diff --git a/build b/build
index 1d5e8629..d9f871ab 100755
--- a/build
+++ b/build
@@ -75,7 +75,7 @@ PACKS="
javascript:pangloss/vim-javascript
json:leshill/vim-json
jst:briancollins/vim-jst
- latex:jcf/vim-latex
+ latex:LaTeX-Box-Team/LaTeX-Box
less:groenewege/vim-less
markdown:tpope/vim-markdown
nginx:mutewinter/nginx.vim
diff --git a/compiler/tex.vim b/compiler/tex.vim
deleted file mode 100644
index d9543add..00000000
--- a/compiler/tex.vim
+++ /dev/null
@@ -1,298 +0,0 @@
-" File: tex.vim
-" Type: compiler plugin for LaTeX
-" Original Author: Artem Chuprina <ran@ran.pp.ru>
-" Customization: Srinath Avadhanula <srinath@fastmail.fm>
-" Description: {{{
-" This file sets the 'makeprg' and 'errorformat' options for the LaTeX
-" compiler. It is customizable to optionally ignore certain warnings and
-" provides the ability to set a dynamic 'ignore-warning' level.
-"
-" By default it is set up in a 'non-verbose', 'ignore-common-warnings' mode,
-" which means that irrelevant lines from the compilers output will be
-" ignored and also some very common warnings are ignored.
-"
-" Depending on the 'ignore-level', the following kinds of messages are
-" ignored. An ignore level of 3 for instance means that messages 1-3 will be
-" ignored. By default, the ignore level is set to 4.
-"
-" 1. LaTeX Warning: Specifier 'h' changed to 't'.
-" This errors occurs when TeX is not able to correctly place a floating
-" object at a specified location, because of which it defaulted to the
-" top of the page.
-" 2. LaTeX Warning: Underfull box ...
-" 3. LaTeX Warning: Overfull box ...
-" both these warnings (very common) are due to \hbox settings not being
-" satisfied nicely.
-" 4. LaTeX Warning: You have requested ...,
-" This warning occurs in slitex when using the xypic package.
-" 5. Missing number error:
-" Usually, when the name of an included eps file is spelled incorrectly,
-" then the \bb-error message is accompanied by a bunch of "missing
-" number, treated as zero" error messages. This level ignores these
-" warnings.
-" NOTE: number 5 is actually a latex error, not a warning!
-"
-" Use
-" TCLevel <level>
-" where level is a number to set the ignore level dynamically.
-"
-" When TCLevel is called with the unquoted string strict
-" TClevel strict
-" then the 'efm' switches to a 'verbose', 'no-lines-ignored' mode which is
-" useful when you want to make final checks of your document and want to be
-" careful not to let things slip by.
-"
-" TIP: MikTeX has a bug where it sometimes erroneously splits a line number
-" into multiple lines. i.e, if the warning is on line 1234. the compiler
-" output is:
-" LaTeX Warning: ... on input line 123
-" 4.
-" In this case, vim will wrongly interpret the line-number as 123 instead
-" of 1234. If you have cygwin, a simple remedy around this is to first
-" copy the file vimlatex (provided) into your $PATH, make sure its
-" executable and then set the variable g:tex_flavor to vimlatex in your
-" ~/.vimrc (i.e putting let "g:tex_flavor = 'vimlatex'" in your .vimrc).
-" This problem occurs rarely enough that its not a botheration for most
-" people.
-"
-" TODO:
-" 1. menu items for dynamically selecting a ignore warning level.
-" }}}
-
-" avoid reinclusion for the same buffer. keep it buffer local so it can be
-" externally reset in case of emergency re-sourcing.
-if exists('b:doneTexCompiler') && !exists('b:forceRedoTexCompiler')
- finish
-endif
-let b:doneTexCompiler = 1
-
-" ==============================================================================
-" Customization of 'efm': {{{
-" This section contains the customization variables which the user can set.
-" g:Tex_IgnoredWarnings: This variable contains a ยก seperated list of
-" patterns which will be ignored in the TeX compiler's output. Use this
-" carefully, otherwise you might end up losing valuable information.
-if !exists('g:Tex_IgnoredWarnings')
- let g:Tex_IgnoredWarnings =
- \'Underfull'."\n".
- \'Overfull'."\n".
- \'specifier changed to'."\n".
- \'You have requested'."\n".
- \'Missing number, treated as zero.'."\n".
- \'There were undefined references'."\n".
- \'Citation %.%# undefined'
-endif
-" This is the number of warnings in the g:Tex_IgnoredWarnings string which
-" will be ignored.
-if !exists('g:Tex_IgnoreLevel')
- let g:Tex_IgnoreLevel = 7
-endif
-" There will be lots of stuff in a typical compiler output which will
-" completely fall through the 'efm' parsing. This options sets whether or not
-" you will be shown those lines.
-if !exists('g:Tex_IgnoreUnmatched')
- let g:Tex_IgnoreUnmatched = 1
-endif
-" With all this customization, there is a slight risk that you might be
-" ignoring valid warnings or errors. Therefore before getting the final copy
-" of your work, you might want to reset the 'efm' with this variable set to 1.
-" With that value, all the lines from the compiler are shown irrespective of
-" whether they match the error or warning patterns.
-" NOTE: An easier way of resetting the 'efm' to show everything is to do
-" TCLevel strict
-if !exists('g:Tex_ShowallLines')
- let g:Tex_ShowallLines = 0
-endif
-
-" }}}
-" ==============================================================================
-" Customization of 'makeprg': {{{
-
-" There are several alternate ways in which 'makeprg' is set up.
-"
-" Case 1
-" ------
-" The first is when this file is a part of latex-suite. In this case, a
-" variable called g:Tex_DefaultTargetFormat exists, which gives the default
-" format .tex files should be compiled into. In this case, we use the TTarget
-" command provided by latex-suite.
-"
-" Case 2
-" ------
-" The user is using this file without latex-suite AND he wants to directly
-" specify the complete 'makeprg'. Then he should set the g:Tex_CompileRule_dvi
-" variable. This is a string which should be directly be able to be cast into
-" &makeprg. An example of one such string is:
-"
-" g:Tex_CompileRule_dvi = 'pdflatex \\nonstopmode \\input\{$*\}'
-"
-" NOTE: You will need to escape back-slashes, {'s etc yourself if you are
-" using this file independently of latex-suite.
-" TODO: Should we also have a check for backslash escaping here based on
-" platform?
-"
-" Case 3
-" ------
-" The use is using this file without latex-suite and he doesnt want any
-" customization. In this case, this file makes some intelligent guesses based
-" on the platform. If he doesn't want to specify the complete 'makeprg' but
-" only the name of the compiler program (for example 'pdflatex' or 'latex'),
-" then he sets b:tex_flavor or g:tex_flavor.
-
-if exists('g:Tex_DefaultTargetFormat')
- exec 'TTarget '.g:Tex_DefaultTargetFormat
-elseif exists('g:Tex_CompileRule_dvi')
- let &l:makeprg = g:Tex_CompileRule_dvi
-else
- " If buffer-local variable 'tex_flavor' exists, it defines TeX flavor,
- " otherwize the same for global variable with same name, else it will be LaTeX
- if exists("b:tex_flavor")
- let current_compiler = b:tex_flavor
- elseif exists("g:tex_flavor")
- let current_compiler = g:tex_flavor
- else
- let current_compiler = "latex"
- end
- if has('win32')
- let escChars = ''
- else
- let escChars = '{}\'
- endif
- " Furthermore, if 'win32' is detected, then we want to set the arguments up so
- " that miktex can handle it.
- if has('win32')
- let options = '--src-specials'
- else
- let options = ''
- endif
- let &l:makeprg = current_compiler . ' ' . options .
- \ escape(' \nonstopmode \input{$*}', escChars)
-endif
-
-" }}}
-" ==============================================================================
-" Functions for setting up a customized 'efm' {{{
-
-" IgnoreWarnings: parses g:Tex_IgnoredWarnings for message customization {{{
-" Description:
-function! <SID>IgnoreWarnings()
- let i = 1
- while s:Strntok(g:Tex_IgnoredWarnings, "\n", i) != '' &&
- \ i <= g:Tex_IgnoreLevel
- let warningPat = s:Strntok(g:Tex_IgnoredWarnings, "\n", i)
- let warningPat = escape(substitute(warningPat, '[\,]', '%\\\\&', 'g'), ' ')
- exe 'setlocal efm+=%-G%.%#'.warningPat.'%.%#'
- let i = i + 1
- endwhile
-endfunction
-
-" }}}
-" SetLatexEfm: sets the 'efm' for the latex compiler {{{
-" Description:
-function! <SID>SetLatexEfm()
-
- let pm = ( g:Tex_ShowallLines == 1 ? '+' : '-' )
-
- setlocal efm=
- " remove default error formats that cause issues with revtex, where they
- " match version messages
- " Reference: http://bugs.debian.org/582100
- setlocal efm-=%f:%l:%m
- setlocal efm-=%f:%l:%c:%m
-
- if !g:Tex_ShowallLines
- call s:IgnoreWarnings()
- endif
-
- setlocal efm+=%E!\ LaTeX\ %trror:\ %m
- setlocal efm+=%E!\ %m
- setlocal efm+=%E%f:%l:\ %m
-
- setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
- setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
- setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
-
- exec 'setlocal efm+=%'.pm.'Cl.%l\ %m'
- exec 'setlocal efm+=%'.pm.'Cl.%l\ '
- exec 'setlocal efm+=%'.pm.'C\ \ %m'
- exec 'setlocal efm+=%'.pm.'C%.%#-%.%#'
- exec 'setlocal efm+=%'.pm.'C%.%#[]%.%#'
- exec 'setlocal efm+=%'.pm.'C[]%.%#'
- exec 'setlocal efm+=%'.pm.'C%.%#%[{}\\]%.%#'
- exec 'setlocal efm+=%'.pm.'C<%.%#>%m'
- exec 'setlocal efm+=%'.pm.'C\ \ %m'
- exec 'setlocal efm+=%'.pm.'GSee\ the\ LaTeX%m'
- exec 'setlocal efm+=%'.pm.'GType\ \ H\ <return>%m'
- exec 'setlocal efm+=%'.pm.'G\ ...%.%#'
- exec 'setlocal efm+=%'.pm.'G%.%#\ (C)\ %.%#'
- exec 'setlocal efm+=%'.pm.'G(see\ the\ transcript%.%#)'
- exec 'setlocal efm+=%'.pm.'G\\s%#'
- exec 'setlocal efm+=%'.pm.'O(%*[^()])%r'
- exec 'setlocal efm+=%'.pm.'P(%f%r'
- exec 'setlocal efm+=%'.pm.'P\ %\\=(%f%r'
- exec 'setlocal efm+=%'.pm.'P%*[^()](%f%r'
- exec 'setlocal efm+=%'.pm.'P(%f%*[^()]'
- exec 'setlocal efm+=%'.pm.'P[%\\d%[^()]%#(%f%r'
- if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
- setlocal efm+=%-P%*[^()]
- endif
- exec 'setlocal efm+=%'.pm.'Q)%r'
- exec 'setlocal efm+=%'.pm.'Q%*[^()])%r'
- exec 'setlocal efm+=%'.pm.'Q[%\\d%*[^()])%r'
- if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
- setlocal efm+=%-Q%*[^()]
- endif
- if g:Tex_IgnoreUnmatched && !g:Tex_ShowallLines
- setlocal efm+=%-G%.%#
- endif
-
-endfunction
-
-" }}}
-" Strntok: extract the n^th token from a list {{{
-" example: Strntok('1,23,3', ',', 2) = 23
-fun! <SID>Strntok(s, tok, n)
- return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
-endfun
-
-" }}}
-" SetTexCompilerLevel: sets the "level" for the latex compiler {{{
-function! <SID>SetTexCompilerLevel(...)
- if a:0 > 0
- let level = a:1
- else
- call Tex_ResetIncrementNumber(0)
- echo substitute(g:Tex_IgnoredWarnings,
- \ '^\|\n\zs\S', '\=Tex_IncrementNumber(1)." ".submatch(0)', 'g')
- let level = input("\nChoose an ignore level: ")
- if level == ''
- return
- endif
- endif
- if level == 'strict'
- let g:Tex_ShowallLines = 1
- elseif level =~ '^\d\+$'
- let g:Tex_ShowallLines = 0
- let g:Tex_IgnoreLevel = level
- else
- echoerr "SetTexCompilerLevel: Unkwown option [".level."]"
- end
- call s:SetLatexEfm()
-endfunction
-
-com! -nargs=? TCLevel :call <SID>SetTexCompilerLevel(<f-args>)
-" }}}
-
-" }}}
-" ==============================================================================
-
-call s:SetLatexEfm()
-
-if !exists('*Tex_Debug')
- function! Tex_Debug(...)
- endfunction
-endif
-
-call Tex_Debug("compiler/tex.vim: sourcing this file", "comp")
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/bib_latexSuite.vim b/ftplugin/bib_latexSuite.vim
deleted file mode 100644
index 7a8d47d1..00000000
--- a/ftplugin/bib_latexSuite.vim
+++ /dev/null
@@ -1,15 +0,0 @@
-" File: bib_latexSuite.vim
-" Author: Srinath Avadhanula
-" License: Vim Charityware License
-" Description:
-" This file sources the bibtex.vim file distributed as part of latex-suite.
-" That file sets up 3 maps BBB, BAS, and BBA which are easy wasy to type in
-" bibliographic entries.
-"
-
-" source main.vim because we need a few functions from it.
-runtime ftplugin/latex-suite/main.vim
-" Disable smart-quotes because we need to enter real quotes in bib files.
-runtime ftplugin/latex-suite/bibtex.vim
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap
diff --git a/ftplugin/latex-box/common.vim b/ftplugin/latex-box/common.vim
new file mode 100644
index 00000000..91026720
--- /dev/null
+++ b/ftplugin/latex-box/common.vim
@@ -0,0 +1,351 @@
+" LaTeX Box common functions
+
+" Error Format {{{
+" Note: The error formats assume we're using the -file-line-error with
+" [pdf]latex.
+
+" Check for options
+if !exists("g:LatexBox_show_warnings")
+ let g:LatexBox_show_warnings=1
+endif
+if !exists("g:LatexBox_ignore_warnings")
+ let g:LatexBox_ignore_warnings =
+ \['Underfull',
+ \ 'Overfull',
+ \ 'specifier changed to']
+endif
+
+" See |errorformat-LaTeX|
+setlocal efm=%E!\ LaTeX\ %trror:\ %m
+setlocal efm+=%E%f:%l:\ %m
+
+" Show or ignore warnings
+if g:LatexBox_show_warnings
+ for w in g:LatexBox_ignore_warnings
+ let warning = escape(substitute(w, '[\,]', '%\\\\&', 'g'), ' ')
+ exe 'setlocal efm+=%-G%.%#'. warning .'%.%#'
+ endfor
+ setlocal efm+=%+WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
+ setlocal efm+=%+W%.%#\ at\ lines\ %l--%*\\d
+ setlocal efm+=%+WLaTeX\ %.%#Warning:\ %m
+ setlocal efm+=%+W%.%#%.%#Warning:\ %m
+else
+ setlocal efm+=%-WLaTeX\ %.%#Warning:\ %.%#line\ %l%.%#
+ setlocal efm+=%-W%.%#\ at\ lines\ %l--%*\\d
+ setlocal efm+=%-WLaTeX\ %.%#Warning:\ %m
+ setlocal efm+=%-W%.%#%.%#Warning:\ %m
+endif
+
+" Consider the remaining statements that starts with "!" as errors
+setlocal efm+=%E!\ %m
+
+" Push file to file stack
+setlocal efm+=%+P**%f
+
+" Ignore unmatched lines
+setlocal efm+=%-G\\s%#
+setlocal efm+=%-G%.%#
+" }}}
+
+" Vim Windows {{{
+
+" Width of vertical splits
+if !exists('g:LatexBox_split_width')
+ let g:LatexBox_split_width = 30
+endif
+
+" Where vertical splits appear
+if !exists('g:LatexBox_split_side')
+ let g:LatexBox_split_side = "leftabove"
+endif
+
+" Resize when split?
+if !exists('g:LatexBox_split_resize')
+ let g:LatexBox_split_resize = 0
+endif
+
+" Toggle help info
+if !exists('g:LatexBox_toc_hidehelp')
+ let g:LatexBox_toc_hidehelp = 0
+endif
+" }}}
+
+" Filename utilities {{{
+function! LatexBox_GetMainTexFile()
+
+ " 1. check for the b:main_tex_file variable
+ if exists('b:main_tex_file') && filereadable(b:main_tex_file)
+ return b:main_tex_file
+ endif
+
+
+ " 2. scan the first few lines of the file for root = filename
+ for linenum in range(1,5)
+ let linecontents = getline(linenum)
+ if linecontents =~ 'root\s*='
+ " Remove everything but the filename
+ let b:main_tex_file = substitute(linecontents,
+ \ '.*root\s*=\s*', "", "")
+ let b:main_tex_file = substitute(b:main_tex_file, '\s*$', "", "")
+ " Prepend current directory if this isn't an absolute path
+ if b:main_tex_file !~ '^/'
+ let b:main_tex_file = expand('%:p:h') . '/' . b:main_tex_file
+ endif
+ let b:main_tex_file = fnamemodify(b:main_tex_file, ":p")
+ if b:main_tex_file !~ '\.tex$'
+ let b:main_tex_file .= '.tex'
+ endif
+ return b:main_tex_file
+ endif
+ endfor
+
+ " 3. scan current file for "\begin{document}"
+ if &filetype == 'tex' && search('\C\\begin\_\s*{document}', 'nw') != 0
+ return expand('%:p')
+ endif
+
+ " 4 borrow the Vim-Latex-Suite method of finding it
+ if Tex_GetMainFileName() != expand('%:p')
+ let b:main_tex_file = Tex_GetMainFileName()
+ return b:main_tex_file
+ endif
+
+ " 5. prompt for file with completion
+ let b:main_tex_file = s:PromptForMainFile()
+ return b:main_tex_file
+endfunction
+
+function! s:PromptForMainFile()
+ let saved_dir = getcwd()
+ execute 'cd ' . fnameescape(expand('%:p:h'))
+ let l:file = ''
+ while !filereadable(l:file)
+ let l:file = input('main LaTeX file: ', '', 'file')
+ if l:file !~ '\.tex$'
+ let l:file .= '.tex'
+ endif
+ endwhile
+ let l:file = fnamemodify(l:file, ':p')
+ execute 'cd ' . fnameescape(saved_dir)
+ return l:file
+endfunction
+
+" Return the directory of the main tex file
+function! LatexBox_GetTexRoot()
+ return fnamemodify(LatexBox_GetMainTexFile(), ':h')
+endfunction
+
+function! LatexBox_GetTexBasename(with_dir)
+ if a:with_dir
+ return fnamemodify(LatexBox_GetMainTexFile(), ':r')
+ else
+ return fnamemodify(LatexBox_GetMainTexFile(), ':t:r')
+ endif
+endfunction
+
+function! LatexBox_GetAuxFile()
+ " 1. check for b:build_dir variable
+ if exists('b:build_dir') && isdirectory(b:build_dir)
+ return b:build_dir . '/' . LatexBox_GetTexBasename(0) . '.aux'
+ endif
+
+ " 2. check for g:LatexBox_build_dir variable
+ if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)
+ return g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0) . '.aux'
+ endif
+
+ " 3. use the base name of main tex file
+ return LatexBox_GetTexBasename(1) . '.aux'
+endfunction
+
+function! LatexBox_GetLogFile()
+ " 1. check for b:build_dir variable
+ if exists('b:build_dir') && isdirectory(b:build_dir)
+ return b:build_dir . '/' . LatexBox_GetTexBasename(0) . '.log'
+ endif
+
+ " 2. check for g:LatexBox_build_dir variable
+ if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)
+ return g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0) . '.log'
+ endif
+
+ " 3. use the base name of main tex file
+ return LatexBox_GetTexBasename(1) . '.log'
+endfunction
+
+function! LatexBox_GetOutputFile()
+ " 1. check for b:build_dir variable
+ if exists('b:build_dir') && isdirectory(b:build_dir)
+ return b:build_dir . '/' . LatexBox_GetTexBasename(0)
+ \ . '.' . g:LatexBox_output_type
+ endif
+
+ " 2. check for g:LatexBox_build_dir variable
+ if exists('g:LatexBox_build_dir') && isdirectory(g:LatexBox_build_dir)
+ return g:LatexBox_build_dir . '/' . LatexBox_GetTexBasename(0)
+ \ . '.' . g:LatexBox_output_type
+ endif
+
+ " 3. use the base name of main tex file
+ return LatexBox_GetTexBasename(1) . '.' . g:LatexBox_output_type
+endfunction
+" }}}
+
+" View Output {{{
+
+" Default pdf viewer
+if !exists('g:LatexBox_viewer')
+ if has('win32')
+ " On windows, 'running' a file will open it with the default program
+ let g:LatexBox_viewer = ''
+ else
+ let g:LatexBox_viewer = 'xdg-open'
+ endif
+endif
+
+function! LatexBox_View()
+ let outfile = LatexBox_GetOutputFile()
+ if !filereadable(outfile)
+ echomsg fnamemodify(outfile, ':.') . ' is not readable'
+ return
+ endif
+ let cmd = g:LatexBox_viewer . ' ' . shellescape(outfile)
+ if has('win32')
+ let cmd = '!start /b' . cmd . ' >nul'
+ else
+ let cmd = '!' . cmd . ' >/dev/null &'
+ endif
+ silent execute cmd
+ if !has("gui_running")
+ redraw!
+ endif
+endfunction
+
+command! LatexView call LatexBox_View()
+" }}}
+
+" In Comment {{{
+
+" LatexBox_InComment([line], [col])
+" return true if inside comment
+function! LatexBox_InComment(...)
+ let line = a:0 >= 1 ? a:1 : line('.')
+ let col = a:0 >= 2 ? a:2 : col('.')
+ return synIDattr(synID(line, col, 0), "name") =~# '^texComment'
+endfunction
+" }}}
+
+" Get Current Environment {{{
+
+" LatexBox_GetCurrentEnvironment([with_pos])
+" Returns:
+" - environment
+" if with_pos is not given
+" - [envirnoment, lnum_begin, cnum_begin, lnum_end, cnum_end]
+" if with_pos is nonzero
+function! LatexBox_GetCurrentEnvironment(...)
+ if a:0 > 0
+ let with_pos = a:1
+ else
+ let with_pos = 0
+ endif
+
+ let begin_pat = '\C\\begin\_\s*{[^}]*}\|\\\@<!\\\[\|\\\@<!\\('
+ let end_pat = '\C\\end\_\s*{[^}]*}\|\\\@<!\\\]\|\\\@<!\\)'
+ let saved_pos = getpos('.')
+
+ " move to the left until on a backslash
+ let [bufnum, lnum, cnum, off] = getpos('.')
+ let line = getline(lnum)
+ while cnum > 1 && line[cnum - 1] != '\'
+ let cnum -= 1
+ endwhile
+ call cursor(lnum, cnum)
+
+ " match begin/end pairs but skip comments
+ let flags = 'bnW'
+ if strpart(getline('.'), col('.') - 1) =~ '^\%(' . begin_pat . '\)'
+ let flags .= 'c'
+ endif
+ let [lnum1, cnum1] = searchpairpos(begin_pat, '', end_pat, flags,
+ \ 'LatexBox_InComment()')
+
+ let env = ''
+
+ if lnum1
+ let line = strpart(getline(lnum1), cnum1 - 1)
+
+ if empty(env)
+ let env = matchstr(line, '^\C\\begin\_\s*{\zs[^}]*\ze}')
+ endif
+ if empty(env)
+ let env = matchstr(line, '^\\\[')
+ endif
+ if empty(env)
+ let env = matchstr(line, '^\\(')
+ endif
+ endif
+
+ if with_pos == 1
+ let flags = 'nW'
+ if !(lnum1 == lnum && cnum1 == cnum)
+ let flags .= 'c'
+ endif
+
+ let [lnum2, cnum2] = searchpairpos(begin_pat, '', end_pat, flags,
+ \ 'LatexBox_InComment()')
+
+ call setpos('.', saved_pos)
+ return [env, lnum1, cnum1, lnum2, cnum2]
+ else
+ call setpos('.', saved_pos)
+ return env
+ endif
+endfunction
+" }}}
+
+" Tex To Tree {{{
+" stores nested braces in a tree structure
+function! LatexBox_TexToTree(str)
+ let tree = []
+ let i1 = 0
+ let i2 = -1
+ let depth = 0
+ while i2 < len(a:str)
+ let i2 = match(a:str, '[{}]', i2 + 1)
+ if i2 < 0
+ let i2 = len(a:str)
+ endif
+ if i2 >= len(a:str) || a:str[i2] == '{'
+ if depth == 0
+ let item = substitute(strpart(a:str, i1, i2 - i1),
+ \ '^\s*\|\s*$', '', 'g')
+ if !empty(item)
+ call add(tree, item)
+ endif
+ let i1 = i2 + 1
+ endif
+ let depth += 1
+ else
+ let depth -= 1
+ if depth == 0
+ call add(tree, LatexBox_TexToTree(strpart(a:str, i1, i2 - i1)))
+ let i1 = i2 + 1
+ endif
+ endif
+ endwhile
+ return tree
+endfunction
+" }}}
+
+" Tree To Tex {{{
+function! LatexBox_TreeToTex(tree)
+ if type(a:tree) == type('')
+ return a:tree
+ else
+ return '{' . join(map(a:tree, 'LatexBox_TreeToTex(v:val)'), '') . '}'
+ endif
+endfunction
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-box/complete.vim b/ftplugin/latex-box/complete.vim
new file mode 100644
index 00000000..76f909b9
--- /dev/null
+++ b/ftplugin/latex-box/complete.vim
@@ -0,0 +1,805 @@
+" LaTeX Box completion
+
+setlocal omnifunc=LatexBox_Complete
+
+" <SID> Wrap {{{
+function! s:GetSID()
+ return matchstr(expand('<sfile>'), '\zs<SNR>\d\+_\ze.*$')
+endfunction
+let s:SID = s:GetSID()
+function! s:SIDWrap(func)
+ return s:SID . a:func
+endfunction
+" }}}
+
+" Completion {{{
+if !exists('g:LatexBox_completion_close_braces')
+ let g:LatexBox_completion_close_braces = 1
+endif
+if !exists('g:LatexBox_bibtex_wild_spaces')
+ let g:LatexBox_bibtex_wild_spaces = 1
+endif
+
+if !exists('g:LatexBox_cite_pattern')
+ let g:LatexBox_cite_pattern = '\C\\\a*cite\a*\*\?\(\[[^\]]*\]\)*\_\s*{'
+endif
+if !exists('g:LatexBox_ref_pattern')
+ let g:LatexBox_ref_pattern = '\C\\v\?\(eq\|page\|[cC]\)\?ref\*\?\_\s*{'
+endif
+
+if !exists('g:LatexBox_completion_environments')
+ let g:LatexBox_completion_environments = [
+ \ {'word': 'itemize', 'menu': 'bullet list' },
+ \ {'word': 'enumerate', 'menu': 'numbered list' },
+ \ {'word': 'description', 'menu': 'description' },
+ \ {'word': 'center', 'menu': 'centered text' },
+ \ {'word': 'figure', 'menu': 'floating figure' },
+ \ {'word': 'table', 'menu': 'floating table' },
+ \ {'word': 'equation', 'menu': 'equation (numbered)' },
+ \ {'word': 'align', 'menu': 'aligned equations (numbered)' },
+ \ {'word': 'align*', 'menu': 'aligned equations' },
+ \ {'word': 'document' },
+ \ {'word': 'abstract' },
+ \ ]
+endif
+
+if !exists('g:LatexBox_completion_commands')
+ let g:LatexBox_completion_commands = [
+ \ {'word': '\begin{' },
+ \ {'word': '\end{' },
+ \ {'word': '\item' },
+ \ {'word': '\label{' },
+ \ {'word': '\ref{' },
+ \ {'word': '\eqref{eq:' },
+ \ {'word': '\cite{' },
+ \ {'word': '\chapter{' },
+ \ {'word': '\section{' },
+ \ {'word': '\subsection{' },
+ \ {'word': '\subsubsection{' },
+ \ {'word': '\paragraph{' },
+ \ {'word': '\nonumber' },
+ \ {'word': '\bibliography' },
+ \ {'word': '\bibliographystyle' },
+ \ ]
+endif
+
+if !exists('g:LatexBox_complete_inlineMath')
+ let g:LatexBox_complete_inlineMath = 0
+endif
+
+if !exists('g:LatexBox_eq_env_patterns')
+ let g:LatexBox_eq_env_patterns = 'equation\|gather\|multiline\|align\|flalign\|alignat\|eqnarray'
+endif
+
+" }}}
+
+"LatexBox_kpsewhich {{{
+function! LatexBox_kpsewhich(file)
+ let old_dir = getcwd()
+ execute 'lcd ' . fnameescape(LatexBox_GetTexRoot())
+ let out = system('kpsewhich "' . a:file . '"')
+
+ " If kpsewhich has found something, it returns a non-empty string with a
+ " newline at the end; otherwise the string is empty
+ if len(out)
+ " Remove the trailing newline
+ let out = fnamemodify(out[:-2], ':p')
+ endif
+
+ execute 'lcd ' . fnameescape(old_dir)
+
+ return out
+endfunction
+"}}}
+
+" Omni Completion {{{
+
+let s:completion_type = ''
+
+function! LatexBox_Complete(findstart, base)
+ if a:findstart
+ " return the starting position of the word
+ let line = getline('.')
+ let pos = col('.') - 1
+ while pos > 0 && line[pos - 1] !~ '\\\|{'
+ let pos -= 1
+ endwhile
+
+ let line_start = line[:pos-1]
+ if line_start =~ '\C\\begin\_\s*{$'
+ let s:completion_type = 'begin'
+ elseif line_start =~ '\C\\end\_\s*{$'
+ let s:completion_type = 'end'
+ elseif line_start =~ g:LatexBox_ref_pattern . '$'
+ let s:completion_type = 'ref'
+ elseif line_start =~ g:LatexBox_cite_pattern . '$'
+ let s:completion_type = 'bib'
+ " check for multiple citations
+ let pos = col('.') - 1
+ while pos > 0 && line[pos - 1] !~ '{\|,'
+ let pos -= 1
+ endwhile
+ elseif s:LatexBox_complete_inlineMath_or_not()
+ let s:completion_type = 'inlineMath'
+ let pos = s:eq_pos
+ else
+ let s:completion_type = 'command'
+ if line[pos - 1] == '\'
+ let pos -= 1
+ endif
+ endif
+ return pos
+ else
+ " return suggestions in an array
+ let suggestions = []
+
+ if s:completion_type == 'begin'
+ " suggest known environments
+ for entry in g:LatexBox_completion_environments
+ if entry.word =~ '^' . escape(a:base, '\')
+ if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^}')
+ " add trailing '}'
+ let entry = copy(entry)
+ let entry.abbr = entry.word
+ let entry.word = entry.word . '}'
+ endif
+ call add(suggestions, entry)
+ endif
+ endfor
+ elseif s:completion_type == 'end'
+ " suggest known environments
+ let env = LatexBox_GetCurrentEnvironment()
+ if env != ''
+ if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]')
+ call add(suggestions, {'word': env . '}', 'abbr': env})
+ else
+ call add(suggestions, env)
+ endif
+ endif
+ elseif s:completion_type == 'command'
+ " suggest known commands
+ for entry in g:LatexBox_completion_commands
+ if entry.word =~ '^' . escape(a:base, '\')
+ " do not display trailing '{'
+ if entry.word =~ '{'
+ let entry.abbr = entry.word[0:-2]
+ endif
+ call add(suggestions, entry)
+ endif
+ endfor
+ elseif s:completion_type == 'ref'
+ let suggestions = s:CompleteLabels(a:base)
+ elseif s:completion_type == 'bib'
+ " suggest BibTeX entries
+ let suggestions = LatexBox_BibComplete(a:base)
+ elseif s:completion_type == 'inlineMath'
+ let suggestions = s:LatexBox_inlineMath_completion(a:base)
+ endif
+ if !has('gui_running')
+ redraw!
+ endif
+ return suggestions
+ endif
+endfunction
+" }}}
+
+" BibTeX search {{{
+
+" find the \bibliography{...} commands
+" the optional argument is the file name to be searched
+
+function! s:FindBibData(...)
+ if a:0 == 0
+ let file = LatexBox_GetMainTexFile()
+ else
+ let file = a:1
+ endif
+
+ if !filereadable(file)
+ return ''
+ endif
+
+ let bibliography_cmds = [
+ \ '\\bibliography',
+ \ '\\addbibresource',
+ \ '\\addglobalbib',
+ \ '\\addsectionbib',
+ \ ]
+
+ let lines = readfile(file)
+
+ let bibdata_list = []
+
+ for cmd in bibliography_cmds
+ let bibdata_list += map(filter(copy(lines),
+ \ 'v:val =~ ''\C' . cmd . '\s*{[^}]\+}'''),
+ \ 'matchstr(v:val, ''\C' . cmd . '\s*{\zs[^}]\+\ze}'')')
+ endfor
+
+ let bibdata_list += map(filter(copy(lines),
+ \ 'v:val =~ ''\C\\\%(input\|include\)\s*{[^}]\+}'''),
+ \ 's:FindBibData(LatexBox_kpsewhich(matchstr(v:val,'
+ \ . '''\C\\\%(input\|include\)\s*{\zs[^}]\+\ze}'')))')
+
+ let bibdata_list += map(filter(copy(lines),
+ \ 'v:val =~ ''\C\\\%(input\|include\)\s\+\S\+'''),
+ \ 's:FindBibData(LatexBox_kpsewhich(matchstr(v:val,'
+ \ . '''\C\\\%(input\|include\)\s\+\zs\S\+\ze'')))')
+
+ return join(bibdata_list, ',')
+endfunction
+
+let s:bstfile = expand('<sfile>:p:h') . '/vimcomplete'
+
+function! LatexBox_BibSearch(regexp)
+ let res = []
+
+ " Find data from bib files
+ let bibdata = s:FindBibData()
+ if bibdata != ''
+
+ " write temporary aux file
+ let tmpbase = LatexBox_GetTexRoot() . '/_LatexBox_BibComplete'
+ let auxfile = tmpbase . '.aux'
+ let bblfile = tmpbase . '.bbl'
+ let blgfile = tmpbase . '.blg'
+
+ call writefile(['\citation{*}', '\bibstyle{' . s:bstfile . '}',
+ \ '\bibdata{' . bibdata . '}'], auxfile)
+
+ silent execute '! cd ' shellescape(LatexBox_GetTexRoot()) .
+ \ ' ; bibtex -terse '
+ \ . fnamemodify(auxfile, ':t') . ' >/dev/null'
+
+ let lines = split(substitute(join(readfile(bblfile), "\n"),
+ \ '\n\n\@!\(\s\=\)\s*\|{\|}', '\1', 'g'), "\n")
+
+ for line in filter(lines, 'v:val =~ a:regexp')
+ let matches = matchlist(line,
+ \ '^\(.*\)||\(.*\)||\(.*\)||\(.*\)||\(.*\)')
+ if !empty(matches) && !empty(matches[1])
+ call add(res, {
+ \ 'key': matches[1],
+ \ 'type': matches[2],
+ \ 'author': matches[3],
+ \ 'year': matches[4],
+ \ 'title': matches[5],
+ \ })
+ endif
+ endfor
+
+ call delete(auxfile)
+ call delete(bblfile)
+ call delete(blgfile)
+ endif
+
+ " Find data from 'thebibliography' environments
+ let lines = readfile(LatexBox_GetMainTexFile())
+ if match(lines, '\C\\begin{thebibliography}')
+ for line in filter(filter(lines, 'v:val =~ ''\C\\bibitem'''),
+ \ 'v:val =~ a:regexp')
+ let match = matchlist(line, '\\bibitem{\([^}]*\)')[1]
+ call add(res, {
+ \ 'key': match,
+ \ 'type': '',
+ \ 'author': '',
+ \ 'year': '',
+ \ 'title': match,
+ \ })
+ endfor
+ endif
+
+ return res
+endfunction
+" }}}
+
+" BibTeX completion {{{
+function! LatexBox_BibComplete(regexp)
+
+ " treat spaces as '.*' if needed
+ if g:LatexBox_bibtex_wild_spaces
+ "let regexp = substitute(a:regexp, '\s\+', '.*', 'g')
+ let regexp = '.*' . substitute(a:regexp, '\s\+', '\\\&.*', 'g')
+ else
+ let regexp = a:regexp
+ endif
+
+ let res = []
+ for m in LatexBox_BibSearch(regexp)
+ let type = m['type'] == '' ? '[-]' : '[' . m['type'] . '] '
+ let auth = m['author'] == '' ? '' : m['author'][:20] . ' '
+ let year = m['year'] == '' ? '' : '(' . m['year'] . ')'
+ let w = { 'word': m['key'],
+ \ 'abbr': type . auth . year,
+ \ 'menu': m['title'] }
+
+ " close braces if needed
+ if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]')
+ let w.word = w.word . '}'
+ endif
+
+ call add(res, w)
+ endfor
+ return res
+endfunction
+" }}}
+
+" ExtractLabels {{{
+" Generate list of \newlabel commands in current buffer.
+"
+" Searches the current buffer for commands of the form
+" \newlabel{name}{{number}{page}.*
+" and returns list of [ name, number, page ] tuples.
+function! s:ExtractLabels()
+ call cursor(1,1)
+
+ let matches = []
+ let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
+
+ while [lblline, lblbegin] != [0,0]
+ let [nln, nameend] = searchpairpos( '{', '', '}', 'W' )
+ if nln != lblline
+ let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
+ continue
+ endif
+ let curname = strpart( getline( lblline ), lblbegin, nameend - lblbegin - 1 )
+
+ " Ignore cref entries (because they are duplicates)
+ if curname =~ "\@cref"
+ continue
+ endif
+
+ if 0 == search( '{\w*{', 'ce', lblline )
+ let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
+ continue
+ endif
+
+ let numberbegin = getpos('.')[2]
+ let [nln, numberend] = searchpairpos( '{', '', '}', 'W' )
+ if nln != lblline
+ let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
+ continue
+ endif
+ let curnumber = strpart( getline( lblline ), numberbegin, numberend - numberbegin - 1 )
+
+ if 0 == search( '\w*{', 'ce', lblline )
+ let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
+ continue
+ endif
+
+ let pagebegin = getpos('.')[2]
+ let [nln, pageend] = searchpairpos( '{', '', '}', 'W' )
+ if nln != lblline
+ let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
+ continue
+ endif
+ let curpage = strpart( getline( lblline ), pagebegin, pageend - pagebegin - 1 )
+
+ let matches += [ [ curname, curnumber, curpage ] ]
+
+ let [lblline, lblbegin] = searchpos( '\\newlabel{', 'ecW' )
+ endwhile
+
+ return matches
+endfunction
+"}}}
+
+" ExtractInputs {{{
+" Generate list of \@input commands in current buffer.
+"
+" Searches the current buffer for \@input{file} entries and
+" returns list of all files.
+function! s:ExtractInputs()
+ call cursor(1,1)
+
+ let matches = []
+ let [inline, inbegin] = searchpos( '\\@input{', 'ecW' )
+
+ while [inline, inbegin] != [0,0]
+ let [nln, inend] = searchpairpos( '{', '', '}', 'W' )
+ if nln != inline
+ let [inline, inbegin] = searchpos( '\\@input{', 'ecW' )
+ continue
+ endif
+ let matches += [ LatexBox_kpsewhich(strpart( getline( inline ), inbegin, inend - inbegin - 1 )) ]
+
+ let [inline, inbegin] = searchpos( '\\@input{', 'ecW' )
+ endwhile
+
+ " Remove empty strings for nonexistant .aux files
+ return filter(matches, 'v:val != ""')
+endfunction
+"}}}
+
+" LabelCache {{{
+" Cache of all labels.
+"
+" LabelCache is a dictionary mapping filenames to tuples
+" [ time, labels, inputs ]
+" where
+" * time is modification time of the cache entry
+" * labels is a list like returned by ExtractLabels
+" * inputs is a list like returned by ExtractInputs
+let s:LabelCache = {}
+"}}}
+
+" GetLabelCache {{{
+" Extract labels from LabelCache and update it.
+"
+" Compares modification time of each entry in the label
+" cache and updates it, if necessary. During traversal of
+" the LabelCache, all current labels are collected and
+" returned.
+function! s:GetLabelCache(file)
+ if !filereadable(a:file)
+ return []
+ endif
+
+ if !has_key(s:LabelCache , a:file) || s:LabelCache[a:file][0] != getftime(a:file)
+ " Open file in temporary split window for label extraction.
+ silent execute '1sp +let\ labels=s:ExtractLabels()|let\ inputs=s:ExtractInputs()|quit! ' . a:file
+ let s:LabelCache[a:file] = [ getftime(a:file), labels, inputs ]
+ endif
+
+ " We need to create a copy of s:LabelCache[fid][1], otherwise all inputs'
+ " labels would be added to the current file's label cache upon each
+ " completion call, leading to duplicates/triplicates/etc. and decreased
+ " performance.
+ " Also, because we don't anything with the list besides matching copies,
+ " we can get away with a shallow copy for now.
+ let labels = copy(s:LabelCache[a:file][1])
+
+ for input in s:LabelCache[a:file][2]
+ let labels += s:GetLabelCache(input)
+ endfor
+
+ return labels
+endfunction
+"}}}
+
+" Complete Labels {{{
+function! s:CompleteLabels(regex)
+ let labels = s:GetLabelCache(LatexBox_GetAuxFile())
+
+ let matches = filter( copy(labels), 'match(v:val[0], "' . a:regex . '") != -1' )
+ if empty(matches)
+ " also try to match label and number
+ let regex_split = split(a:regex)
+ if len(regex_split) > 1
+ let base = regex_split[0]
+ let number = escape(join(regex_split[1:], ' '), '.')
+ let matches = filter( copy(labels), 'match(v:val[0], "' . base . '") != -1 && match(v:val[1], "' . number . '") != -1' )
+ endif
+ endif
+ if empty(matches)
+ " also try to match number
+ let matches = filter( copy(labels), 'match(v:val[1], "' . a:regex . '") != -1' )
+ endif
+
+ let suggestions = []
+ for m in matches
+ let entry = {'word': m[0], 'menu': printf("%7s [p. %s]", '('.m[1].')', m[2])}
+ if g:LatexBox_completion_close_braces && !s:NextCharsMatch('^\s*[,}]')
+ " add trailing '}'
+ let entry = copy(entry)
+ let entry.abbr = entry.word
+ let entry.word = entry.word . '}'
+ endif
+ call add(suggestions, entry)
+ endfor
+
+ return suggestions
+endfunction
+" }}}
+
+" Complete Inline Math Or Not {{{
+" Return 1, when cursor is in a math env:
+" 1, there is a single $ in the current line on the left of cursor
+" 2, there is an open-eq-env on/above the current line
+" (open-eq-env : \(, \[, and \begin{eq-env} )
+" Return 0, when cursor is not in a math env
+function! s:LatexBox_complete_inlineMath_or_not()
+
+ " switch of inline math completion feature
+ if g:LatexBox_complete_inlineMath == 0
+ return 0
+ endif
+
+ " env names that can't appear in an eq env
+ if !exists('s:LatexBox_doc_structure_patterns')
+ let s:LatexBox_doc_structure_patterns = '\%(' . '\\begin\s*{document}\|' .
+ \ '\\\%(chapter\|section\|subsection\|subsubsection\)\*\?\s*{' . '\)'
+ endif
+
+ if !exists('s:LatexBox_eq_env_open_patterns')
+ let s:LatexBox_eq_env_open_patterns = ['\\(','\\\[']
+ endif
+ if !exists('s:LatexBox_eq_env_close_patterns')
+ let s:LatexBox_eq_env_close_patterns = ['\\)','\\\]']
+ endif
+
+ let notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
+
+ let lnum_saved = line('.')
+ let cnum_saved = col('.') -1
+
+ let line = getline('.')
+ let line_start_2_cnum_saved = line[:cnum_saved]
+
+ " determine whether there is a single $ before cursor
+ let cursor_dollar_pair = 0
+ while matchend(line_start_2_cnum_saved, '\$[^$]\+\$', cursor_dollar_pair) >= 0
+ " find the end of dollar pair
+ let cursor_dollar_pair = matchend(line_start_2_cnum_saved, '\$[^$]\+\$', cursor_dollar_pair)
+ endwhile
+ " find single $ after cursor_dollar_pair
+ let cursor_single_dollar = matchend(line_start_2_cnum_saved, '\$', cursor_dollar_pair)
+
+ " if single $ is found
+ if cursor_single_dollar >= 0
+ " check whether $ is in \(...\), \[...\], or \begin{eq}...\end{eq}
+
+ " check current line,
+ " search for LatexBox_eq_env_close_patterns: \[ and \(
+ let lnum = line('.')
+ for i in range(0, (len(s:LatexBox_eq_env_open_patterns)-1))
+ call cursor(lnum_saved, cnum_saved)
+ let cnum_close = searchpos(''. s:LatexBox_eq_env_close_patterns[i].'', 'cbW', lnum_saved)[1]
+ let cnum_open = matchend(line_start_2_cnum_saved, s:LatexBox_eq_env_open_patterns[i], cnum_close)
+ if cnum_open >= 0
+ let s:eq_dollar_parenthesis_bracket_empty = ''
+ let s:eq_pos = cursor_single_dollar - 1
+ return 1
+ end
+ endfor
+
+ " check the lines above
+ " search for s:LatexBox_doc_structure_patterns, and end-of-math-env
+ let lnum -= 1
+ while lnum > 0
+ let line = getline(lnum)
+ if line =~ notcomment . '\(' . s:LatexBox_doc_structure_patterns .
+ \ '\|' . '\\end\s*{\(' . g:LatexBox_eq_env_patterns . '\)\*\?}\)'
+ " when s:LatexBox_doc_structure_patterns or g:LatexBox_eq_env_patterns
+ " are found first, complete math, leave with $ at both sides
+ let s:eq_dollar_parenthesis_bracket_empty = '$'
+ let s:eq_pos = cursor_single_dollar
+ break
+ elseif line =~ notcomment . '\\begin\s*{\(' . g:LatexBox_eq_env_patterns . '\)\*\?}'
+ " g:LatexBox_eq_env_patterns is found, complete math, remove $
+ let s:eq_dollar_parenthesis_bracket_empty = ''
+ let s:eq_pos = cursor_single_dollar - 1
+ break
+ endif
+ let lnum -= 1
+ endwhile
+
+ return 1
+ else
+ " no $ is found, then search for \( or \[ in current line
+ " 1, whether there is \(
+ call cursor(lnum_saved, cnum_saved)
+ let cnum_parenthesis_close = searchpos('\\)', 'cbW', lnum_saved)[1]
+ let cnum_parenthesis_open = matchend(line_start_2_cnum_saved, '\\(', cnum_parenthesis_close)
+ if cnum_parenthesis_open >= 0
+ let s:eq_dollar_parenthesis_bracket_empty = '\)'
+ let s:eq_pos = cnum_parenthesis_open
+ return 1
+ end
+
+ " 2, whether there is \[
+ call cursor(lnum_saved, cnum_saved)
+ let cnum_bracket_close = searchpos('\\\]', 'cbW', lnum_saved)[1]
+ let cnum_bracket_open = matchend(line_start_2_cnum_saved, '\\\[', cnum_bracket_close)
+ if cnum_bracket_open >= 0
+ let s:eq_dollar_parenthesis_bracket_empty = '\]'
+ let s:eq_pos = cnum_bracket_open
+ return 1
+ end
+
+ " not inline math completion
+ return 0
+ endif
+
+endfunction
+" }}}
+
+" Complete inline euqation{{{
+function! s:LatexBox_inlineMath_completion(regex, ...)
+
+ if a:0 == 0
+ let file = LatexBox_GetMainTexFile()
+ else
+ let file = a:1
+ endif
+
+ if empty(glob(file, 1))
+ return ''
+ endif
+
+ if empty(s:eq_dollar_parenthesis_bracket_empty)
+ let inline_pattern1 = '\$\s*\(' . escape(substitute(a:regex[1:], '^\s\+', '', ""), '\.*^') . '[^$]*\)\s*\$'
+ let inline_pattern2 = '\\(\s*\(' . escape(substitute(a:regex[1:], '^\s\+', '', ""), '\.*^') . '.*\)\s*\\)'
+ else
+ let inline_pattern1 = '\$\s*\(' . escape(substitute(a:regex, '^\s\+', '', ""), '\.*^') . '[^$]*\)\s*\$'
+ let inline_pattern2 = '\\(\s*\(' . escape(substitute(a:regex, '^\s\+', '', ""), '\.*^') . '.*\)\s*\\)'
+ endif
+
+
+ let suggestions = []
+ let line_num = 0
+ for line in readfile(file)
+ let line_num = line_num + 1
+
+ let suggestions += s:LatexBox_inlineMath_mathlist(line,inline_pattern1 , line_num) + s:LatexBox_inlineMath_mathlist( line,inline_pattern2, line_num)
+
+ " search for included files
+ let included_file = matchstr(line, '^\\@input{\zs[^}]*\ze}')
+ if included_file != ''
+ let included_file = LatexBox_kpsewhich(included_file)
+ call extend(suggestions, s:LatexBox_inlineMath_completion(a:regex, included_file))
+ endif
+ endfor
+
+ return suggestions
+endfunction
+" }}}
+
+" Search for inline maths {{{
+" search for $ ... $ and \( ... \) in each line
+function! s:LatexBox_inlineMath_mathlist(line,inline_pattern, line_num)
+ let col_start = 0
+ let suggestions = []
+ while 1
+ let matches = matchlist(a:line, a:inline_pattern, col_start)
+ if !empty(matches)
+
+ " show line number of inline math
+ let entry = {'word': matches[1], 'menu': '[' . a:line_num . ']'}
+
+ if s:eq_dollar_parenthesis_bracket_empty != ''
+ let entry = copy(entry)
+ let entry.abbr = entry.word
+ let entry.word = entry.word . s:eq_dollar_parenthesis_bracket_empty
+ endif
+ call add(suggestions, entry)
+
+ " update col_start
+ let col_start = matchend(a:line, a:inline_pattern, col_start)
+ else
+ break
+ endif
+ endwhile
+
+ return suggestions
+endfunction
+" }}}
+
+" Close Current Environment {{{
+function! s:CloseCurEnv()
+ " first, try with \left/\right pairs
+ let [lnum, cnum] = searchpairpos('\C\\left\>', '', '\C\\right\>', 'bnW', 'LatexBox_InComment()')
+ if lnum
+ let line = strpart(getline(lnum), cnum - 1)
+ let bracket = matchstr(line, '^\\left\zs\((\|\[\|\\{\||\|\.\)\ze')
+ for [open, close] in [['(', ')'], ['\[', '\]'], ['\\{', '\\}'], ['|', '|'], ['\.', '|']]
+ let bracket = substitute(bracket, open, close, 'g')
+ endfor
+ return '\right' . bracket
+ endif
+
+ " second, try with environments
+ let env = LatexBox_GetCurrentEnvironment()
+ if env == '\['
+ return '\]'
+ elseif env == '\('
+ return '\)'
+ elseif env != ''
+ return '\end{' . env . '}'
+ endif
+ return ''
+endfunction
+" }}}
+
+" Wrap Selection {{{
+function! s:WrapSelection(wrapper)
+ keepjumps normal! `>a}
+ execute 'keepjumps normal! `<i\' . a:wrapper . '{'
+endfunction
+" }}}
+
+" Wrap Selection in Environment with Prompt {{{
+function! s:PromptEnvWrapSelection(...)
+ let env = input('environment: ', '', 'customlist,' . s:SIDWrap('GetEnvironmentList'))
+ if empty(env)
+ return
+ endif
+ " LaTeXBox's custom indentation can interfere with environment
+ " insertion when environments are indented (common for nested
+ " environments). Temporarily disable it for this operation:
+ let ieOld = &indentexpr
+ setlocal indentexpr=""
+ if visualmode() ==# 'V'
+ execute 'keepjumps normal! `>o\end{' . env . '}'
+ execute 'keepjumps normal! `<O\begin{' . env . '}'
+ " indent and format, if requested.
+ if a:0 && a:1
+ normal! gv>
+ normal! gvgq
+ endif
+ else
+ execute 'keepjumps normal! `>a\end{' . env . '}'
+ execute 'keepjumps normal! `<i\begin{' . env . '}'
+ endif
+ exe "setlocal indentexpr=" . ieOld
+endfunction
+" }}}
+
+" Change Environment {{{
+function! s:ChangeEnvPrompt()
+
+ let [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1)
+
+ let new_env = input('change ' . env . ' for: ', '', 'customlist,' . s:SIDWrap('GetEnvironmentList'))
+ if empty(new_env)
+ return
+ endif
+
+ if new_env == '\[' || new_env == '['
+ let begin = '\['
+ let end = '\]'
+ elseif new_env == '\(' || new_env == '('
+ let begin = '\('
+ let end = '\)'
+ else
+ let l:begin = '\begin{' . new_env . '}'
+ let l:end = '\end{' . new_env . '}'
+ endif
+
+ if env == '\[' || env == '\('
+ let line = getline(lnum2)
+ let line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + 1)
+ call setline(lnum2, line)
+
+ let line = getline(lnum)
+ let line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + 1)
+ call setline(lnum, line)
+ else
+ let line = getline(lnum2)
+ let line = strpart(line, 0, cnum2 - 1) . l:end . strpart(line, cnum2 + len(env) + 5)
+ call setline(lnum2, line)
+
+ let line = getline(lnum)
+ let line = strpart(line, 0, cnum - 1) . l:begin . strpart(line, cnum + len(env) + 7)
+ call setline(lnum, line)
+ endif
+endfunction
+
+function! s:GetEnvironmentList(lead, cmdline, pos)
+ let suggestions = []
+ for entry in g:LatexBox_completion_environments
+ let env = entry.word
+ if env =~ '^' . a:lead
+ call add(suggestions, env)
+ endif
+ endfor
+ return suggestions
+endfunction
+" }}}
+
+" Next Charaters Match {{{
+function! s:NextCharsMatch(regex)
+ let rest_of_line = strpart(getline('.'), col('.') - 1)
+ return rest_of_line =~ a:regex
+endfunction
+" }}}
+
+" Mappings {{{
+inoremap <silent> <Plug>LatexCloseCurEnv <C-R>=<SID>CloseCurEnv()<CR>
+vnoremap <silent> <Plug>LatexWrapSelection :<c-u>call <SID>WrapSelection('')<CR>i
+vnoremap <silent> <Plug>LatexEnvWrapSelection :<c-u>call <SID>PromptEnvWrapSelection()<CR>
+vnoremap <silent> <Plug>LatexEnvWrapFmtSelection :<c-u>call <SID>PromptEnvWrapSelection(1)<CR>
+nnoremap <silent> <Plug>LatexChangeEnv :call <SID>ChangeEnvPrompt()<CR>
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-box/findmain.vim b/ftplugin/latex-box/findmain.vim
new file mode 100644
index 00000000..0b9c404f
--- /dev/null
+++ b/ftplugin/latex-box/findmain.vim
@@ -0,0 +1,64 @@
+" Tex_GetMainFileName: gets the name of the main file being compiled. {{{
+" Description: returns the full path name of the main file.
+" This function checks for the existence of a .latexmain file
+" which might point to the location of a "main" latex file.
+" If .latexmain exists, then return the full path name of the
+" file being pointed to by it.
+"
+" Otherwise, return the full path name of the current buffer.
+"
+" You can supply an optional "modifier" argument to the
+" function, which will optionally modify the file name before
+" returning.
+" NOTE: From version 1.6 onwards, this function always trims
+" away the .latexmain part of the file name before applying the
+" modifier argument.
+function! Tex_GetMainFileName(...)
+ if a:0 > 0
+ let modifier = a:1
+ else
+ let modifier = ':p'
+ endif
+
+ let s:origdir = fnameescape(getcwd())
+
+ let dirmodifier = '%:p:h'
+ let dirLast = fnameescape(expand(dirmodifier))
+ exe 'cd '.dirLast
+
+ " move up the directory tree until we find a .latexmain file.
+ " TODO: Should we be doing this recursion by default, or should there be a
+ " setting?
+ while glob('*.latexmain') == ''
+ let dirmodifier = dirmodifier.':h'
+ let dirNew = fnameescape(expand(dirmodifier))
+ " break from the loop if we cannot go up any further.
+ if dirNew == dirLast
+ break
+ endif
+ let dirLast = dirNew
+ exe 'cd '.dirLast
+ endwhile
+
+ let lheadfile = glob('*.latexmain')
+ if lheadfile != ''
+ " Remove the trailing .latexmain part of the filename... We never want
+ " that.
+ let lheadfile = fnamemodify(substitute(lheadfile, '\.latexmain$', '', ''), modifier)
+ else
+ " If we cannot find any main file, just modify the filename of the
+ " current buffer.
+ let lheadfile = expand('%'.modifier)
+ endif
+
+ if lheadfile !~ '\.tex$'
+ let lheadfile .= '.tex'
+ endif
+ exe 'cd '.s:origdir
+
+ " NOTE: The caller of this function needs to escape the file name with
+ " fnameescape() . The reason its not done here is that escaping is not
+ " safe if this file is to be used as part of an external command on
+ " certain platforms.
+ return lheadfile
+endfunction
diff --git a/ftplugin/latex-box/folding.vim b/ftplugin/latex-box/folding.vim
new file mode 100644
index 00000000..36f1577b
--- /dev/null
+++ b/ftplugin/latex-box/folding.vim
@@ -0,0 +1,317 @@
+" Folding support for LaTeX
+"
+" Options
+" g:LatexBox_Folding - Turn on/off folding
+" g:LatexBox_fold_preamble - Turn on/off folding of preamble
+" g:LatexBox_fold_parts - Define parts (eq. appendix, frontmatter) to fold
+" g:LatexBox_fold_sections - Define section levels to fold
+" g:LatexBox_fold_envs - Turn on/off folding of environments
+"
+
+" {{{1 Set options
+if exists('g:LatexBox_Folding') && g:LatexBox_Folding == 1
+ setl foldmethod=expr
+ setl foldexpr=LatexBox_FoldLevel(v:lnum)
+ setl foldtext=LatexBox_FoldText()
+ "
+ " The foldexpr function returns "=" for most lines, which means it can become
+ " slow for large files. The following is a hack that is based on this reply to
+ " a discussion on the Vim Developer list:
+ " http://permalink.gmane.org/gmane.editors.vim.devel/14100
+ "
+ augroup FastFold
+ autocmd!
+ autocmd InsertEnter *.tex setlocal foldmethod=manual
+ autocmd InsertLeave *.tex setlocal foldmethod=expr
+ augroup end
+endif
+if !exists('g:LatexBox_fold_preamble')
+ let g:LatexBox_fold_preamble=1
+endif
+if !exists('g:LatexBox_fold_envs')
+ let g:LatexBox_fold_envs=1
+endif
+if !exists('g:LatexBox_fold_parts')
+ let g:LatexBox_fold_parts=[
+ \ "appendix",
+ \ "frontmatter",
+ \ "mainmatter",
+ \ "backmatter"
+ \ ]
+endif
+if !exists('g:LatexBox_fold_sections')
+ let g:LatexBox_fold_sections=[
+ \ "part",
+ \ "chapter",
+ \ "section",
+ \ "subsection",
+ \ "subsubsection"
+ \ ]
+endif
+if !exists('g:LatexBox_fold_toc')
+ let g:LatexBox_fold_toc=0
+endif
+if !exists('g:LatexBox_fold_toc_levels')
+ let g:LatexBox_fold_toc_levels=1
+endif
+
+
+" {{{1 LatexBox_FoldLevel help functions
+
+" This function parses the tex file to find the sections that are to be folded
+" and their levels, and then predefines the patterns for optimized folding.
+function! s:FoldSectionLevels()
+ " Initialize
+ let level = 1
+ let foldsections = []
+
+ " If we use two or more of the *matter commands, we need one more foldlevel
+ let nparts = 0
+ for part in g:LatexBox_fold_parts
+ let i = 1
+ while i < line("$")
+ if getline(i) =~ '^\s*\\' . part . '\>'
+ let nparts += 1
+ break
+ endif
+ let i += 1
+ endwhile
+ if nparts > 1
+ let level = 2
+ break
+ endif
+ endfor
+
+ " Combine sections and levels, but ignore unused section commands: If we
+ " don't use the part command, then chapter should have the highest
+ " level. If we don't use the chapter command, then section should be the
+ " highest level. And so on.
+ let ignore = 1
+ for part in g:LatexBox_fold_sections
+ " For each part, check if it is used in the file. We start adding the
+ " part patterns to the fold sections array whenever we find one.
+ let partpattern = '^\s*\(\\\|% Fake\)' . part . '\>'
+ if ignore
+ let i = 1
+ while i < line("$")
+ if getline(i) =~# partpattern
+ call insert(foldsections, [partpattern, level])
+ let level += 1
+ let ignore = 0
+ break
+ endif
+ let i += 1
+ endwhile
+ else
+ call insert(foldsections, [partpattern, level])
+ let level += 1
+ endif
+ endfor
+
+ return foldsections
+endfunction
+
+" {{{1 LatexBox_FoldLevel
+
+" Parse file to dynamically set the sectioning fold levels
+let b:LatexBox_FoldSections = s:FoldSectionLevels()
+
+" Optimize by predefine common patterns
+let s:notbslash = '\%(\\\@<!\%(\\\\\)*\)\@<='
+let s:notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
+let s:envbeginpattern = s:notcomment . s:notbslash . '\\begin\s*{.\{-}}'
+let s:envendpattern = s:notcomment . s:notbslash . '\\end\s*{.\{-}}'
+let s:foldparts = '^\s*\\\%(' . join(g:LatexBox_fold_parts, '\|') . '\)'
+let s:folded = '\(% Fake\|\\\(document\|begin\|end\|'
+ \ . 'front\|main\|back\|app\|sub\|section\|chapter\|part\)\)'
+
+function! LatexBox_FoldLevel(lnum)
+ " Check for normal lines first (optimization)
+ let line = getline(a:lnum)
+ if line !~ s:folded
+ return "="
+ endif
+
+ " Fold preamble
+ if g:LatexBox_fold_preamble == 1
+ if line =~# '\s*\\documentclass'
+ return ">1"
+ elseif line =~# '^\s*\\begin\s*{\s*document\s*}'
+ return "0"
+ endif
+ endif
+
+ " Fold parts (\frontmatter, \mainmatter, \backmatter, and \appendix)
+ if line =~# s:foldparts
+ return ">1"
+ endif
+
+ " Fold chapters and sections
+ for [part, level] in b:LatexBox_FoldSections
+ if line =~# part
+ return ">" . level
+ endif
+ endfor
+
+ " Fold environments
+ if g:LatexBox_fold_envs == 1
+ if line =~# s:envbeginpattern
+ return "a1"
+ elseif line =~# '^\s*\\end{document}'
+ " Never fold \end{document}
+ return 0
+ elseif line =~# s:envendpattern
+ return "s1"
+ endif
+ endif
+
+ " Return foldlevel of previous line
+ return "="
+endfunction
+
+" {{{1 LatexBox_FoldText help functions
+function! s:LabelEnv()
+ let i = v:foldend
+ while i >= v:foldstart
+ if getline(i) =~ '^\s*\\label'
+ return matchstr(getline(i), '^\s*\\label{\zs.*\ze}')
+ end
+ let i -= 1
+ endwhile
+ return ""
+endfunction
+
+function! s:CaptionEnv()
+ let i = v:foldend
+ while i >= v:foldstart
+ if getline(i) =~ '^\s*\\caption'
+ return matchstr(getline(i), '^\s*\\caption\(\[.*\]\)\?{\zs.\+')
+ end
+ let i -= 1
+ endwhile
+ return ""
+endfunction
+
+function! s:CaptionTable()
+ let i = v:foldstart
+ while i <= v:foldend
+ if getline(i) =~ '^\s*\\caption'
+ return matchstr(getline(i), '^\s*\\caption\(\[.*\]\)\?{\zs.\+')
+ end
+ let i += 1
+ endwhile
+ return ""
+endfunction
+
+function! s:CaptionFrame(line)
+ " Test simple variants first
+ let caption1 = matchstr(a:line,'\\begin\*\?{.*}{\zs.\+\ze}')
+ let caption2 = matchstr(a:line,'\\begin\*\?{.*}{\zs.\+')
+
+ if len(caption1) > 0
+ return caption1
+ elseif len(caption2) > 0
+ return caption2
+ else
+ let i = v:foldstart
+ while i <= v:foldend
+ if getline(i) =~ '^\s*\\frametitle'
+ return matchstr(getline(i),
+ \ '^\s*\\frametitle\(\[.*\]\)\?{\zs.\+')
+ end
+ let i += 1
+ endwhile
+
+ return ""
+ endif
+endfunction
+
+" {{{1 LatexBox_FoldText
+function! LatexBox_FoldText()
+ " Initialize
+ let line = getline(v:foldstart)
+ let nlines = v:foldend - v:foldstart + 1
+ let level = ''
+ let title = 'Not defined'
+
+ " Fold level
+ let level = strpart(repeat('-', v:foldlevel-1) . '*',0,3)
+ if v:foldlevel > 3
+ let level = strpart(level, 1) . v:foldlevel
+ endif
+ let level = printf('%-3s', level)
+
+ " Preamble
+ if line =~ '\s*\\documentclass'
+ let title = "Preamble"
+ endif
+
+ " Parts, sections and fakesections
+ let sections = '\(\(sub\)*section\|part\|chapter\)'
+ let secpat1 = '^\s*\\' . sections . '\*\?\s*{'
+ let secpat2 = '^\s*\\' . sections . '\*\?\s*\['
+ if line =~ '\\frontmatter'
+ let title = "Frontmatter"
+ elseif line =~ '\\mainmatter'
+ let title = "Mainmatter"
+ elseif line =~ '\\backmatter'
+ let title = "Backmatter"
+ elseif line =~ '\\appendix'
+ let title = "Appendix"
+ elseif line =~ secpat1 . '.*}'
+ let title = matchstr(line, secpat1 . '\zs.*\ze}')
+ elseif line =~ secpat1
+ let title = matchstr(line, secpat1 . '\zs.*')
+ elseif line =~ secpat2 . '.*\]'
+ let title = matchstr(line, secpat2 . '\zs.*\ze\]')
+ elseif line =~ secpat2
+ let title = matchstr(line, secpat2 . '\zs.*')
+ elseif line =~ 'Fake' . sections . ':'
+ let title = matchstr(line,'Fake' . sections . ':\s*\zs.*')
+ elseif line =~ 'Fake' . sections
+ let title = matchstr(line, 'Fake' . sections)
+ endif
+
+ " Environments
+ if line =~ '\\begin'
+ " Capture environment name
+ let env = matchstr(line,'\\begin\*\?{\zs\w*\*\?\ze}')
+
+ " Set caption based on type of environment
+ if env == 'frame'
+ let label = ''
+ let caption = s:CaptionFrame(line)
+ elseif env == 'table'
+ let label = s:LabelEnv()
+ let caption = s:CaptionTable()
+ else
+ let label = s:LabelEnv()
+ let caption = s:CaptionEnv()
+ endif
+
+ " If no caption found, check for a caption comment
+ if caption == ''
+ let caption = matchstr(line,'\\begin\*\?{.*}\s*%\s*\zs.*')
+ endif
+
+ " Create title based on caption and label
+ if caption . label == ''
+ let title = env
+ elseif label == ''
+ let title = printf('%-12s%s', env . ':',
+ \ substitute(caption, '}\s*$', '',''))
+ elseif caption == ''
+ let title = printf('%-12s%56s', env, '(' . label . ')')
+ else
+ let title = printf('%-12s%-30s %21s', env . ':',
+ \ strpart(substitute(caption, '}\s*$', '',''),0,34),
+ \ '(' . label . ')')
+ endif
+ endif
+
+ let title = strpart(title, 0, 68)
+ return printf('%-3s %-68s #%5d', level, title, nlines)
+endfunction
+
+" {{{1 Footer
+" vim:fdm=marker:ff=unix:ts=4:sw=4
diff --git a/ftplugin/latex-box/latexmk.vim b/ftplugin/latex-box/latexmk.vim
new file mode 100644
index 00000000..4ea3ff09
--- /dev/null
+++ b/ftplugin/latex-box/latexmk.vim
@@ -0,0 +1,442 @@
+" LaTeX Box latexmk functions
+
+" Options and variables {{{
+
+if !exists('g:LatexBox_latexmk_options')
+ let g:LatexBox_latexmk_options = ''
+endif
+if !exists('g:LatexBox_latexmk_async')
+ let g:LatexBox_latexmk_async = 0
+endif
+if !exists('g:LatexBox_latexmk_preview_continuously')
+ let g:LatexBox_latexmk_preview_continuously = 0
+endif
+if !exists('g:LatexBox_output_type')
+ let g:LatexBox_output_type = 'pdf'
+endif
+if !exists('g:LatexBox_autojump')
+ let g:LatexBox_autojump = 0
+endif
+if ! exists('g:LatexBox_quickfix')
+ let g:LatexBox_quickfix = 1
+endif
+
+" }}}
+
+" Process ID management (used for asynchronous and continuous mode) {{{
+
+" A dictionary of latexmk PID's (basename: pid)
+if !exists('g:latexmk_running_pids')
+ let g:latexmk_running_pids = {}
+endif
+
+" Set PID {{{
+function! s:LatexmkSetPID(basename, pid)
+ let g:latexmk_running_pids[a:basename] = a:pid
+endfunction
+" }}}
+
+" kill_latexmk_process {{{
+function! s:kill_latexmk_process(pid)
+ if has('win32')
+ silent execute '!taskkill /PID ' . a:pid . ' /T /F'
+ else
+ if g:LatexBox_latexmk_async
+ " vim-server mode
+ let pids = []
+ let tmpfile = tempname()
+ silent execute '!ps x -o pgid,pid > ' . tmpfile
+ for line in readfile(tmpfile)
+ let new_pid = matchstr(line, '^\s*' . a:pid . '\s\+\zs\d\+\ze')
+ if !empty(new_pid)
+ call add(pids, new_pid)
+ endif
+ endfor
+ call delete(tmpfile)
+ if !empty(pids)
+ silent execute '!kill ' . join(pids)
+ endif
+ else
+ " single background process
+ silent execute '!kill ' . a:pid
+ endif
+ endif
+ if !has('gui_running')
+ redraw!
+ endif
+endfunction
+" }}}
+
+" kill_all_latexmk_processes {{{
+function! s:kill_all_latexmk_processes()
+ for pid in values(g:latexmk_running_pids)
+ call s:kill_latexmk_process(pid)
+ endfor
+endfunction
+" }}}
+
+" }}}
+
+" Setup for vim-server {{{
+function! s:SIDWrap(func)
+ if !exists('s:SID')
+ let s:SID = matchstr(expand('<sfile>'), '\zs<SNR>\d\+_\ze.*$')
+ endif
+ return s:SID . a:func
+endfunction
+
+function! s:LatexmkCallback(basename, status)
+ " Only remove the pid if not in continuous mode
+ if !g:LatexBox_latexmk_preview_continuously
+ call remove(g:latexmk_running_pids, a:basename)
+ call LatexBox_LatexErrors(a:status, a:basename)
+ endif
+endfunction
+
+function! s:setup_vim_server()
+ if !exists('g:vim_program')
+
+ " attempt autodetection of vim executable
+ let g:vim_program = ''
+ if has('win32')
+ " Just drop through to the default for windows
+ else
+ if match(&shell, '/\(bash\|zsh\)$') >= 0
+ let ppid = '$PPID'
+ else
+ let ppid = '$$'
+ endif
+
+ let tmpfile = tempname()
+ silent execute '!ps -o command= -p ' . ppid . ' > ' . tmpfile
+ for line in readfile(tmpfile)
+ let line = matchstr(line, '^\S\+\>')
+ if !empty(line) && executable(line)
+ let g:vim_program = line . ' -g'
+ break
+ endif
+ endfor
+ call delete(tmpfile)
+ endif
+
+ if empty(g:vim_program)
+ if has('gui_macvim')
+ let g:vim_program
+ \ = '/Applications/MacVim.app/Contents/MacOS/Vim -g'
+ else
+ let g:vim_program = v:progname
+ endif
+ endif
+ endif
+endfunction
+" }}}
+
+" Latexmk {{{
+
+function! LatexBox_Latexmk(force)
+ " Define often used names
+ let basepath = LatexBox_GetTexBasename(1)
+ let basename = fnamemodify(basepath, ':t')
+ let texroot = shellescape(LatexBox_GetTexRoot())
+ let mainfile = fnameescape(fnamemodify(LatexBox_GetMainTexFile(), ':t'))
+
+ " Check if already running
+ if has_key(g:latexmk_running_pids, basepath)
+ echomsg "latexmk is already running for `" . basename . "'"
+ return
+ endif
+
+ " Set wrap width in log file
+ let max_print_line = 2000
+ if has('win32')
+ let env = 'set max_print_line=' . max_print_line . ' & '
+ elseif match(&shell, '/tcsh$') >= 0
+ let env = 'setenv max_print_line ' . max_print_line . '; '
+ else
+ let env = 'max_print_line=' . max_print_line
+ endif
+
+ " Set latexmk command with options
+ if has('win32')
+ " Make sure to switch drive as well as directory
+ let cmd = 'cd /D ' . texroot . ' && '
+ else
+ let cmd = 'cd ' . texroot . ' && '
+ endif
+ let cmd .= env . ' latexmk'
+ let cmd .= ' -' . g:LatexBox_output_type
+ let cmd .= ' -quiet '
+ let cmd .= g:LatexBox_latexmk_options
+ if a:force
+ let cmd .= ' -g'
+ endif
+ if g:LatexBox_latexmk_preview_continuously
+ let cmd .= ' -pvc'
+ endif
+ let cmd .= ' -e ' . shellescape('$pdflatex =~ s/ / -file-line-error /')
+ let cmd .= ' -e ' . shellescape('$latex =~ s/ / -file-line-error /')
+ let cmd .= ' ' . mainfile
+
+ " Redirect output to null
+ if has('win32')
+ let cmd .= ' >nul'
+ else
+ let cmd .= ' &>/dev/null'
+ endif
+
+ if g:LatexBox_latexmk_async
+ " Check if VIM server exists
+ if empty(v:servername)
+ echoerr "cannot run latexmk in background without a VIM server"
+ echoerr "set g:LatexBox_latexmk_async to 0 to change compiling mode"
+ return
+ endif
+
+ " Start vim server if necessary
+ call s:setup_vim_server()
+
+ let setpidfunc = s:SIDWrap('LatexmkSetPID')
+ let callbackfunc = s:SIDWrap('LatexmkCallback')
+ if has('win32')
+ let vim_program = substitute(g:vim_program,
+ \ 'gvim\.exe$', 'vim.exe', '')
+
+ " Define callback to set the pid
+ let callsetpid = setpidfunc . '(''' . basepath . ''', %CMDPID%)'
+ let vimsetpid = vim_program . ' --servername ' . v:servername
+ \ . ' --remote-expr ' . shellescape(callsetpid)
+
+ " Define callback after latexmk is finished
+ let callback = callbackfunc . '(''' . basepath . ''', %LATEXERR%)'
+ let vimcmd = vim_program . ' --servername ' . v:servername
+ \ . ' --remote-expr ' . shellescape(callback)
+
+ let asyncbat = tempname() . '.bat'
+ call writefile(['setlocal',
+ \ 'set T=%TEMP%\sthUnique.tmp',
+ \ 'wmic process where (Name="WMIC.exe" AND CommandLine LIKE "%%%TIME%%%") '
+ \ . 'get ParentProcessId /value | find "ParentProcessId" >%T%',
+ \ 'set /P A=<%T%',
+ \ 'set CMDPID=%A:~16% & del %T%',
+ \ vimsetpid,
+ \ cmd,
+ \ 'set LATEXERR=%ERRORLEVEL%',
+ \ vimcmd,
+ \ 'endlocal'], asyncbat)
+
+ " Define command
+ let cmd = '!start /b ' . asyncbat . ' & del ' . asyncbat
+ else
+ " Define callback to set the pid
+ let callsetpid = shellescape(setpidfunc).'"(\"'.basepath.'\",$$)"'
+ let vimsetpid = g:vim_program . ' --servername ' . v:servername
+ \ . ' --remote-expr ' . callsetpid
+
+ " Define callback after latexmk is finished
+ let callback = shellescape(callbackfunc).'"(\"'.basepath.'\",$?)"'
+ let vimcmd = g:vim_program . ' --servername ' . v:servername
+ \ . ' --remote-expr ' . callback
+
+ " Define command
+ " Note: Here we escape '%' because it may be given as a user option
+ " through g:LatexBox_latexmk_options, for instance with
+ " g:Latex..._options = "-pdflatex='pdflatex -synctex=1 \%O \%S'"
+ let cmd = vimsetpid . ' ; ' . escape(cmd, '%') . ' ; ' . vimcmd
+ let cmd = '! (' . cmd . ') >/dev/null &'
+ endif
+
+ if g:LatexBox_latexmk_preview_continuously
+ echo 'Compiling to ' . g:LatexBox_output_type
+ \ . ' with continuous preview.'
+ else
+ echo 'Compiling to ' . g:LatexBox_output_type . ' ...'
+ endif
+ silent execute cmd
+ else
+ if g:LatexBox_latexmk_preview_continuously
+ if has('win32')
+ let cmd = '!start /b cmd /s /c "' . cmd . '"'
+ else
+ let cmd = '!' . cmd . ' &'
+ endif
+ echo 'Compiling to ' . g:LatexBox_output_type . ' ...'
+ silent execute cmd
+
+ " Save PID in order to be able to kill the process when wanted.
+ if has('win32')
+ let tmpfile = tempname()
+ let pidcmd = 'cmd /c "wmic process where '
+ \ . '(CommandLine LIKE "latexmk\%'.mainfile.'\%") '
+ \ . 'get ProcessId /value | find "ProcessId" '
+ \ . '>'.tmpfile.' "'
+ silent execute '! ' . pidcmd
+ let pids = readfile(tmpfile)
+ let pid = strpart(pids[0], 10)
+ let g:latexmk_running_pids[basepath] = pid
+ else
+ let pid = substitute(system('pgrep -f "perl.*'
+ \ . mainfile . '"'),'\D','','')
+ let g:latexmk_running_pids[basepath] = pid
+ endif
+ else
+ " Execute command and check for errors
+ echo 'Compiling to ' . g:LatexBox_output_type . ' ... (async off!)'
+ call system(cmd)
+ call LatexBox_LatexErrors(v:shell_error)
+ endif
+ endif
+
+ " Redraw screen if necessary
+ if !has("gui_running")
+ redraw!
+ endif
+endfunction
+" }}}
+
+" LatexmkClean {{{
+function! LatexBox_LatexmkClean(cleanall)
+ let basename = LatexBox_GetTexBasename(1)
+ if has_key(g:latexmk_running_pids, basename)
+ echomsg "don't clean when latexmk is running"
+ return
+ endif
+
+ if has('win32')
+ let cmd = 'cd /D ' . shellescape(LatexBox_GetTexRoot()) . ' & '
+ else
+ let cmd = 'cd ' . shellescape(LatexBox_GetTexRoot()) . ';'
+ endif
+ if a:cleanall
+ let cmd .= 'latexmk -C '
+ else
+ let cmd .= 'latexmk -c '
+ endif
+ let cmd .= shellescape(LatexBox_GetMainTexFile())
+ if has('win32')
+ let cmd .= ' >nul'
+ else
+ let cmd .= ' >&/dev/null'
+ endif
+
+ call system(cmd)
+ if !has('gui_running')
+ redraw!
+ endif
+
+ echomsg "latexmk clean finished"
+endfunction
+" }}}
+
+" LatexErrors {{{
+function! LatexBox_LatexErrors(status, ...)
+ if a:0 >= 1
+ let log = a:1 . '.log'
+ else
+ let log = LatexBox_GetLogFile()
+ endif
+
+ cclose
+
+ " set cwd to expand error file correctly
+ let l:cwd = fnamemodify(getcwd(), ':p')
+ execute 'lcd ' . fnameescape(LatexBox_GetTexRoot())
+ try
+ if g:LatexBox_autojump
+ execute 'cfile ' . fnameescape(log)
+ else
+ execute 'cgetfile ' . fnameescape(log)
+ endif
+ finally
+ " restore cwd
+ execute 'lcd ' . fnameescape(l:cwd)
+ endtry
+
+ " Always open window if started by LatexErrors command
+ if a:status < 0
+ botright copen
+ else
+ " Write status message to screen
+ redraw
+ if a:status > 0 || len(getqflist())>1
+ echomsg 'Compiling to ' . g:LatexBox_output_type . ' ... failed!'
+ else
+ echomsg 'Compiling to ' . g:LatexBox_output_type . ' ... success!'
+ endif
+
+ " Only open window when an error/warning is detected
+ if g:LatexBox_quickfix
+ belowright cw
+ if g:LatexBox_quickfix==2
+ wincmd p
+ endif
+ endif
+ endif
+endfunction
+" }}}
+
+" LatexmkStatus {{{
+function! LatexBox_LatexmkStatus(detailed)
+ if a:detailed
+ if empty(g:latexmk_running_pids)
+ echo "latexmk is not running"
+ else
+ let plist = ""
+ for [basename, pid] in items(g:latexmk_running_pids)
+ if !empty(plist)
+ let plist .= '; '
+ endif
+ let plist .= fnamemodify(basename, ':t') . ':' . pid
+ endfor
+ echo "latexmk is running (" . plist . ")"
+ endif
+ else
+ let basename = LatexBox_GetTexBasename(1)
+ if has_key(g:latexmk_running_pids, basename)
+ echo "latexmk is running"
+ else
+ echo "latexmk is not running"
+ endif
+ endif
+endfunction
+" }}}
+
+" LatexmkStop {{{
+function! LatexBox_LatexmkStop(silent)
+ if empty(g:latexmk_running_pids)
+ if !a:silent
+ let basepath = LatexBox_GetTexBasename(1)
+ let basename = fnamemodify(basepath, ':t')
+ echoerr "latexmk is not running for `" . basename . "'"
+ endif
+ else
+ let basepath = LatexBox_GetTexBasename(1)
+ let basename = fnamemodify(basepath, ':t')
+ if has_key(g:latexmk_running_pids, basepath)
+ call s:kill_latexmk_process(g:latexmk_running_pids[basepath])
+ call remove(g:latexmk_running_pids, basepath)
+ if !a:silent
+ echomsg "latexmk stopped for `" . basename . "'"
+ endif
+ elseif !a:silent
+ echoerr "latexmk is not running for `" . basename . "'"
+ endif
+ endif
+endfunction
+" }}}
+
+" Commands {{{
+
+command! -bang Latexmk call LatexBox_Latexmk(<q-bang> == "!")
+command! -bang LatexmkClean call LatexBox_LatexmkClean(<q-bang> == "!")
+command! -bang LatexmkStatus call LatexBox_LatexmkStatus(<q-bang> == "!")
+command! LatexmkStop call LatexBox_LatexmkStop(0)
+command! LatexErrors call LatexBox_LatexErrors(-1)
+
+if g:LatexBox_latexmk_async || g:LatexBox_latexmk_preview_continuously
+ autocmd BufUnload <buffer> call LatexBox_LatexmkStop(1)
+ autocmd VimLeave * call <SID>kill_all_latexmk_processes()
+endif
+
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-box/mappings.vim b/ftplugin/latex-box/mappings.vim
new file mode 100644
index 00000000..509f5f19
--- /dev/null
+++ b/ftplugin/latex-box/mappings.vim
@@ -0,0 +1,96 @@
+" LaTeX Box mappings
+
+if exists("g:LatexBox_no_mappings")
+ finish
+endif
+
+" latexmk {{{
+map <buffer> <LocalLeader>ll :Latexmk<CR>
+map <buffer> <LocalLeader>lL :Latexmk!<CR>
+map <buffer> <LocalLeader>lc :LatexmkClean<CR>
+map <buffer> <LocalLeader>lC :LatexmkClean!<CR>
+map <buffer> <LocalLeader>lg :LatexmkStatus<CR>
+map <buffer> <LocalLeader>lG :LatexmkStatus!<CR>
+map <buffer> <LocalLeader>lk :LatexmkStop<CR>
+map <buffer> <LocalLeader>le :LatexErrors<CR>
+" }}}
+
+" View {{{
+map <buffer> <LocalLeader>lv :LatexView<CR>
+" }}}
+
+" TOC {{{
+map <silent> <buffer> <LocalLeader>lt :LatexTOC<CR>
+" }}}
+
+" Jump to match {{{
+if !exists('g:LatexBox_loaded_matchparen')
+ nmap <buffer> % <Plug>LatexBox_JumpToMatch
+ vmap <buffer> % <Plug>LatexBox_JumpToMatch
+ omap <buffer> % <Plug>LatexBox_JumpToMatch
+endif
+" }}}
+
+" Define text objects {{{
+vmap <buffer> ie <Plug>LatexBox_SelectCurrentEnvInner
+vmap <buffer> ae <Plug>LatexBox_SelectCurrentEnvOuter
+omap <buffer> ie :normal vie<CR>
+omap <buffer> ae :normal vae<CR>
+vmap <buffer> i$ <Plug>LatexBox_SelectInlineMathInner
+vmap <buffer> a$ <Plug>LatexBox_SelectInlineMathOuter
+omap <buffer> i$ :normal vi$<CR>
+omap <buffer> a$ :normal va$<CR>
+" }}}
+
+" Jump between sections {{{
+function! s:LatexBoxNextSection(type, backwards, visual)
+ " Restore visual mode if desired
+ if a:visual
+ normal! gv
+ endif
+
+ " For the [] and ][ commands we move up or down before the search
+ if a:type == 1
+ if a:backwards
+ normal! k
+ else
+ normal! j
+ endif
+ endif
+
+ " Define search pattern and do the search while preserving "/
+ let save_search = @/
+ let flags = 'W'
+ if a:backwards
+ let flags = 'b' . flags
+ endif
+ let notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
+ let pattern = notcomment . '\v\s*\\(' . join([
+ \ '(sub)*section',
+ \ 'chapter',
+ \ 'part',
+ \ 'appendix',
+ \ '(front|back|main)matter'], '|') . ')>'
+ call search(pattern, flags)
+ let @/ = save_search
+
+ " For the [] and ][ commands we move down or up after the search
+ if a:type == 1
+ if a:backwards
+ normal! j
+ else
+ normal! k
+ endif
+ endif
+endfunction
+noremap <buffer> <silent> ]] :call <SID>LatexBoxNextSection(0,0,0)<CR>
+noremap <buffer> <silent> ][ :call <SID>LatexBoxNextSection(1,0,0)<CR>
+noremap <buffer> <silent> [] :call <SID>LatexBoxNextSection(1,1,0)<CR>
+noremap <buffer> <silent> [[ :call <SID>LatexBoxNextSection(0,1,0)<CR>
+vnoremap <buffer> <silent> ]] :<c-u>call <SID>LatexBoxNextSection(0,0,1)<CR>
+vnoremap <buffer> <silent> ][ :<c-u>call <SID>LatexBoxNextSection(1,0,1)<CR>
+vnoremap <buffer> <silent> [] :<c-u>call <SID>LatexBoxNextSection(1,1,1)<CR>
+vnoremap <buffer> <silent> [[ :<c-u>call <SID>LatexBoxNextSection(0,1,1)<CR>
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-box/motion.vim b/ftplugin/latex-box/motion.vim
new file mode 100644
index 00000000..58a6fb42
--- /dev/null
+++ b/ftplugin/latex-box/motion.vim
@@ -0,0 +1,518 @@
+" LaTeX Box motion functions
+
+" Motion options {{{
+" Opening and closing patterns
+if !exists('g:LatexBox_open_pats')
+ let g:LatexBox_open_pats = [ '\\{','{','\\(','(','\\\[','\[',
+ \ '\\begin\s*{.\{-}}', '\\left\s*\%([^\\]\|\\.\|\\\a*\)']
+ let g:LatexBox_close_pats = [ '\\}','}','\\)',')','\\\]','\]',
+ \ '\\end\s*{.\{-}}', '\\right\s*\%([^\\]\|\\.\|\\\a*\)']
+endif
+" }}}
+
+" HasSyntax {{{
+" s:HasSyntax(syntaxName, [line], [col])
+function! s:HasSyntax(syntaxName, ...)
+ let line = a:0 >= 1 ? a:1 : line('.')
+ let col = a:0 >= 2 ? a:2 : col('.')
+ return index(map(synstack(line, col),
+ \ 'synIDattr(v:val, "name") == "' . a:syntaxName . '"'),
+ \ 1) >= 0
+endfunction
+" }}}
+
+" Search and Skip Comments {{{
+" s:SearchAndSkipComments(pattern, [flags], [stopline])
+function! s:SearchAndSkipComments(pat, ...)
+ let flags = a:0 >= 1 ? a:1 : ''
+ let stopline = a:0 >= 2 ? a:2 : 0
+ let saved_pos = getpos('.')
+
+ " search once
+ let ret = search(a:pat, flags, stopline)
+
+ if ret
+ " do not match at current position if inside comment
+ let flags = substitute(flags, 'c', '', 'g')
+
+ " keep searching while in comment
+ while LatexBox_InComment()
+ let ret = search(a:pat, flags, stopline)
+ if !ret
+ break
+ endif
+ endwhile
+ endif
+
+ if !ret
+ " if no match found, restore position
+ call setpos('.', saved_pos)
+ endif
+
+ return ret
+endfunction
+" }}}
+
+" Finding Matching Pair {{{
+function! s:FindMatchingPair(mode)
+
+ if a:mode =~ 'h\|i'
+ 2match none
+ elseif a:mode == 'v'
+ normal! gv
+ endif
+
+ if LatexBox_InComment() | return | endif
+
+ " open/close pairs (dollars signs are treated apart)
+ let dollar_pat = '\$'
+ let notbslash = '\%(\\\@<!\%(\\\\\)*\)\@<='
+ let notcomment = '\%(\%(\\\@<!\%(\\\\\)*\)\@<=%.*\)\@<!'
+ let anymatch = '\('
+ \ . join(g:LatexBox_open_pats + g:LatexBox_close_pats, '\|')
+ \ . '\|' . dollar_pat . '\)'
+
+ let lnum = line('.')
+ let cnum = searchpos('\A', 'cbnW', lnum)[1]
+ " if the previous char is a backslash
+ if strpart(getline(lnum), 0, cnum-1) !~ notbslash . '$' | let cnum = cnum-1 | endif
+ let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
+
+ if empty(delim) || strlen(delim)+cnum-1< col('.')
+ if a:mode =~ 'n\|v\|o'
+ " if not found, search forward
+ let cnum = match(getline(lnum), '\C'. anymatch , col('.') - 1) + 1
+ if cnum == 0 | return | endif
+ call cursor(lnum, cnum)
+ let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
+ elseif a:mode =~ 'i'
+ " if not found, move one char bacward and search
+ let cnum = searchpos('\A', 'bnW', lnum)[1]
+ " if the previous char is a backslash
+ if strpart(getline(lnum), 0, cnum-1) !~ notbslash . '$' | let cnum = cnum-1 | endif
+ let delim = matchstr(getline(lnum), '\C^'. anymatch , cnum - 1)
+ if empty(delim) || strlen(delim)+cnum< col('.') | return | endif
+ elseif a:mode =~ 'h'
+ return
+ endif
+ endif
+
+ if delim =~ '^\$'
+
+ " match $-pairs
+ " check if next character is in inline math
+ let [lnum0, cnum0] = searchpos('.', 'nW')
+ if lnum0 && s:HasSyntax('texMathZoneX', lnum0, cnum0)
+ let [lnum2, cnum2] = searchpos(notcomment . notbslash. dollar_pat, 'nW', line('w$')*(a:mode =~ 'h\|i') , 200)
+ else
+ let [lnum2, cnum2] = searchpos('\%(\%'. lnum . 'l\%' . cnum . 'c\)\@!'. notcomment . notbslash . dollar_pat, 'bnW', line('w0')*(a:mode =~ 'h\|i') , 200)
+ endif
+
+ if a:mode =~ 'h\|i'
+ execute '2match MatchParen /\%(\%' . lnum . 'l\%' . cnum . 'c\$' . '\|\%' . lnum2 . 'l\%' . cnum2 . 'c\$\)/'
+ elseif a:mode =~ 'n\|v\|o'
+ call cursor(lnum2,cnum2)
+ endif
+
+ else
+ " match other pairs
+ for i in range(len(g:LatexBox_open_pats))
+ let open_pat = notbslash . g:LatexBox_open_pats[i]
+ let close_pat = notbslash . g:LatexBox_close_pats[i]
+
+ if delim =~# '^' . open_pat
+ " if on opening pattern, search for closing pattern
+ let [lnum2, cnum2] = searchpairpos('\C' . open_pat, '', '\C'
+ \ . close_pat, 'nW', 'LatexBox_InComment()',
+ \ line('w$')*(a:mode =~ 'h\|i') , 200)
+ if a:mode =~ 'h\|i'
+ execute '2match MatchParen /\%(\%' . lnum . 'l\%' . cnum
+ \ . 'c' . g:LatexBox_open_pats[i] . '\|\%'
+ \ . lnum2 . 'l\%' . cnum2 . 'c'
+ \ . g:LatexBox_close_pats[i] . '\)/'
+ elseif a:mode =~ 'n\|v\|o'
+ call cursor(lnum2,cnum2)
+ if strlen(close_pat)>1 && a:mode =~ 'o'
+ call cursor(lnum2, matchend(getline('.'), '\C'
+ \ . close_pat, col('.')-1))
+ endif
+ endif
+ break
+ elseif delim =~# '^' . close_pat
+ " if on closing pattern, search for opening pattern
+ let [lnum2, cnum2] = searchpairpos('\C' . open_pat, '',
+ \ '\C\%(\%'. lnum . 'l\%' . cnum . 'c\)\@!'
+ \ . close_pat, 'bnW', 'LatexBox_InComment()',
+ \ line('w0')*(a:mode =~ 'h\|i') , 200)
+ if a:mode =~ 'h\|i'
+ execute '2match MatchParen /\%(\%' . lnum2 . 'l\%' . cnum2
+ \ . 'c' . g:LatexBox_open_pats[i] . '\|\%'
+ \ . lnum . 'l\%' . cnum . 'c'
+ \ . g:LatexBox_close_pats[i] . '\)/'
+ elseif a:mode =~ 'n\|v\|o'
+ call cursor(lnum2,cnum2)
+ endif
+ break
+ endif
+ endfor
+
+ endif
+endfunction
+
+" Allow to disable functionality if desired
+if !exists('g:LatexBox_loaded_matchparen')
+ " Disable matchparen autocommands
+ augroup LatexBox_HighlightPairs
+ autocmd BufEnter * if !exists("g:loaded_matchparen") || !g:loaded_matchparen | runtime plugin/matchparen.vim | endif
+ autocmd BufEnter *.tex 3match none | unlet! g:loaded_matchparen | au! matchparen
+ autocmd! CursorMoved *.tex call s:FindMatchingPair('h')
+ autocmd! CursorMovedI *.tex call s:FindMatchingPair('i')
+ augroup END
+endif
+
+" Use LatexBox'es FindMatchingPair as '%' (enable jump between e.g. $'s)
+nnoremap <silent> <Plug>LatexBox_JumpToMatch :call <SID>FindMatchingPair('n')<CR>
+vnoremap <silent> <Plug>LatexBox_JumpToMatch :call <SID>FindMatchingPair('v')<CR>
+onoremap <silent> <Plug>LatexBox_JumpToMatch v:call <SID>FindMatchingPair('o')<CR>
+
+" }}}
+
+" select inline math {{{
+" s:SelectInlineMath(seltype)
+" where seltype is either 'inner' or 'outer'
+function! s:SelectInlineMath(seltype)
+
+ let dollar_pat = '\\\@<!\$'
+
+ if s:HasSyntax('texMathZoneX')
+ call s:SearchAndSkipComments(dollar_pat, 'cbW')
+ elseif getline('.')[col('.') - 1] == '$'
+ call s:SearchAndSkipComments(dollar_pat, 'bW')
+ else
+ return
+ endif
+
+ if a:seltype == 'inner'
+ normal! l
+ endif
+
+ if visualmode() ==# 'V'
+ normal! V
+ else
+ normal! v
+ endif
+
+ call s:SearchAndSkipComments(dollar_pat, 'W')
+
+ if a:seltype == 'inner'
+ normal! h
+ endif
+endfunction
+
+vnoremap <silent> <Plug>LatexBox_SelectInlineMathInner
+ \ :<C-U>call <SID>SelectInlineMath('inner')<CR>
+vnoremap <silent> <Plug>LatexBox_SelectInlineMathOuter
+ \ :<C-U>call <SID>SelectInlineMath('outer')<CR>
+" }}}
+
+" select current environment {{{
+function! s:SelectCurrentEnv(seltype)
+ let [env, lnum, cnum, lnum2, cnum2] = LatexBox_GetCurrentEnvironment(1)
+ call cursor(lnum, cnum)
+ if a:seltype == 'inner'
+ if env =~ '^\'
+ call search('\\.\_\s*\S', 'eW')
+ else
+ call search('}\(\_\s*\[\_[^]]*\]\)\?\_\s*\S', 'eW')
+ endif
+ endif
+ if visualmode() ==# 'V'
+ normal! V
+ else
+ normal! v
+ endif
+ call cursor(lnum2, cnum2)
+ if a:seltype == 'inner'
+ call search('\S\_\s*', 'bW')
+ else
+ if env =~ '^\'
+ normal! l
+ else
+ call search('}', 'eW')
+ endif
+ endif
+endfunction
+vnoremap <silent> <Plug>LatexBox_SelectCurrentEnvInner :<C-U>call <SID>SelectCurrentEnv('inner')<CR>
+vnoremap <silent> <Plug>LatexBox_SelectCurrentEnvOuter :<C-U>call <SID>SelectCurrentEnv('outer')<CR>
+" }}}
+
+" Jump to the next braces {{{
+"
+function! LatexBox_JumpToNextBraces(backward)
+ let flags = ''
+ if a:backward
+ normal h
+ let flags .= 'b'
+ else
+ let flags .= 'c'
+ endif
+ if search('[][}{]', flags) > 0
+ normal l
+ endif
+ let prev = strpart(getline('.'), col('.') - 2, 1)
+ let next = strpart(getline('.'), col('.') - 1, 1)
+ if next =~ '[]}]' && prev !~ '[][{}]'
+ return "\<Right>"
+ else
+ return ''
+ endif
+endfunction
+" }}}
+
+" Table of Contents {{{
+
+" Special UTF-8 conversion
+function! s:ConvertBack(line)
+ let line = a:line
+ if !exists('g:LatexBox_plaintext_toc')
+ let line = substitute(line, "\\\\IeC\s*{\\\\'a}", 'รก', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`a}", 'ร ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^a}", 'ร ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจa}", 'รค', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"a}", 'รค', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'e}", 'รฉ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`e}", 'รจ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^e}", 'รช', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจe}", 'รซ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"e}", 'รซ', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'i}", 'รญ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`i}", 'รฎ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^i}", 'รฌ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจi}", 'รฏ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"i}", 'รฏ', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'o}", 'รณ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`o}", 'รฒ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^o}", 'รด', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจo}", 'รถ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"o}", 'รถ', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'u}", 'รบ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`u}", 'รน', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^u}", 'รป', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจu}", 'รผ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"u}", 'รผ', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'A}", 'ร', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`A}", 'ร€', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^A}", 'ร€', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจA}", 'ร„', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"A}", 'ร„', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'E}", 'ร‰', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`E}", 'รˆ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^E}", 'รŠ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจE}", 'ร‹', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"E}", 'ร‹', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'I}", 'ร', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`I}", 'รŽ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^I}", 'รŒ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจI}", 'ร', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"I}", 'ร', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'O}", 'ร“', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`O}", 'ร’', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^O}", 'ร”', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจO}", 'ร–', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"O}", 'ร–', 'g')
+
+ let line = substitute(line, "\\\\IeC\s*{\\\\'U}", 'รš', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\`U}", 'ร™', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\^U}", 'ร›', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\ยจU}", 'รœ', 'g')
+ let line = substitute(line, "\\\\IeC\s*{\\\\\"U}", 'รœ', 'g')
+ else
+ " substitute stuff like '\IeC{\"u}' (utf-8 umlauts in section heading)
+ " to plain 'u'
+ let line = substitute(line, "\\\\IeC\s*{\\\\.\\(.\\)}", '\1', 'g')
+ endif
+ return line
+endfunction
+
+function! s:ReadTOC(auxfile, texfile, ...)
+ let texfile = a:texfile
+ let prefix = fnamemodify(a:auxfile, ':p:h')
+
+ if a:0 != 2
+ let toc = []
+ let fileindices = { texfile : [] }
+ else
+ let toc = a:1
+ let fileindices = a:2
+ let fileindices[ texfile ] = []
+ endif
+
+ for line in readfile(a:auxfile)
+ let included = matchstr(line, '^\\@input{\zs[^}]*\ze}')
+ if included != ''
+ " append the input TOX to `toc` and `fileindices`
+ let newaux = prefix . '/' . included
+ let newtex = fnamemodify(fnamemodify(newaux, ':t:r') . '.tex', ':p')
+ call s:ReadTOC(newaux, newtex, toc, fileindices)
+ continue
+ endif
+
+ " Parse statements like:
+ " \@writefile{toc}{\contentsline {section}{\numberline {secnum}Section Title}{pagenumber}}
+ " \@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Section Title}}{pagenumber}}
+ " \@writefile{toc}{\contentsline {section}{\numberline {secnum}Section Title}{pagenumber}{otherstuff}}
+
+ let line = matchstr(line,
+ \ '\\@writefile{toc}{\\contentsline\s*\zs.*\ze}\s*$')
+ if empty(line)
+ continue
+ endif
+
+ let tree = LatexBox_TexToTree(line)
+
+ if len(tree) < 3
+ " unknown entry type: just skip it
+ continue
+ endif
+
+ " parse level
+ let level = tree[0][0]
+ " parse page
+ if !empty(tree[2])
+ let page = tree[2][0]
+ else
+ let page = ''
+ endif
+ " parse section number
+ if len(tree[1]) > 3 && empty(tree[1][1])
+ call remove(tree[1], 1)
+ endif
+ if len(tree[1]) > 1
+ if !empty(tree[1][1])
+ let secnum = LatexBox_TreeToTex(tree[1][1])
+ let secnum = s:ConvertBack(secnum)
+ let secnum = substitute(secnum, '\\\S\+\s', '', 'g')
+ let secnum = substitute(secnum, '\\\S\+{\(.\{-}\)}', '\1', 'g')
+ let secnum = substitute(secnum, '^{\+\|}\+$', '', 'g')
+ endif
+ let tree = tree[1][2:]
+ else
+ let secnum = ''
+ let tree = tree[1]
+ endif
+ " parse section title
+ let text = LatexBox_TreeToTex(tree)
+ let text = s:ConvertBack(text)
+ let text = substitute(text, '^{\+\|}\+$', '', 'g')
+
+ " add TOC entry
+ call add(fileindices[texfile], len(toc))
+ call add(toc, {'file': texfile,
+ \ 'level': level,
+ \ 'number': secnum,
+ \ 'text': text,
+ \ 'page': page})
+ endfor
+
+ return [toc, fileindices]
+
+endfunction
+
+function! LatexBox_TOC(...)
+
+ " Check if window already exists
+ let winnr = bufwinnr(bufnr('LaTeX TOC'))
+ if winnr >= 0
+ if a:0 == 0
+ silent execute winnr . 'wincmd w'
+ else
+ " Supplying an argument to this function causes toggling instead
+ " of jumping to the TOC window
+ if g:LatexBox_split_resize
+ silent exe "set columns-=" . g:LatexBox_split_width
+ endif
+ silent execute 'bwipeout' . bufnr('LaTeX TOC')
+ endif
+ return
+ endif
+
+ " Read TOC
+ let [toc, fileindices] = s:ReadTOC(LatexBox_GetAuxFile(),
+ \ LatexBox_GetMainTexFile())
+ let calling_buf = bufnr('%')
+
+ " Find closest section in current buffer
+ let closest_index = s:FindClosestSection(toc,fileindices)
+
+ " Create TOC window and set local settings
+ if g:LatexBox_split_resize
+ silent exe "set columns+=" . g:LatexBox_split_width
+ endif
+ silent exe g:LatexBox_split_side g:LatexBox_split_width . 'vnew LaTeX\ TOC'
+ let b:toc = toc
+ let b:toc_numbers = 1
+ let b:calling_win = bufwinnr(calling_buf)
+ setlocal filetype=latextoc
+
+ " Add TOC entries and jump to the closest section
+ for entry in toc
+ call append('$', entry['number'] . "\t" . entry['text'])
+ endfor
+ if !g:LatexBox_toc_hidehelp
+ call append('$', "")
+ call append('$', "<Esc>/q: close")
+ call append('$', "<Space>: jump")
+ call append('$', "<Enter>: jump and close")
+ call append('$', "s: hide numbering")
+ endif
+ 0delete _
+
+ execute 'normal! ' . (closest_index + 1) . 'G'
+
+ " Lock buffer
+ setlocal nomodifiable
+endfunction
+
+" Binary search for the closest section
+" return the index of the TOC entry
+function! s:FindClosestSection(toc, fileindices)
+ let file = expand('%:p')
+ if !has_key(a:fileindices, file)
+ echoe 'Current file is not included in main tex file ' . LatexBox_GetMainTexFile() . '.'
+ endif
+
+ let imax = len(a:fileindices[file])
+ let imin = 0
+ while imin < imax - 1
+ let i = (imax + imin) / 2
+ let tocindex = a:fileindices[file][i]
+ let entry = a:toc[tocindex]
+ let titlestr = entry['text']
+ let titlestr = escape(titlestr, '\')
+ let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g')
+ let [lnum, cnum] = searchpos('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'nW')
+ if lnum
+ let imax = i
+ else
+ let imin = i
+ endif
+ endwhile
+
+ return a:fileindices[file][imin]
+endfunction
+" }}}
+
+" TOC Command {{{
+command! LatexTOC call LatexBox_TOC()
+command! LatexTOCToggle call LatexBox_TOC(1)
+" }}}
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/bibtex.vim b/ftplugin/latex-suite/bibtex.vim
deleted file mode 100644
index 2cc81995..00000000
--- a/ftplugin/latex-suite/bibtex.vim
+++ /dev/null
@@ -1,265 +0,0 @@
-"=============================================================================
-" File: bibtex.vim
-" Function: BibT
-" Author: Alan G Isaac <aisaac@american.edu>
-" modified by Srinath Avadhanula for latex-suite.
-" License: Vim Charityware license.
-"=============================================================================
-
-" Fields:
-" Define what field type each letter denotes {{{
-"
-let s:w_standsfor = 'address'
-let s:a_standsfor = 'author'
-let s:b_standsfor = 'booktitle'
-let s:c_standsfor = 'chapter'
-let s:d_standsfor = 'edition'
-let s:e_standsfor = 'editor'
-let s:h_standsfor = 'howpublished'
-let s:i_standsfor = 'institution'
-let s:k_standsfor = 'isbn'
-let s:j_standsfor = 'journal'
-let s:m_standsfor = 'month'
-let s:n_standsfor = 'number'
-let s:o_standsfor = 'organization'
-let s:p_standsfor = 'pages'
-let s:q_standsfor = 'publisher'
-let s:r_standsfor = 'school'
-let s:s_standsfor = 'series'
-let s:t_standsfor = 'title'
-let s:u_standsfor = 'type'
-let s:v_standsfor = 'volume'
-let s:y_standsfor = 'year'
-let s:z_standsfor = 'note'
-
-" }}}
-" Define the fields required for the various entry types {{{
-"
-" s:{type}_required defines the required fields
-" s:{type}_optional1 defines common optional fields
-" s:{type}_optional2 defines uncommmon optional fields
-" s:{type}_retval defines the first line of the formatted bib entry.
-"
-let s:key='<+key+>'
-
-let s:{'article'}_required="atjy"
-let s:{'article'}_optional1="vnpm"
-let s:{'article'}_optional2="z" " z is note
-let s:{'article'}_retval = '@ARTICLE{' . s:key . ','."\n"
-
-let s:{'book'}_required="aetqy" " requires author *or* editor
-let s:{'book'}_optional1="wd"
-let s:{'book'}_optional2="vnsmz" " w is address, d is edition
-let s:{'book'}_extras="k" " isbn
-let s:{'book'}_retval = '@BOOK{' . s:key . ','."\n"
-
-let s:{'booklet'}_required="t"
-let s:{'booklet'}_optional1="ahy"
-let s:{'booklet'}_optional2="wmz" " w is address
-let s:{'booklet'}_retval = '@BOOKLET{' . s:key . ','."\n"
-
-let s:{'inbook'}_required="aetcpqy"
-let s:{'inbook'}_optional1="w" " w is address
-let s:{'inbook'}_optional2="vnsudmz" " d is edition
-let s:{'inbook'}_extras="k" " isbn
-let s:{'inbook'}_retval = '@INBOOK{' . s:key . ','."\n"
-
-let s:{'incollection'}_required="atbqy" " b is booktitle
-let s:{'incollection'}_optional1="cpw" " w is address, c is chapter
-let s:{'incollection'}_optional2="evnsudmz" " d is edition
-let s:{'incollection'}_extras="k" " isbn
-let s:{'incollection'}_retval = '@INCOLLECTION{' . s:key . ','."\n"
-
-let s:{'inproceedings'}_required="atby" " b is booktitle
-let s:{'inproceedings'}_optional1="epwoq" " w is address, q is publisher
-let s:{'inproceedings'}_optional2="vnsmz"
-let s:{'inproceedings'}_extras="k" " isbn
-let s:{'inproceedings'}_retval = '@INPROCEEDINGS{' . s:key . ','."\n"
-
-let s:{'conference'}_required="atby" " b is booktitle
-let s:{'conference'}_optional1="epwoq" " w is address, q is publisher
-let s:{'conference'}_optional2="vnsmz"
-let s:{'conference'}_extras="k" " isbn
-let s:{'conference'}_retval = '@CONFERENCE{' . s:key . ','."\n"
-
-let s:{'manual'}_required="t"
-let s:{'manual'}_optional1="ow"
-let s:{'manual'}_optional2="admyz" " w is address
-let s:{'manual'}_retval = '@MANUAL{' . s:key . ','."\n"
-
-let s:{'msthesis'}_required="atry" " r is school
-let s:{'msthesis'}_optional1="w" " w is address
-let s:{'msthesis'}_optional2="umz" " u is type, w is address
-let s:{'msthesis'}_retval = '@MASTERSTHESIS{' . s:key . ','."\n"
-
-let s:{'misc'}_required=""
-let s:{'misc'}_optional1="ath"
-let s:{'misc'}_optional2="myz"
-let s:{'misc'}_retval = '@MISC{' . s:key . ','."\n"
-
-let s:{'phdthesis'}_required="atry" " r is school
-let s:{'phdthesis'}_optional1="w" " w is address
-let s:{'phdthesis'}_optional2="umz" " u is type
-let s:{'phdthesis'}_retval = '@PHDTHESIS{' . s:key . ','."\n"
-
-let s:{'proceedings'}_required="ty"
-let s:{'proceedings'}_optional1="ewo" " w is address
-let s:{'proceedings'}_optional2="vnsmqz" " q is publisher
-let s:{'proceedings'}_retval = '@PROCEEDINGS{' . s:key . ','."\n"
-
-let s:{'techreport'}_required="atiy"
-let s:{'techreport'}_optional1="unw" " u is type, w is address
-let s:{'techreport'}_optional2="mz"
-let s:{'techreport'}_retval = '@TECHREPORT{' . s:key . ','."\n"
-
-let s:{'unpublished'}_required="atz"
-let s:{'unpublished'}_optional1="y"
-let s:{'unpublished'}_optional2="m"
-let s:{'unpublished'}_retval = '@UNPUBLISHED{' . s:key . ','."\n"
-
-" }}}
-
-if exists('s:done')
- finish
-endif
-let s:done = 1
-
-call IMAP ('BBB', "\<C-r>=BibT('', '', 0)\<CR>", 'bib')
-call IMAP ('BBL', "\<C-r>=BibT('', 'o', 0)\<CR>", 'bib')
-call IMAP ('BBH', "\<C-r>=BibT('', 'O', 0)\<CR>", 'bib')
-call IMAP ('BBX', "\<C-r>=BibT('', 'Ox', 0)\<CR>", 'bib')
-
-" BibT: function to generate a formatted bibtex entry {{{
-" three sample usages:
-" :call BibT() will request type choice
-" :call BibT("article") preferred, provides most common fields
-" :call BibT("article","ox") more optional fields (o) and extras (x)
-"
-" Input Arguments:
-" type: is one of the types listed above. (this should be a complete name, not
-" the acronym).
-" options: a string containing 0 or more of the letters 'oOx'
-" where
-" o: include a bib entry with first set of options
-" O: include a bib entry with extended options
-" x: incude bib entry with extra options
-" prompt: whether the fields are asked to be filled on the command prompt or
-" whether place-holders are used. when prompt == 1, then comman line
-" questions are used.
-"
-" Returns:
-" a string containing a formatted bib entry
-function BibT(type, options, prompt)
- if a:type != ''
- let choosetype = a:type
- else
- let types =
- \ 'article'."\n".
- \ 'booklet'."\n".
- \ 'book'."\n".
- \ 'conference'."\n".
- \ 'inbook'."\n".
- \ 'incollection'."\n".
- \ 'inproceedings'."\n".
- \ 'manual'."\n".
- \ 'msthesis'."\n".
- \ 'misc'."\n".
- \ 'phdthesis'."\n".
- \ 'proceedings'."\n".
- \ 'techreport'."\n".
- \ 'unpublished'
- let choosetype = Tex_ChooseFromPrompt(
- \ "Choose the type of bibliographic entry: \n" .
- \ Tex_CreatePrompt(types, 3, "\n") .
- \ "\nEnter number or filename :",
- \ types, "\n")
- if choosetype == ''
- let choosetype = 'article'
- endif
- if types !~ '^\|\n'.choosetype.'$\|\n'
- echomsg 'Please choose only one of the given types'
- return
- endif
- endif
- if a:options != ''
- let options = a:options
- else
- let options = ""
- endif
-
- let fields = ''
- let extras=""
- let retval = ""
-
- " define fields
- let fields = s:{choosetype}_required
- if options =~ 'o' && exists('s:'.choosetype.'_optional1')
- let fields = fields . s:{choosetype}_optional1
- endif
- if options =~ "O" && exists('s:'.choosetype.'_optional2')
- if options !~ 'o'&& exists('s:'.choosetype.'_optional1')
- let fields = fields . s:{choosetype}_optional1
- endif
- let fields = fields . s:{choosetype}_optional2
- endif
- if options =~ "x" && exists('s:'.choosetype.'_extras')
- let fields = fields . extras
- endif
- if exists('g:Bib_'.choosetype.'_options')
- let fields = fields . g:Bib_{choosetype}_options
- endif
-
- let retval = s:{choosetype}_retval
-
- let i = 0
- while i < strlen(fields)
- let field = strpart(fields, i, 1)
-
- if exists('s:'.field.'_standsfor')
- let field_name = s:{field}_standsfor
- let retval = retval.field_name." = {<++>},\n"
- endif
-
- let i = i + 1
- endwhile
-
- " If the user wants even more fine-tuning...
- if Tex_GetVarValue('Bib_'.choosetype.'_extrafields') != ''
-
- let extrafields = Tex_GetVarValue('Bib_'.choosetype.'_extrafields')
-
- let i = 1
- while 1
- let field_name = Tex_Strntok(extrafields, "\n", i)
- if field_name == ''
- break
- endif
-
- let retval = retval.field_name." = {<++>},\n"
-
- let i = i + 1
- endwhile
-
- endif
-
- let retval = retval.'otherinfo = {<++>}'."\n"
- let retval = retval."}<++>"."\n"
-
- return IMAP_PutTextWithMovement(retval)
-endfunction
-
-" }}}
-function! s:Input(prompt, ask) " {{{
- if a:ask == 1
- let retval = input(a:prompt)
- if retval == ''
- return "<++>"
- endif
- else
- return "<++>"
- endif
-endfunction
-
-" }}}
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/brackets.vim b/ftplugin/latex-suite/brackets.vim
deleted file mode 100644
index e1d69ae7..00000000
--- a/ftplugin/latex-suite/brackets.vim
+++ /dev/null
@@ -1,144 +0,0 @@
-" ==============================================================================
-" History: This was originally part of auctex.vim by Carl Mueller.
-" Srinath Avadhanula incorporated it into latex-suite with
-" significant modifications.
-" Parts of this file may be copyrighted by others as noted.
-" Description:
-" This ftplugin provides the following maps:
-" . <M-b> encloses the previous character in \mathbf{}
-" . <M-c> is polymorphic as follows:
-" Insert mode:
-" 1. If the previous character is a letter or number, then capitalize it and
-" enclose it in \mathcal{}
-" 2. otherwise insert \cite{}
-" Visual Mode:
-" 1. Enclose selection in \mathcal{}
-" . <M-l> is also polymorphic as follows:
-" If the character before typing <M-l> is one of '([{|<q', then do the
-" following:
-" 1. (<M-l> \left(\right
-" similarly for [, |
-" {<M-l> \left\{\right\}
-" 2. <<M-l> \langle\rangle
-" 3. q<M-l> \lefteqn{}
-" otherwise insert \label{}
-" . <M-i> inserts \item commands at the current cursor location depending on
-" the surrounding environment. For example, inside itemize, it will
-" insert a simple \item, but within a description, it will insert
-" \item[<+label+>] etc.
-"
-" These functions make it extremeley easy to do all the \left \right stuff in
-" latex.
-" ==============================================================================
-
-" Avoid reinclusion.
-if exists('b:did_brackets')
- finish
-endif
-let b:did_brackets = 1
-
-" define the funtions only once.
-if exists('*Tex_MathBF')
- finish
-endif
-
-" Tex_MathBF: encloses te previous letter/number in \mathbf{} {{{
-" Description:
-function! Tex_MathBF()
- return "\<Left>\\mathbf{\<Right>}"
-endfunction " }}}
-" Tex_MathCal: enclose the previous letter/number in \mathcal {{{
-" Description:
-" if the last character is not a letter/number, then insert \cite{}
-function! Tex_MathCal()
- let line = getline(line("."))
- let char = line[col(".")-2]
-
- if char =~ '[a-zA-Z0-9]'
- return "\<BS>".'\mathcal{'.toupper(char).'}'
- else
- return IMAP_PutTextWithMovement('\cite{<++>}<++>')
- endif
-endfunction
-" }}}
-" Tex_LeftRight: maps <M-l> in insert mode. {{{
-" Description:
-" This is a polymorphic function, which maps the behaviour of <M-l> in the
-" following way:
-" If the character before typing <M-l> is one of '([{|<q', then do the
-" following:
-" 1. (<M-l> \left(<++>\right<++>
-" similarly for [, |
-" {<M-l> \left\{<++>\right\}<++>
-" 2. <<M-l> \langle<++>\rangle<++>
-" 3. q<M-l> \lefteqn{<++>}<++>
-" otherwise insert \label{<++>}<++>
-function! Tex_LeftRight()
- let line = getline(line("."))
- let char = line[col(".")-2]
- let previous = line[col(".")-3]
-
- let matchedbrackets = '()[]{}||'
- if char =~ '(\|\[\|{\||'
- let add = ''
- if char =~ '{'
- let add = "\\"
- endif
- let rhs = matchstr(matchedbrackets, char.'\zs.\ze')
- return "\<BS>".IMAP_PutTextWithMovement('\left'.add.char.'<++>\right'.add.rhs.'<++>')
- elseif char == '<'
- return "\<BS>".IMAP_PutTextWithMovement('\langle <++>\rangle<++>')
- elseif char == 'q'
- return "\<BS>".IMAP_PutTextWithMovement('\lefteqn{<++>}<++>')
- else
- return IMAP_PutTextWithMovement('\label{<++>}<++>')
- endif
-endfunction " }}}
-" Tex_PutLeftRight: maps <M-l> in normal mode {{{
-" Description:
-" Put \left...\right in front of the matched brackets.
-function! Tex_PutLeftRight()
- let previous = getline(line("."))[col(".") - 2]
- let char = getline(line("."))[col(".") - 1]
- if previous == '\'
- if char == '{'
- exe "normal ileft\\\<Esc>l%iright\\\<Esc>l%"
- elseif char == '}'
- exe "normal iright\\\<Esc>l%ileft\\\<Esc>l%"
- endif
- elseif char =~ '\[\|('
- exe "normal i\\left\<Esc>l%i\\right\<Esc>l%"
- elseif char =~ '\]\|)'
- exe "normal i\\right\<Esc>l%i\\left\<Esc>l%"
- endif
-endfunction " }}}
-
-" Provide <plug>'d mapping for easy user customization. {{{
-inoremap <silent> <Plug>Tex_MathBF <C-r>=Tex_MathBF()<CR>
-inoremap <silent> <Plug>Tex_MathCal <C-r>=Tex_MathCal()<CR>
-inoremap <silent> <Plug>Tex_LeftRight <C-r>=Tex_LeftRight()<CR>
-vnoremap <silent> <Plug>Tex_MathBF <C-C>`>a}<Esc>`<i\mathbf{<Esc>
-vnoremap <silent> <Plug>Tex_MathCal <C-C>`>a}<Esc>`<i\mathcal{<Esc>
-nnoremap <silent> <Plug>Tex_LeftRight :call Tex_PutLeftRight()<CR>
-
-" }}}
-" Tex_SetBracketingMaps: create mappings for the current buffer {{{
-function! <SID>Tex_SetBracketingMaps()
-
- call Tex_MakeMap('<M-b>', '<Plug>Tex_MathBF', 'i', '<buffer> <silent>')
- call Tex_MakeMap('<M-c>', '<Plug>Tex_MathCal', 'i', '<buffer> <silent>')
- call Tex_MakeMap('<M-l>', '<Plug>Tex_LeftRight', 'i', '<buffer> <silent>')
- call Tex_MakeMap('<M-b>', '<Plug>Tex_MathBF', 'v', '<buffer> <silent>')
- call Tex_MakeMap('<M-c>', '<Plug>Tex_MathCal', 'v', '<buffer> <silent>')
- call Tex_MakeMap('<M-l>', '<Plug>Tex_LeftRight', 'n', '<buffer> <silent>')
-
-endfunction
-" }}}
-
-augroup LatexSuite
- au LatexSuite User LatexSuiteFileType
- \ call Tex_Debug('brackets.vim: Catching LatexSuiteFileType event', 'brak') |
- \ call <SID>Tex_SetBracketingMaps()
-augroup END
-
-" vim:fdm=marker
diff --git a/ftplugin/latex-suite/compiler.vim b/ftplugin/latex-suite/compiler.vim
deleted file mode 100644
index 28213fab..00000000
--- a/ftplugin/latex-suite/compiler.vim
+++ /dev/null
@@ -1,874 +0,0 @@
-"=============================================================================
-" File: compiler.vim
-" Author: Srinath Avadhanula
-" Created: Tue Apr 23 05:00 PM 2002 PST
-"
-" Description: functions for compiling/viewing/searching latex documents
-"=============================================================================
-
-" Tex_SetTeXCompilerTarget: sets the 'target' for the next call to Tex_RunLaTeX() {{{
-function! Tex_SetTeXCompilerTarget(type, target)
- call Tex_Debug("+Tex_SetTeXCompilerTarget: setting target to [".a:target."] for ".a:type."r", "comp")
-
- if a:target == ''
- let target = Tex_GetVarValue('Tex_DefaultTargetFormat')
- let target = input('Enter the target format for '.a:type.'r: ', target)
- else
- let target = a:target
- endif
- if target == ''
- let target = 'dvi'
- endif
-
- let targetRule = Tex_GetVarValue('Tex_'.a:type.'Rule_'.target)
-
- if targetRule != ''
- if a:type == 'Compile'
- let &l:makeprg = escape(targetRule, Tex_GetVarValue('Tex_EscapeChars'))
- elseif a:type == 'View'
- let s:viewer = targetRule
- endif
- let s:target = target
-
- elseif Tex_GetVarValue('Tex_'.a:type.'RuleComplete_'.target) != ''
- let s:target = target
-
- elseif a:type == 'View' && has('macunix')
- " On the mac, we can have empty view rules, so do not complain when
- " both Tex_ViewRule_target and Tex_ViewRuleComplete_target are
- " empty. On other platforms, we will complain... see below.
- let s:target = target
-
- else
- let s:origdir = fnameescape(getcwd())
- exe 'cd '.fnameescape(expand('%:p:h'))
- if !Tex_GetVarValue('Tex_UseMakefile') || (glob('makefile*') == '' && glob('Makefile*') == '')
- if has('gui_running')
- call confirm(
- \'No '.a:type.' rule defined for target '.target."\n".
- \'Please specify a rule in $VIMRUNTIME/ftplugin/tex/texrc'."\n".
- \' :help Tex_'.a:type.'Rule_format'."\n".
- \'for more information',
- \"&ok", 1, 'Warning')
- else
- call input(
- \'No '.a:type.' rule defined for target '.target."\n".
- \'Please specify a rule in $VIMRUNTIME/ftplugin/tex/texrc'."\n".
- \' :help Tex_'.a:type.'Rule_format'."\n".
- \'for more information'
- \)
- endif
- else
- echomsg 'Assuming target is for makefile'
- let s:target = target
- endif
- exe 'cd '.s:origdir
- endif
-endfunction
-
-function! SetTeXTarget(...)
- if a:0 < 1
- let target = Tex_GetVarValue('Tex_DefaultTargetFormat')
- let target = input('Enter the target format for compiler and viewer: ', target)
- else
- let target = a:1
- endif
- if target == ''
- let target = 'dvi'
- endif
-
- call Tex_SetTeXCompilerTarget('Compile', target)
- call Tex_SetTeXCompilerTarget('View', target)
-endfunction
-
-com! -nargs=1 TCTarget :call Tex_SetTeXCompilerTarget('Compile', <f-args>)
-com! -nargs=1 TVTarget :call Tex_SetTeXCompilerTarget('View', <f-args>)
-com! -nargs=? TTarget :call SetTeXTarget(<f-args>)
-
-" }}}
-" Tex_CompileLatex: compiles the present file. {{{
-" Description:
-function! Tex_CompileLatex()
- if &ft != 'tex'
- echo "calling Tex_RunLaTeX from a non-tex file"
- return
- end
-
- " close any preview windows left open.
- pclose!
-
- let s:origdir = fnameescape(getcwd())
-
- " Find the main file corresponding to this file. Always cd to the
- " directory containing the file to avoid problems with the directory
- " containing spaces.
- " Latex on linux seems to be unable to handle file names with spaces at
- " all! Therefore for the moment, do not attempt to handle spaces in the
- " file name.
- if exists('b:fragmentFile')
- let mainfname = expand('%:p:t')
- call Tex_CD(expand('%:p:h'))
- else
- let mainfname = Tex_GetMainFileName(':p:t')
- call Tex_CD(Tex_GetMainFileName(':p:h'))
- end
-
- call Tex_Debug('Tex_CompileLatex: getting mainfname = ['.mainfname.'] from Tex_GetMainFileName', 'comp')
-
- " if a makefile exists and the user wants to use it, then use that
- " irrespective of whether *.latexmain exists or not. mainfname is still
- " extracted from *.latexmain (if possible) log file name depends on the
- " main file which will be compiled.
- if Tex_GetVarValue('Tex_UseMakefile') && (glob('makefile') != '' || glob('Makefile') != '')
- let _makeprg = &l:makeprg
- call Tex_Debug("Tex_CompileLatex: using the makefile in the current directory", "comp")
- let &l:makeprg = 'make $*'
- if exists('s:target')
- call Tex_Debug('Tex_CompileLatex: execing [make! '.s:target.']', 'comp')
- exec 'make! '.s:target
- else
- call Tex_Debug('Tex_CompileLatex: execing [make!]', 'comp')
- exec 'make!'
- endif
- let &l:makeprg = _makeprg
- else
- " If &makeprg has something like "$*.ps", it means that it wants the
- " file-name without the extension... Therefore remove it.
- if &makeprg =~ '\$\*\.\w\+'
- let mainfname = fnamemodify(mainfname, ':r')
- endif
- call Tex_Debug('Tex_CompileLatex: execing [make! '.mainfname.']', 'comp')
- exec 'make! '.mainfname
- endif
- redraw!
-
- exe 'cd '.s:origdir
-endfunction " }}}
-" Tex_RunLaTeX: compilation function {{{
-" this function runs the latex command on the currently open file. often times
-" the file being currently edited is only a fragment being \input'ed into some
-" master tex file. in this case, make a file called mainfile.latexmain in the
-" directory containig the file. in other words, if the current file is
-" ~/thesis/chapter.tex
-" so that doing "latex chapter.tex" doesnt make sense, then make a file called
-" main.tex.latexmain
-" in the ~/thesis directory. this will then run "latex main.tex" when
-" Tex_RunLaTeX() is called.
-function! Tex_RunLaTeX()
- call Tex_Debug('+Tex_RunLaTeX, b:fragmentFile = '.exists('b:fragmentFile'), 'comp')
-
- let dir = expand("%:p:h").'/'
- let s:origdir = fnameescape(getcwd())
- call Tex_CD(expand("%:p:h"))
-
- let initTarget = s:target
-
- " first get the dependency chain of this format.
- call Tex_Debug("Tex_RunLaTeX: compiling to target [".s:target."]", "comp")
-
- if Tex_GetVarValue('Tex_FormatDependency_'.s:target) != ''
- let dependency = Tex_GetVarValue('Tex_FormatDependency_'.s:target)
- if dependency !~ ','.s:target.'$'
- let dependency = dependency.','.s:target
- endif
- else
- let dependency = s:target
- endif
-
- call Tex_Debug('Tex_RunLaTeX: getting dependency chain = ['.dependency.']', 'comp')
-
- " now compile to the final target format via each dependency.
- let i = 1
- while Tex_Strntok(dependency, ',', i) != ''
- let s:target = Tex_Strntok(dependency, ',', i)
-
- call Tex_SetTeXCompilerTarget('Compile', s:target)
- call Tex_Debug('Tex_RunLaTeX: setting target to '.s:target, 'comp')
-
- if Tex_GetVarValue('Tex_MultipleCompileFormats') =~ '\<'.s:target.'\>'
- call Tex_Debug("Tex_RunLaTeX: compiling file multiple times via Tex_CompileMultipleTimes", "comp")
- call Tex_CompileMultipleTimes()
- else
- call Tex_Debug("Tex_RunLaTeX: compiling file once via Tex_CompileLatex", "comp")
- call Tex_CompileLatex()
- endif
-
- let errlist = Tex_GetErrorList()
- call Tex_Debug("Tex_RunLaTeX: errlist = [".errlist."]", "comp")
-
- " If there are any errors, then break from the rest of the steps
- if errlist =~ '\v(error|warning)'
- call Tex_Debug('Tex_RunLaTeX: There were errors in compiling, breaking chain...', 'comp')
- break
- endif
-
- let i = i + 1
- endwhile
-
- let s:target = initTarget
- let s:origwinnum = winnr()
- call Tex_SetupErrorWindow()
-
- exe 'cd '.s:origdir
- call Tex_Debug("-Tex_RunLaTeX", "comp")
-endfunction
-
-" }}}
-" Tex_ViewLaTeX: opens viewer {{{
-" Description: opens the DVI viewer for the file being currently edited.
-" Again, if the current file is a \input in a master file, see text above
-" Tex_RunLaTeX() to see how to set this information.
-function! Tex_ViewLaTeX()
- if &ft != 'tex'
- echo "calling Tex_ViewLaTeX from a non-tex file"
- return
- end
-
- let s:origdir = fnameescape(getcwd())
-
- " If b:fragmentFile is set, it means this file was compiled as a fragment
- " using Tex_PartCompile, which means that we want to ignore any
- " *.latexmain or makefile's.
- if !exists('b:fragmentFile')
- " cd to the location of the file to avoid having to deal with spaces
- " in the directory name.
- let mainfname = Tex_GetMainFileName(':p:t:r')
- call Tex_CD(Tex_GetMainFileName(':p:h'))
- else
- let mainfname = expand("%:p:t:r")
- call Tex_CD(expand("%:p:h"))
- endif
-
- if Tex_GetVarValue('Tex_ViewRuleComplete_'.s:target) != ''
-
- let execString = Tex_GetVarValue('Tex_ViewRuleComplete_'.s:target)
- let execString = substitute(execString, '{v:servername}', v:servername, 'g')
-
- elseif has('win32')
- " unfortunately, yap does not allow the specification of an external
- " editor from the command line. that would have really helped ensure
- " that this particular vim and yap are connected.
- let execString = 'start '.s:viewer.' "$*.'.s:target.'"'
-
- elseif (has('macunix') && Tex_GetVarValue('Tex_TreatMacViewerAsUNIX') != 1)
-
- if strlen(s:viewer)
- let appOpt = '-a '
- else
- let appOpt = ''
- endif
- let execString = 'open '.appOpt.s:viewer.' $*.'.s:target
-
- else
- " taken from Dimitri Antoniou's tip on vim.sf.net (tip #225).
- " slight change to actually use the current servername instead of
- " hardcoding it as xdvi.
- " Using an option for specifying the editor in the command line
- " because that seems to not work on older bash'es.
- if s:target == 'dvi'
-
- if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
- \ v:servername != '' &&
- \ s:viewer =~ '^ *xdvik\?\( \|$\)'
-
- let execString = s:viewer.' -editor "gvim --servername '.v:servername.
- \ ' --remote-silent +\%l \%f" $*.dvi'
-
- elseif Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
- \ s:viewer =~ '^ *kdvi\( \|$\)'
-
- let execString = s:viewer.' --unique $*.dvi'
-
- else
-
- let execString = s:viewer.' $*.dvi'
-
- endif
-
- else
-
- let execString = s:viewer.' $*.'.s:target
-
- endif
-
- if( Tex_GetVarValue('Tex_ExecuteUNIXViewerInForeground') != 1 )
- let execString = execString.' &'
- endif
-
- end
-
- let execString = substitute(execString, '\V$*', mainfname, 'g')
- call Tex_Debug("Tex_ViewLaTeX: execString = ".execString, "comp")
-
- exec 'silent! !'.execString
-
- if !has('gui_running')
- redraw!
- endif
-
- exe 'cd '.s:origdir
-endfunction
-
-" }}}
-" Tex_ForwardSearchLaTeX: searches for current location in dvi file. {{{
-" Description: if the DVI viewer is compatible, then take the viewer to that
-" position in the dvi file. see docs for Tex_RunLaTeX() to set a
-" master file if this is an \input'ed file.
-" Tip: With YAP on Windows, it is possible to do forward and inverse searches
-" on DVI files. to do forward search, you'll have to compile the file
-" with the --src-specials option. then set the following as the command
-" line in the 'view/options/inverse search' dialog box:
-" gvim --servername LATEX --remote-silent +%l "%f"
-" For inverse search, if you are reading this, then just pressing \ls
-" will work.
-function! Tex_ForwardSearchLaTeX()
- if &ft != 'tex'
- echo "calling Tex_ForwardSeachLaTeX from a non-tex file"
- return
- end
-
- if Tex_GetVarValue('Tex_ViewRule_'.s:target) == ''
- return
- endif
- let viewer = Tex_GetVarValue('Tex_ViewRule_'.s:target)
-
- let s:origdir = fnameescape(getcwd())
-
- let mainfname = Tex_GetMainFileName(':t')
- let mainfnameRoot = fnamemodify(Tex_GetMainFileName(), ':t:r')
- let mainfnameFull = Tex_GetMainFileName(':p:r')
- " cd to the location of the file to avoid problems with directory name
- " containing spaces.
- call Tex_CD(Tex_GetMainFileName(':p:h'))
-
- " inverse search tips taken from Dimitri Antoniou's tip and Benji Fisher's
- " tips on vim.sf.net (vim.sf.net tip #225)
- if (has('win32') && (viewer =~? '^ *yap\( \|$\)'))
-
- let execString = 'silent! !start '. viewer.' -s '.line('.').expand('%').' '.mainfnameRoot
-
-
- elseif (has('macunix') && (viewer =~ '^ *\(Skim\|PDFView\|TeXniscope\)\( \|$\)'))
- " We're on a Mac using a traditional Mac viewer
-
- if viewer =~ '^ *Skim'
-
- let execString = 'silent! !/Applications/Skim.app/Contents/SharedSupport/displayline '.
- \ line('.').' "'.mainfnameFull.'.'.s:target.'" "'.expand("%:p").'"'
-
- elseif viewer =~ '^ *PDFView'
-
- let execString = 'silent! !/Applications/PDFView.app/Contents/MacOS/gotoline.sh '.
- \ line('.').' "'.mainfnameFull.'.'.s:target.'" "'.expand("%:p").'"'
-
- elseif viewer =~ '^ *TeXniscope'
-
- let execString = 'silent! !/Applications/TeXniscope.app/Contents/Resources/forward-search.sh '.
- \ line('.').' "'.expand("%:p").'" "'.mainfnameFull.'.'.s:target.'"'
-
- endif
-
- else
- " We're either UNIX or Mac and using a UNIX-type viewer
-
- " Check for the special DVI viewers first
- if viewer =~ '^ *\(xdvi\|xdvik\|kdvi\|okular\)\( \|$\)'
-
- if Tex_GetVarValue('Tex_UseEditorSettingInDVIViewer') == 1 &&
- \ exists('v:servername') &&
- \ viewer =~ '^ *xdvik\?\( \|$\)'
-
- let execString = 'silent! !'.viewer.' -name xdvi -sourceposition "'.line('.').' '.expand("%").'"'.
- \ ' -editor "gvim --servername '.v:servername.' --remote-silent +\%l \%f" '.
- \ mainfnameRoot.'.dvi'
-
- elseif viewer =~ '^ *kdvi'
-
- let execString = 'silent! !'.viewer.' --unique file:'.mainfnameRoot.'.dvi\#src:'.line('.').expand("%")
-
- elseif viewer =~ '^ *xdvik\?\( \|$\)'
-
- let execString = 'silent! !'.viewer.' -name xdvi -sourceposition "'.line('.').' '.expand("%").'" '.mainfnameRoot.'.dvi'
-
- elseif viewer =~ '^ *okular'
-
- let execString = 'silent! !'.viewer.' --unique '.mainfnameRoot.'.'.s:target.'\#src:'.line('.').expand("%:p")
-
- endif
-
- else
- " We must be using a generic UNIX viewer
- " syntax is: viewer TARGET_FILE LINE_NUMBER SOURCE_FILE
-
- let execString = 'silent! !'.viewer.' "'.mainfnameRoot.'.'.s:target.'" '.line('.').' "'.expand('%').'"'
-
- endif
-
- " See if we should add &. On Mac (at least in MacVim), it seems
- " like this should NOT be added...
- if( Tex_GetVarValue('Tex_ExecuteUNIXViewerInForeground') != 1 )
- let execString = execString.' &'
- endif
-
- endif
-
- call Tex_Debug("Tex_ForwardSearchLaTeX: execString = ".execString, "comp")
- execute execString
- if !has('gui_running')
- redraw!
- endif
-
- exe 'cd '.s:origdir
-endfunction
-
-" }}}
-
-" ==============================================================================
-" Functions for compiling parts of a file.
-" ==============================================================================
-" Tex_PartCompile: compiles selected fragment {{{
-" Description: creates a temporary file from the selected fragment of text
-" prepending the preamble and \end{document} and then asks Tex_RunLaTeX() to
-" compile it.
-function! Tex_PartCompile() range
- call Tex_Debug('+Tex_PartCompile', 'comp')
-
- " Get a temporary file in the same directory as the file from which
- " fragment is being extracted. This is to enable the use of relative path
- " names in the fragment.
- let tmpfile = Tex_GetTempName(expand('%:p:h'))
-
- " Remember all the temp files and for each temp file created, remember
- " where the temp file came from.
- let s:Tex_NumTempFiles = (exists('s:Tex_NumTempFiles') ? s:Tex_NumTempFiles + 1 : 1)
- let s:Tex_TempFiles = (exists('s:Tex_TempFiles') ? s:Tex_TempFiles : '')
- \ . tmpfile."\n"
- let s:Tex_TempFile_{s:Tex_NumTempFiles} = tmpfile
- " TODO: For a function Tex_RestoreFragment which restores a temp file to
- " its original location.
- let s:Tex_TempFileOrig_{s:Tex_NumTempFiles} = expand('%:p')
- let s:Tex_TempFileRange_{s:Tex_NumTempFiles} = a:firstline.','.a:lastline
-
- " Set up an autocmd to clean up the temp files when Vim exits.
- if Tex_GetVarValue('Tex_RemoveTempFiles')
- augroup RemoveTmpFiles
- au!
- au VimLeave * :call Tex_RemoveTempFiles()
- augroup END
- endif
-
- " If mainfile exists open it in tiny window and extract preamble there,
- " otherwise do it from current file
- let mainfile = Tex_GetMainFileName(":p")
- exe 'bot 1 split '.escape(mainfile, ' ')
- exe '1,/\s*\\begin{document}/w '.tmpfile
- wincmd q
-
- exe a:firstline.','.a:lastline."w! >> ".tmpfile
-
- " edit the temporary file
- exec 'drop '.tmpfile
-
- " append the \end{document} line.
- $ put ='\end{document}'
- w
-
- " set this as a fragment file.
- let b:fragmentFile = 1
-
- silent! call Tex_RunLaTeX()
-endfunction " }}}
-" Tex_RemoveTempFiles: cleans up temporary files created during part compilation {{{
-" Description: During part compilation, temporary files containing the
-" visually selected text are created. These files need to be
-" removed when Vim exits to avoid "file leakage".
-function! Tex_RemoveTempFiles()
- if !exists('s:Tex_NumTempFiles') || !Tex_GetVarValue('Tex_RemoveTempFiles')
- return
- endif
- let i = 1
- while i <= s:Tex_NumTempFiles
- let tmpfile = s:Tex_TempFile_{i}
- " Remove the tmp file and all other associated files such as the
- " .log files etc.
- call Tex_DeleteFile(fnamemodify(tmpfile, ':p:r').'.*')
- let i = i + 1
- endwhile
-endfunction " }}}
-
-" ==============================================================================
-" Compiling a file multiple times to resolve references/citations etc.
-" ==============================================================================
-" Tex_CompileMultipleTimes: The main function {{{
-" Description: compiles a file multiple times to get cross-references right.
-function! Tex_CompileMultipleTimes()
- " Just extract the root without any extension because we want to construct
- " the log file names etc from it.
- let s:origdir = fnameescape(getcwd())
- let mainFileName_root = Tex_GetMainFileName(':p:t:r')
- call Tex_CD(Tex_GetMainFileName(':p:h'))
-
- " First ignore undefined references and the
- " "rerun to get cross-references right" message from
- " the compiler output.
- let origlevel = Tex_GetVarValue('Tex_IgnoreLevel')
- let origpats = Tex_GetVarValue('Tex_IgnoredWarnings')
-
- let g:Tex_IgnoredWarnings = g:Tex_IgnoredWarnings."\n"
- \ . 'Reference %.%# undefined'."\n"
- \ . 'Rerun to get cross-references right'
- TCLevel 1000
-
- let idxFileName = mainFileName_root.'.idx'
- let auxFileName = mainFileName_root.'.aux'
-
- let runCount = 0
- let needToRerun = 1
- while needToRerun == 1 && runCount < 5
- " assume we need to run only once.
- let needToRerun = 0
-
- let idxlinesBefore = Tex_CatFile(idxFileName)
- let auxlinesBefore = Tex_GetAuxFile(auxFileName)
-
- " first run latex.
- echomsg "latex run number : ".(runCount+1)
- call Tex_Debug("Tex_CompileMultipleTimes: latex run number : ".(runCount+1), "comp")
- silent! call Tex_CompileLatex()
-
- " If there are errors in any latex compilation step, immediately
- " return. For now, do not bother with warnings because those might go
- " away after compiling again or after bibtex is run etc.
- let errlist = Tex_GetErrorList()
- call Tex_Debug("Tex_CompileMultipleTimes: errors = [".errlist."]", "comp")
-
- if errlist =~ 'error'
- let g:Tex_IgnoredWarnings = origpats
- exec 'TCLevel '.origlevel
-
- return
- endif
-
- let idxlinesAfter = Tex_CatFile(idxFileName)
-
- " If .idx file changed, then run makeindex to generate the new .ind
- " file and remember to rerun latex.
- if runCount == 0 && glob(idxFileName) != '' && idxlinesBefore != idxlinesAfter
- echomsg "Running makeindex..."
- let temp_mp = &mp | let &mp = Tex_GetVarValue('Tex_MakeIndexFlavor')
- exec 'silent! make '.mainFileName_root
- let &mp = temp_mp
-
- let needToRerun = 1
- endif
-
- " The first time we see if we need to run bibtex and if the .bbl file
- " changes, we will rerun latex.
- if runCount == 0 && Tex_IsPresentInFile('\\bibdata', mainFileName_root.'.aux')
- let bibFileName = mainFileName_root.'.bbl'
-
- let biblinesBefore = Tex_CatFile(bibFileName)
-
- echomsg "Running '".Tex_GetVarValue('Tex_BibtexFlavor')."' ..."
- let temp_mp = &mp | let &mp = Tex_GetVarValue('Tex_BibtexFlavor')
- exec 'silent! make '.mainFileName_root
- let &mp = temp_mp
-
- let biblinesAfter = Tex_CatFile(bibFileName)
-
- " If the .bbl file changed after running bibtex, we need to
- " latex again.
- if biblinesAfter != biblinesBefore
- echomsg 'Need to rerun because bibliography file changed...'
- call Tex_Debug('Tex_CompileMultipleTimes: Need to rerun because bibliography file changed...', 'comp')
- let needToRerun = 1
- endif
- endif
-
- " check if latex asks us to rerun
- let auxlinesAfter = Tex_GetAuxFile(auxFileName)
- if auxlinesAfter != auxlinesBefore
- echomsg "Need to rerun because the AUX file changed..."
- call Tex_Debug("Tex_CompileMultipleTimes: Need to rerun to get cross-references right...", 'comp')
- let needToRerun = 1
- endif
-
- let runCount = runCount + 1
- endwhile
-
- redraw!
- call Tex_Debug("Tex_CompileMultipleTimes: Ran latex ".runCount." time(s)", "comp")
- echomsg "Ran latex ".runCount." time(s)"
-
- let g:Tex_IgnoredWarnings = origpats
- exec 'TCLevel '.origlevel
- " After all compiler calls are done, reparse the .log file for
- " errors/warnings to handle the situation where the clist might have been
- " emptied because of bibtex/makeindex being run as the last step.
- exec 'silent! cfile '.mainFileName_root.'.log'
-
- exe 'cd '.s:origdir
-endfunction " }}}
-" Tex_GetAuxFile: get the contents of the AUX file {{{
-" Description: get the contents of the AUX file recursively including any
-" @\input'ted AUX files.
-function! Tex_GetAuxFile(auxFile)
- if !filereadable(a:auxFile)
- return ''
- endif
-
- let auxContents = Tex_CatFile(a:auxFile)
- let pattern = '@\input{\(.\{-}\)}'
-
- let auxContents = substitute(auxContents, pattern, '\=Tex_GetAuxFile(submatch(1))', 'g')
-
- return auxContents
-endfunction " }}}
-
-" ==============================================================================
-" Helper functions for
-" . viewing the log file in preview mode.
-" . syncing the display between the quickfix window and preview window
-" . going to the correct line _and column_ number from from the quick fix
-" window.
-" ==============================================================================
-" Tex_SetupErrorWindow: sets up the cwindow and preview of the .log file {{{
-" Description:
-function! Tex_SetupErrorWindow()
- let mainfname = Tex_GetMainFileName()
-
- let winnum = winnr()
-
- " close the quickfix window before trying to open it again, otherwise
- " whether or not we end up in the quickfix window after the :cwindow
- " command is not fixed.
- cclose
- cwindow
- " create log file name from mainfname
- let mfnlog = fnamemodify(mainfname, ":t:r").'.log'
- call Tex_Debug('Tex_SetupErrorWindow: mfnlog = '.mfnlog, 'comp')
- " if we moved to a different window, then it means we had some errors.
- if winnum != winnr()
- if Tex_GetVarValue('Tex_ShowErrorContext')
- call Tex_UpdatePreviewWindow(mfnlog)
- exe 'nnoremap <buffer> <silent> j j:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
- exe 'nnoremap <buffer> <silent> k k:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
- exe 'nnoremap <buffer> <silent> <up> <up>:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
- exe 'nnoremap <buffer> <silent> <down> <down>:call Tex_UpdatePreviewWindow("'.mfnlog.'")<CR>'
- endif
- exe 'nnoremap <buffer> <silent> <enter> :call Tex_GotoErrorLocation("'.mfnlog.'")<CR>'
-
- setlocal nowrap
-
- " resize the window to just fit in with the number of lines.
- exec ( line('$') < 4 ? line('$') : 4 ).' wincmd _'
- if Tex_GetVarValue('Tex_GotoError') == 1
- call Tex_GotoErrorLocation(mfnlog)
- else
- exec s:origwinnum.' wincmd w'
- endif
- endif
-
-endfunction " }}}
-" Tex_PositionPreviewWindow: positions the preview window correctly. {{{
-" Description:
-" The purpose of this function is to count the number of times an error
-" occurs on the same line. or in other words, if the current line is
-" something like |10 error|, then we want to count the number of
-" lines in the quickfix window before this line which also contain lines
-" like |10 error|.
-"
-function! Tex_PositionPreviewWindow(filename)
-
- if getline('.') !~ '|\d\+ \(error\|warning\)|'
- if !search('|\d\+ \(error\|warning\)|')
- call Tex_Debug("not finding error pattern anywhere in quickfix window :".bufname(bufnr('%')),
- \ 'comp')
- pclose!
- return
- endif
- endif
-
- " extract the error pattern (something like 'file.tex|10 error|') on the
- " current line.
- let errpat = matchstr(getline('.'), '^\f*|\d\+ \(error\|warning\)|\ze')
- let errfile = matchstr(getline('.'), '^\f*\ze|\d\+ \(error\|warning\)|')
- " extract the line number from the error pattern.
- let linenum = matchstr(getline('.'), '|\zs\d\+\ze \(error\|warning\)|')
-
- " if we are on an error, then count the number of lines before this in the
- " quickfix window with an error on the same line.
- if errpat =~ 'error|$'
- " our location in the quick fix window.
- let errline = line('.')
-
- " goto the beginning of the quickfix window and begin counting the lines
- " which show an error on the same line.
- 0
- let numrep = 0
- while 1
- " if we are on the same kind of error line, then means we have another
- " line containing the same error pattern.
- if getline('.') =~ errpat
- let numrep = numrep + 1
- normal! 0
- endif
- " if we have reached the original location in the quick fix window,
- " then break.
- if line('.') == errline
- break
- else
- " otherwise, search for the next line which contains the same
- " error pattern again. goto the end of the current line so we
- " dont count this line again.
- normal! $
- call search(errpat, 'W')
- endif
- endwhile
- else
- let numrep = 1
- endif
-
- if getline('.') =~ '|\d\+ warning|'
- let searchpat = escape(matchstr(getline('.'), '|\d\+ warning|\s*\zs.*'), '\ ')
- else
- let searchpat = 'l\.'.linenum
- endif
-
- " We first need to be in the scope of the correct file in the .log file.
- " This is important for example, when a.tex and b.tex both have errors on
- " line 9 of the file and we want to go to the error of b.tex. Merely
- " searching forward from the beginning of the log file for l.9 will always
- " land us on the error in a.tex.
- if errfile != ''
- exec 'silent! bot pedit +/(\\(\\f\\|\\[\\|\]\\|\\s\\)*'.errfile.'/ '.a:filename
- else
- exec 'bot pedit +0 '.a:filename
- endif
- " Goto the preview window
- " TODO: This is not robust enough. Check that a wincmd j actually takes
- " us to the preview window.
- wincmd j
- " now search forward from this position in the preview window for the
- " numrep^th error of the current line in the quickfix window.
- while numrep > 0
- call search(searchpat, 'W')
- let numrep = numrep - 1
- endwhile
- normal! z.
-
-endfunction " }}}
-" Tex_UpdatePreviewWindow: updates the view of the log file {{{
-" Description:
-" This function should be called when focus is in a quickfix window.
-" It opens the log file in a preview window and makes it display that
-" part of the log file which corresponds to the error which the user is
-" currently on in the quickfix window. Control returns to the quickfix
-" window when the function returns.
-"
-function! Tex_UpdatePreviewWindow(filename)
- call Tex_PositionPreviewWindow(a:filename)
-
- if &previewwindow
- 6 wincmd _
- wincmd p
- endif
-endfunction " }}}
-" Tex_GotoErrorLocation: goes to the correct location of error in the tex file {{{
-" Description:
-" This function should be called when focus is in a quickfix window. This
-" function will first open the preview window of the log file (if it is not
-" already open), position the display of the preview to coincide with the
-" current error under the cursor and then take the user to the file in
-" which this error has occured.
-"
-" The position is both the correct line number and the column number.
-function! Tex_GotoErrorLocation(filename)
-
- " first use vim's functionality to take us to the location of the error
- " accurate to the line (not column). This lets us go to the correct file
- " without applying any logic.
- exec "normal! \<enter>"
- " If the log file is not found, then going to the correct line number is
- " all we can do.
- if glob(a:filename) == ''
- return
- endif
-
- let winnum = winnr()
- " then come back to the quickfix window
- wincmd w
-
- " find out where in the file we had the error.
- let linenum = matchstr(getline('.'), '|\zs\d\+\ze \(warning\|error\)|')
- call Tex_PositionPreviewWindow(a:filename)
-
- if getline('.') =~ 'l.\d\+'
-
- let brokenline = matchstr(getline('.'), 'l.'.linenum.' \zs.*\ze')
- " If the line is of the form
- " l.10 ...and then there was some error
- " it means (most probably) that only part of the erroneous line is
- " shown. In this case, finding the length of the broken line is not
- " correct. Instead goto the beginning of the line and search forward
- " for the part which is displayed and then go to its end.
- if brokenline =~ '^\M...'
- let partline = matchstr(brokenline, '^\M...\m\zs.*')
- let normcmd = "0/\\V".escape(partline, "\\")."/e+1\<CR>"
- else
- let column = strlen(brokenline) + 1
- let normcmd = column.'|'
- endif
-
- elseif getline('.') =~ 'LaTeX Warning: \(Citation\|Reference\) `.*'
-
- let ref = matchstr(getline('.'), "LaTeX Warning: \\(Citation\\|Reference\\) `\\zs[^']\\+\\ze'")
- let normcmd = '0/'.ref."\<CR>"
-
- else
-
- let normcmd = '0'
-
- endif
-
- " go back to the window where we came from.
- exec winnum.' wincmd w'
- exec 'silent! '.linenum.' | normal! '.normcmd
-
- if !Tex_GetVarValue('Tex_ShowErrorContext')
- pclose!
- endif
-endfunction " }}}
-" Tex_SetCompilerMaps: sets maps for compiling/viewing/searching {{{
-" Description:
-function! <SID>Tex_SetCompilerMaps()
- if exists('b:Tex_doneCompilerMaps')
- return
- endif
- let s:ml = '<Leader>'
-
- nnoremap <buffer> <Plug>Tex_Compile :call Tex_RunLaTeX()<cr>
- vnoremap <buffer> <Plug>Tex_Compile :call Tex_PartCompile()<cr>
- nnoremap <buffer> <Plug>Tex_View :call Tex_ViewLaTeX()<cr>
- nnoremap <buffer> <Plug>Tex_ForwardSearch :call Tex_ForwardSearchLaTeX()<cr>
-
- call Tex_MakeMap(s:ml."ll", "<Plug>Tex_Compile", 'n', '<buffer>')
- call Tex_MakeMap(s:ml."ll", "<Plug>Tex_Compile", 'v', '<buffer>')
- call Tex_MakeMap(s:ml."lv", "<Plug>Tex_View", 'n', '<buffer>')
- call Tex_MakeMap(s:ml."ls", "<Plug>Tex_ForwardSearch", 'n', '<buffer>')
-endfunction
-" }}}
-
-augroup LatexSuite
- au LatexSuite User LatexSuiteFileType
- \ call Tex_Debug('compiler.vim: Catching LatexSuiteFileType event', 'comp') |
- \ call <SID>Tex_SetCompilerMaps()
-augroup END
-
-command! -nargs=0 -range=% TPartCompile :<line1>, <line2> silent! call Tex_PartCompile()
-" Setting b:fragmentFile = 1 makes Tex_CompileLatex consider the present file
-" the _main_ file irrespective of the presence of a .latexmain file.
-command! -nargs=0 TCompileThis let b:fragmentFile = 1
-command! -nargs=0 TCompileMainFile let b:fragmentFile = 0
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/custommacros.vim b/ftplugin/latex-suite/custommacros.vim
deleted file mode 100644
index a8482abb..00000000
--- a/ftplugin/latex-suite/custommacros.vim
+++ /dev/null
@@ -1,255 +0,0 @@
-"=============================================================================
-" File: custommacros.vim
-" Author: Mikolaj Machowski
-" Version: 1.0
-" Created: Tue Apr 23 05:00 PM 2002 PST
-"
-" Description: functions for processing custom macros in the
-" latex-suite/macros directory
-"=============================================================================
-
-let s:path = expand('<sfile>:p:h')
-
-" Set path to macros dir dependent on OS {{{
-if has("unix") || has("macunix")
- let s:macrodirpath = $HOME."/.vim/ftplugin/latex-suite/macros/"
-elseif has("win32")
- if exists("$HOME")
- let s:macrodirpath = $HOME."/vimfiles/ftplugin/latex-suite/macros/"
- else
- let s:macrodirpath = $VIM."/vimfiles/ftplugin/latex-suite/macros/"
- endif
-endif
-
-" }}}
-" SetCustomMacrosMenu: sets up the menu for Macros {{{
-function! <SID>SetCustomMacrosMenu()
- let flist = Tex_FindInRtp('', 'macros')
- exe 'amenu '.g:Tex_MacrosMenuLocation.'&New :call <SID>NewMacro("FFFromMMMenu")<CR>'
- exe 'amenu '.g:Tex_MacrosMenuLocation.'&Redraw :call RedrawMacro()<CR>'
-
- let i = 1
- while 1
- let fname = Tex_Strntok(flist, ',', i)
- if fname == ''
- break
- endif
- exe "amenu ".g:Tex_MacrosMenuLocation."&Delete.&".i.":<tab>".fname." :call <SID>DeleteMacro('".fname."')<CR>"
- exe "amenu ".g:Tex_MacrosMenuLocation."&Edit.&".i.":<tab>".fname." :call <SID>EditMacro('".fname."')<CR>"
- exe "imenu ".g:Tex_MacrosMenuLocation."&".i.":<tab>".fname." <C-r>=<SID>ReadMacro('".fname."')<CR>"
- exe "nmenu ".g:Tex_MacrosMenuLocation."&".i.":<tab>".fname." i<C-r>=<SID>ReadMacro('".fname."')<CR>"
- let i = i + 1
- endwhile
-endfunction
-
-if g:Tex_Menus
- call <SID>SetCustomMacrosMenu()
-endif
-
-" }}}
-" NewMacro: opens new file in macros directory {{{
-function! <SID>NewMacro(...)
- " Allow for calling :TMacroNew without argument or from menu and prompt
- " for name.
- if a:0 > 0
- let newmacroname = a:1
- else
- let newmacroname = input("Name of new macro: ")
- if newmacroname == ''
- return
- endif
- endif
-
- if newmacroname == "FFFromMMMenu"
- " Check if NewMacro was called from menu and prompt for insert macro
- " name
- let newmacroname = input("Name of new macro: ")
- if newmacroname == ''
- return
- endif
- elseif Tex_FindInRtp(newmacroname, 'macros') != ''
- " If macro with this name already exists, prompt for another name.
- exe "echomsg 'Macro ".newmacroname." already exists. Try another name.'"
- let newmacroname = input("Name of new macro: ")
- if newmacroname == ''
- return
- endif
- endif
- exec 'split '.Tex_EscapeSpaces(s:macrodirpath.newmacroname)
- setlocal filetype=tex
-endfunction
-
-" }}}
-" RedrawMacro: refreshes macro menu {{{
-function! RedrawMacro()
- aunmenu TeX-Suite.Macros
- call <SID>SetCustomMacrosMenu()
-endfunction
-
-" }}}
-" ChooseMacro: choose a macro file {{{
-" " Description:
-function! s:ChooseMacro(ask)
- let filelist = Tex_FindInRtp('', 'macros')
- let filename = Tex_ChooseFromPrompt(
- \ a:ask."\n" .
- \ Tex_CreatePrompt(filelist, 2, ',') .
- \ "\nEnter number or filename :",
- \ filelist, ',')
-endfunction
-
-" }}}
-" DeleteMacro: deletes macro file {{{
-function! <SID>DeleteMacro(...)
- if a:0 > 0
- let filename = a:1
- else
- let filename = s:ChooseMacro('Choose a macro file for deletion :')
- endif
-
- if !filereadable(s:macrodirpath.filename)
- " When file is not in local directory decline to remove it.
- call confirm('This file is not in your local directory: '.filename."\n".
- \ 'It will not be deleted.' , '&OK', 1)
-
- else
- let ch = confirm('Really delete '.filename.' ?', "&Yes\n&No", 2)
- if ch == 1
- call delete(s:macrodirpath.filename)
- endif
- call RedrawMacro()
- endif
-endfunction
-
-" }}}
-" EditMacro: edits macro file {{{
-function! <SID>EditMacro(...)
- if a:0 > 0
- let filename = a:1
- else
- let filename = s:ChooseMacro('Choose a macro file for insertion:')
- endif
-
- if filereadable(s:macrodirpath.filename)
- " If file exists in local directory open it.
- exec 'split '.Tex_EscapeSpaces(s:macrodirpath.filename)
- else
- " But if file doesn't exist in local dir it probably is in user
- " restricted area. Instead opening try to copy it to local dir.
- " Pity VimL doesn't have mkdir() function :)
- let ch = confirm("You are trying to edit file which is probably read-only.\n".
- \ "It will be copied to your local LaTeX-Suite macros directory\n".
- \ "and you will be operating on local copy with suffix -local.\n".
- \ "It will succeed only if ftplugin/latex-suite/macros dir exists.\n".
- \ "Do you agree?", "&Yes\n&No", 1)
- if ch == 1
- " But there is possibility we already created local modification.
- " Check it and offer opening this file.
- if filereadable(s:macrodirpath.filename.'-local')
- let ch = confirm('Local version of '.filename." already exists.\n".
- \ 'Do you want to open it or overwrite with original version?',
- \ "&Open\nOver&write\n&Cancel", 1)
- if ch == 1
- exec 'split '.Tex_EscapeSpaces(s:macrodirpath.filename.'-local')
- elseif ch == 2
- new
- exe '0read '.Tex_FindInRtp(filename, 'macros')
- " This is possible macro was edited before, wipe it out.
- if bufexists(s:macrodirpath.filename.'-local')
- exe 'bwipe '.s:macrodirpath.filename.'-local'
- endif
- exe 'write! '.s:macrodirpath.filename.'-local'
- else
- return
- endif
- else
- " If file doesn't exist, open new file, read in system macro and
- " save it in local macro dir with suffix -local
- new
- exe '0read '.Tex_FindInRtp(filename, 'macros')
- exe 'write '.s:macrodirpath.filename.'-local'
- endif
- endif
-
- endif
- setlocal filetype=tex
-endfunction
-
-" }}}
-" ReadMacro: reads in a macro from a macro file. {{{
-" allowing for placement via placeholders.
-function! <SID>ReadMacro(...)
-
- if a:0 > 0
- let filename = a:1
- else
- let filelist = Tex_FindInRtp('', 'macros')
- let filename =
- \ Tex_ChooseFromPrompt("Choose a macro file:\n" .
- \ Tex_CreatePrompt(filelist, 2, ',') .
- \ "\nEnter number or name of file :",
- \ filelist, ',')
- endif
-
- let fname = Tex_FindInRtp(filename, 'macros', ':p')
-
- let markerString = '<---- Latex Suite End Macro ---->'
- let _a = @a
- silent! call append(line('.'), markerString)
- silent! exec "read ".fname
- silent! exec "normal! V/^".markerString."$/-1\<CR>\"ax"
- " This is kind of tricky: At this stage, we are one line after the one we
- " started from with the marker text on it. We need to
- " 1. remove the marker and the line.
- " 2. get focus to the previous line.
- " 3. not remove anything from the previous line.
- silent! exec "normal! $v0k$\"_x"
-
- call Tex_CleanSearchHistory()
-
- let @a = substitute(@a, '['."\n\r\t ".']*$', '', '')
- let textWithMovement = IMAP_PutTextWithMovement(@a)
- let @a = _a
-
- return textWithMovement
-
-endfunction
-
-" }}}
-" commands for macros {{{
-com! -nargs=? TMacroNew :call <SID>NewMacro(<f-args>)
-
-" This macros had to have 2 versions:
-if v:version >= 602
- com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacro
- \ :let s:retVal = <SID>ReadMacro(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
- com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacroEdit
- \ :call <SID>EditMacro(<f-args>)
- com! -complete=custom,Tex_CompleteMacroName -nargs=? TMacroDelete
- \ :call <SID>DeleteMacro(<f-args>)
-
- " Tex_CompleteMacroName: for completing names in TMacro... commands {{{
- " Description: get list of macro names with Tex_FindInRtp(), remove full path
- " and return list of names separated with newlines.
- "
- function! Tex_CompleteMacroName(A,P,L)
- " Get name of macros from all runtimepath directories
- let macronames = Tex_FindInRtp('', 'macros')
- " Separate names with \n not ,
- let macronames = substitute(macronames,',','\n','g')
- return macronames
- endfunction
-
- " }}}
-
-else
- com! -nargs=? TMacro
- \ :let s:retVal = <SID>ReadMacro(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
- com! -nargs=? TMacroEdit :call <SID>EditMacro(<f-args>)
- com! -nargs=? TMacroDelete :call <SID>DeleteMacro(<f-args>)
-
-endif
-
-" }}}
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/diacritics.vim b/ftplugin/latex-suite/diacritics.vim
deleted file mode 100644
index 616d30ab..00000000
--- a/ftplugin/latex-suite/diacritics.vim
+++ /dev/null
@@ -1,124 +0,0 @@
-"=============================================================================
-" File: diacritics.vim
-" Author: Lubomir Host
-" Created: Tue Apr 23 07:00 PM 2002 PST
-"
-" Description: shortcuts for all diacritics.
-"=============================================================================
-
-if !g:Tex_Diacritics
- finish
-endif
-
-" \'{a} {{{
-call IMAP ('=a', "\\\'{a}", 'tex')
-call IMAP ('=b', "\\'{b}", 'tex')
-call IMAP ('=c', "\\'{c}", 'tex')
-call IMAP ('=d', "\\'{d}", 'tex')
-call IMAP ('=e', "\\'{e}", 'tex')
-call IMAP ('=f', "\\'{f}", 'tex')
-call IMAP ('=g', "\\'{g}", 'tex')
-call IMAP ('=h', "\\'{h}", 'tex')
-call IMAP ('=i', "\\'{\i}", 'tex')
-call IMAP ('=j', "\\'{j}", 'tex')
-call IMAP ('=k', "\\'{k}", 'tex')
-call IMAP ('=l', "\\'{l}", 'tex')
-call IMAP ('=m', "\\'{m}", 'tex')
-call IMAP ('=n', "\\'{n}", 'tex')
-call IMAP ('=o', "\\'{o}", 'tex')
-call IMAP ('=p', "\\'{p}", 'tex')
-call IMAP ('=q', "\\'{q}", 'tex')
-call IMAP ('=r', "\\'{r}", 'tex')
-call IMAP ('=s', "\\'{s}", 'tex')
-call IMAP ('=t', "\\'{t}", 'tex')
-call IMAP ('=u', "\\'{u}", 'tex')
-call IMAP ('=v', "\\'{v}", 'tex')
-call IMAP ('=w', "\\'{w}", 'tex')
-call IMAP ('=x', "\\'{x}", 'tex')
-call IMAP ('=y', "\\'{y}", 'tex')
-call IMAP ('=z', "\\'{z}", 'tex')
-call IMAP ('=A', "\\'{A}", 'tex')
-call IMAP ('=B', "\\'{B}", 'tex')
-call IMAP ('=C', "\\'{C}", 'tex')
-call IMAP ('=D', "\\'{D}", 'tex')
-call IMAP ('=E', "\\'{E}", 'tex')
-call IMAP ('=F', "\\'{F}", 'tex')
-call IMAP ('=G', "\\'{G}", 'tex')
-call IMAP ('=H', "\\'{H}", 'tex')
-call IMAP ('=I', "\\'{\I}", 'tex')
-call IMAP ('=J', "\\'{J}", 'tex')
-call IMAP ('=K', "\\'{K}", 'tex')
-call IMAP ('=L', "\\'{L}", 'tex')
-call IMAP ('=M', "\\'{M}", 'tex')
-call IMAP ('=N', "\\'{N}", 'tex')
-call IMAP ('=O', "\\'{O}", 'tex')
-call IMAP ('=P', "\\'{P}", 'tex')
-call IMAP ('=Q', "\\'{Q}", 'tex')
-call IMAP ('=R', "\\'{R}", 'tex')
-call IMAP ('=S', "\\'{S}", 'tex')
-call IMAP ('=T', "\\'{T}", 'tex')
-call IMAP ('=U', "\\'{U}", 'tex')
-call IMAP ('=V', "\\'{V}", 'tex')
-call IMAP ('=W', "\\'{W}", 'tex')
-call IMAP ('=X', "\\'{X}", 'tex')
-call IMAP ('=Y', "\\'{Y}", 'tex')
-call IMAP ('=Z', "\\'{Z}", 'tex')
-" }}}
-" \v{a} {{{
-call IMAP ('+a', "\\v{a}", 'tex')
-call IMAP ('+b', "\\v{b}", 'tex')
-call IMAP ('+c', "\\v{c}", 'tex')
-call IMAP ('+d', "\\v{d}", 'tex')
-call IMAP ('+e', "\\v{e}", 'tex')
-call IMAP ('+f', "\\v{f}", 'tex')
-call IMAP ('+g', "\\v{g}", 'tex')
-call IMAP ('+h', "\\v{h}", 'tex')
-call IMAP ('+i', "\\v{\i}", 'tex')
-call IMAP ('+j', "\\v{j}", 'tex')
-call IMAP ('+k', "\\v{k}", 'tex')
-call IMAP ('+l', "\\q l", 'tex')
-call IMAP ('+m', "\\v{m}", 'tex')
-call IMAP ('+n', "\\v{n}", 'tex')
-call IMAP ('+o', "\\v{o}", 'tex')
-call IMAP ('+p', "\\v{p}", 'tex')
-call IMAP ('+q', "\\v{q}", 'tex')
-call IMAP ('+r', "\\v{r}", 'tex')
-call IMAP ('+s', "\\v{s}", 'tex')
-call IMAP ('+t', "\\q t", 'tex')
-call IMAP ('+u', "\\v{u}", 'tex')
-call IMAP ('+v', "\\v{v}", 'tex')
-call IMAP ('+w', "\\v{w}", 'tex')
-call IMAP ('+x', "\\v{x}", 'tex')
-call IMAP ('+y', "\\v{y}", 'tex')
-call IMAP ('+z', "\\v{z}", 'tex')
-call IMAP ('+A', "\\v{A}", 'tex')
-call IMAP ('+B', "\\v{B}", 'tex')
-call IMAP ('+C', "\\v{C}", 'tex')
-call IMAP ('+D', "\\v{D}", 'tex')
-call IMAP ('+E', "\\v{E}", 'tex')
-call IMAP ('+F', "\\v{F}", 'tex')
-call IMAP ('+G', "\\v{G}", 'tex')
-call IMAP ('+H', "\\v{H}", 'tex')
-call IMAP ('+I', "\\v{\I}", 'tex')
-call IMAP ('+J', "\\v{J}", 'tex')
-call IMAP ('+K', "\\v{K}", 'tex')
-call IMAP ('+L', "\\v{L}", 'tex')
-call IMAP ('+M', "\\v{M}", 'tex')
-call IMAP ('+N', "\\v{N}", 'tex')
-call IMAP ('+O', "\\v{O}", 'tex')
-call IMAP ('+P', "\\v{P}", 'tex')
-call IMAP ('+Q', "\\v{Q}", 'tex')
-call IMAP ('+R', "\\v{R}", 'tex')
-call IMAP ('+S', "\\v{S}", 'tex')
-call IMAP ('+T', "\\v{T}", 'tex')
-call IMAP ('+U', "\\v{U}", 'tex')
-call IMAP ('+V', "\\v{V}", 'tex')
-call IMAP ('+W', "\\v{W}", 'tex')
-call IMAP ('+X', "\\v{X}", 'tex')
-call IMAP ('+Y', "\\v{Y}", 'tex')
-call IMAP ('+Z', "\\v{Z}", 'tex')
-" }}}
-call IMAP ('+}', "\\\"{a}", 'tex')
-call IMAP ('+:', "\\^{o}", 'tex')
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/elementmacros.vim b/ftplugin/latex-suite/elementmacros.vim
deleted file mode 100644
index 132291a7..00000000
--- a/ftplugin/latex-suite/elementmacros.vim
+++ /dev/null
@@ -1,330 +0,0 @@
-"=============================================================================
-" File: elementmacros.vim
-" Author: Mikolaj Machowski
-" Created: Tue Apr 23 06:00 PM 2002 PST
-"
-" Description: macros for dimensions/fonts/counters.
-" and various common commands such ref/label/footnote.
-"=============================================================================
-
-nmap <silent> <script> <plug> i
-imap <silent> <script> <C-o><plug> <Nop>
-
-if exists('s:lastElementsLocation') && g:Tex_ElementsMenuLocation == s:lastElementsLocation
- finish
-endif
-
-if exists('s:lastElementsLocation')
- exe 'aunmenu '.s:lastElementsLocation.'Font.'
- exe 'aunmenu '.s:lastElementsLocation.'Dimension.'
- exe 'aunmenu '.s:lastElementsLocation.'Counters.'
- exe 'aunmenu '.s:lastElementsLocation.'Various.'
-endif
-
-let s:lastElementsLocation = g:Tex_ElementsMenuLocation
-
-let s:fontMenuLoc = g:Tex_ElementsMenuLocation.'Font.'
-let s:dimensionMenuLoc = g:Tex_ElementsMenuLocation.'Dimension.'
-let s:counterMenuLoc = g:Tex_ElementsMenuLocation.'Counters.'
-let s:variousMenuLoc = g:Tex_ElementsMenuLocation.'Various.'
-
-" ==============================================================================
-" Set up the functions the first time.
-" ==============================================================================
-if !exists('s:definedFuncs') " {{{
- let s:definedFuncs = 1
-
- " Tex_RemoveElementMenus: remove the elements menu {{{
- function! Tex_RemoveElementMenus()
- exe 'silent! aunmenu '.s:lastElementsLocation.'Font.'
- exe 'silent! aunmenu '.s:lastElementsLocation.'Dimension.'
- exe 'silent! aunmenu '.s:lastElementsLocation.'Counters.'
- exe 'silent! aunmenu '.s:lastElementsLocation.'Various.'
- endfunction " }}}
- " Tex_FontFamily: sets up font menus {{{
- function! <SID>Tex_FontFamily(font,fam)
- let vislhs = matchstr(tolower(a:font), '^.\zs.*')
-
- " avoid redoing imaps and vmaps for every reconfiguration of menus.
- if !exists('s:doneOnce') && g:Tex_FontMaps
- exe "vnoremap <silent> ".g:Tex_Leader.vislhs.
- \" \<C-\\>\<C-N>:call VEnclose('\\text".vislhs."{', '}', '{\\".vislhs.a:fam." ', '}')<CR>"
- exe 'call IMAP ("'.a:font.'", "\\text'.vislhs.'{<++>}<++>", "tex")'
- endif
-
- " menu entry.
- if g:Tex_Menus && g:Tex_FontMenus
- let location = s:fontMenuLoc.substitute(a:fam, '^.', '\u&', '').'.'.vislhs.a:fam.'<tab>'.a:font.'\ ('.g:Tex_Leader.vislhs.')'
- exe "amenu ".location.
- \" <plug><C-r>=IMAP_PutTextWithMovement('\\text".vislhs."{<++>}<++>')<CR>"
- exe "vmenu ".location.
- \" \<C-\\>\<C-N>:call VEnclose('\\text".vislhs."{', '}', '{\\".vislhs.a:fam." ', '}')<CR>"
- endif
-
- endfunction " }}}
- " Tex_FontDiacritics: sets up menus for diacritics. {{{
- function! <SID>Tex_FontDiacritics(name, rhs)
- let location = s:fontMenuLoc.'&Diacritics.'.a:name.'<tab>'
- exe 'amenu '.location.
- \" <plug><C-r>=IMAP_PutTextWithMovement('\\".a:rhs."{<++>}<++>')<CR>"
- exe 'vmenu '.location.
- \" \<C-\\>\<C-n>:call VEnclose('\\".a:rhs."{', '}', '', '')<CR>"
- endfunction " }}}
- " Tex_FontSize: sets up size fonts {{{
- function! <SID>Tex_FontSize(name)
- let location = s:fontMenuLoc.'&Size.'.a:name.'<tab>'
- exe 'amenu '.location." <plug>\\".a:name
- exe 'vunmenu '.location
- endfunction " }}}
- " Tex_Fontfont: sets up the 'font' part of font menus {{{
- function! <SID>Tex_Fontfont(desc, lhs)
- let location = s:fontMenuLoc.'&font.'.a:desc.'<tab>'
- exe "amenu ".location." <plug><C-r>=IMAP_PutTextWithMovement('".a:lhs."')<CR>"
- exe "vunmenu ".location
- endfunction " }}}
- " Tex_DimMenus: set up dimension menus {{{
- function! <SID>Tex_DimMenus(submenu, rhs)
- let location = s:dimensionMenuLoc.a:submenu.'.'.a:rhs.'<tab>'
- exe "amenu ".location." <plug>\\".a:rhs
- exe "vunmenu ".location
- endfunction " }}}
- " Tex_CounterMenus: set up counters menus {{{
- function! <SID>Tex_CounterMenus(submenu, rhs)
- let location = s:counterMenuLoc.a:submenu.'.'.a:rhs.'<tab>'
- exe "amenu ".location." <plug>\\".a:rhs
- exe "vunmenu ".location
- endfunction " }}}
- " Tex_VariousMenus: set up various menus {{{
- function! <SID>Tex_VariousMenus(desc, lhs)
- let location = s:variousMenuLoc.a:desc.'<tab>'
- exe "amenu ".location." <plug><C-r>=IMAP_PutTextWithMovement('".a:lhs."')<CR>"
- exe "vunmenu ".location
- endfunction " }}}
-
-endif
-" }}}
-
-" ==============================================================================
-" Fonts
-" ==============================================================================
-" series/family/shape {{{
-call <SID>Tex_FontFamily("FBF","series")
-call <SID>Tex_FontFamily("FMD","series")
-
-call <SID>Tex_FontFamily("FTT","family")
-call <SID>Tex_FontFamily("FSF","family")
-call <SID>Tex_FontFamily("FRM","family")
-
-call <SID>Tex_FontFamily("FUP","shape")
-call <SID>Tex_FontFamily("FSL","shape")
-call <SID>Tex_FontFamily("FSC","shape")
-call <SID>Tex_FontFamily("FIT","shape")
-
-" the \emph is special.
-if g:Tex_FontMaps | exe "vnoremap <silent> ".g:Tex_Leader."em \<C-\\>\<C-N>:call VEnclose('\\emph{', '}', '{\\em', '\\/}')<CR>" | endif
-if g:Tex_FontMaps | exe 'call IMAP ("FEM", "\\emph{<++>}<++>", "tex")' | endif
-
-" }}}
-if g:Tex_Menus && g:Tex_FontMenus
- " {{{ diacritics
- call <SID>Tex_FontDiacritics('Acute', '"')
- call <SID>Tex_FontDiacritics('Breve', 'u')
- call <SID>Tex_FontDiacritics('Circle', 'r')
- call <SID>Tex_FontDiacritics('Circumflex', '^')
- call <SID>Tex_FontDiacritics('Umlaut', '"')
- call <SID>Tex_FontDiacritics('HUmlaut', 'H')
- call <SID>Tex_FontDiacritics('Dot\ over', '.')
- call <SID>Tex_FontDiacritics('Grave', '`')
- call <SID>Tex_FontDiacritics('Hacek', 'v')
- call <SID>Tex_FontDiacritics('Makron', '=')
- call <SID>Tex_FontDiacritics('Tilde', '~')
- call <SID>Tex_FontDiacritics('Underline', 'b')
- call <SID>Tex_FontDiacritics('Cedille', 'c')
- call <SID>Tex_FontDiacritics('Dot\ under', ' ')
- call <SID>Tex_FontDiacritics('Ligature', 't')
- " }}}
- " {{{ Si&ze.
- call <SID>Tex_FontSize('tiny')
- call <SID>Tex_FontSize('scriptsize')
- call <SID>Tex_FontSize('footnotesize')
- call <SID>Tex_FontSize('small')
- call <SID>Tex_FontSize('normalsize')
- call <SID>Tex_FontSize('large')
- call <SID>Tex_FontSize('Large')
- call <SID>Tex_FontSize('LARGE')
- call <SID>Tex_FontSize('huge')
- call <SID>Tex_FontSize('Huge')
- " }}}
- " {{{ &font.
- call s:Tex_Fontfont('fontencoding{}', '\fontencoding{<++>}<++>')
- call s:Tex_Fontfont('fontfamily{qtm}', '\fontfamily{<++>}<++>')
- call s:Tex_Fontfont('fontseries{m\ b\ bx\ sb\ c}', '\fontseries{<++>}<++>')
- call s:Tex_Fontfont('fontshape{n\ it\ sl\ sc\ ui}', '\fontshape{<++>}<++>')
- call s:Tex_Fontfont('fontsize{}{}', '\fontsize{<++>}{<++>}<++>')
- call s:Tex_Fontfont('selectfont', '\selectfont ')
- " }}}
-endif
-
-" ==============================================================================
-" Dimensions
-" ==============================================================================
-if g:Tex_Menus
- " {{{ Static1
- call <SID>Tex_DimMenus('Static1', 'arraycolsep')
- call <SID>Tex_DimMenus('Static1', 'arrayrulewidth')
- call <SID>Tex_DimMenus('Static1', 'bibindent')
- call <SID>Tex_DimMenus('Static1', 'columnsep')
- call <SID>Tex_DimMenus('Static1', 'columnseprule')
- call <SID>Tex_DimMenus('Static1', 'columnwidth')
- call <SID>Tex_DimMenus('Static1', 'doublerulesep')
- call <SID>Tex_DimMenus('Static1', 'evensidemargin')
- call <SID>Tex_DimMenus('Static1', 'fboxrule')
- call <SID>Tex_DimMenus('Static1', 'fboxsep')
- call <SID>Tex_DimMenus('Static1', 'footheight')
- call <SID>Tex_DimMenus('Static1', 'footnotesep')
- call <SID>Tex_DimMenus('Static1', 'footskip')
- call <SID>Tex_DimMenus('Static1', 'headheight')
- call <SID>Tex_DimMenus('Static1', 'headsep')
- call <SID>Tex_DimMenus('Static1', 'itemindent')
- call <SID>Tex_DimMenus('Static1', 'labelsep')
- call <SID>Tex_DimMenus('Static1', 'labelwidth')
- call <SID>Tex_DimMenus('Static1', 'leftmargin')
- call <SID>Tex_DimMenus('Static1', 'leftmargini')
- call <SID>Tex_DimMenus('Static1', 'leftmarginii')
- call <SID>Tex_DimMenus('Static1', 'leftmarginiii')
- call <SID>Tex_DimMenus('Static1', 'leftmarginiv')
- call <SID>Tex_DimMenus('Static1', 'leftmarginv')
- call <SID>Tex_DimMenus('Static1', 'leftmarginvi')
- call <SID>Tex_DimMenus('Static1', 'linewidth')
- call <SID>Tex_DimMenus('Static1', 'listparindent')
- call <SID>Tex_DimMenus('Static1', 'marginparpush')
- call <SID>Tex_DimMenus('Static1', 'marginparsep')
- call <SID>Tex_DimMenus('Static1', 'marginparwidth')
- call <SID>Tex_DimMenus('Static1', 'mathindent')
- call <SID>Tex_DimMenus('Static1', 'oddsidemargin')
- " }}}
- " {{{ Static2
- call <SID>Tex_DimMenus('Static2', 'paperheight')
- call <SID>Tex_DimMenus('Static2', 'paperwidth')
- call <SID>Tex_DimMenus('Static2', 'parindent')
- call <SID>Tex_DimMenus('Static2', 'rightmargin')
- call <SID>Tex_DimMenus('Static2', 'tabbingsep')
- call <SID>Tex_DimMenus('Static2', 'tabcolsep')
- call <SID>Tex_DimMenus('Static2', 'textheight')
- call <SID>Tex_DimMenus('Static2', 'textwidth')
- call <SID>Tex_DimMenus('Static2', 'topmargin')
- call <SID>Tex_DimMenus('Static2', 'unitlength')
- " }}}
- " {{{ Dynamic
- call <SID>Tex_DimMenus('Dynamic', 'abovedisplayshortskip')
- call <SID>Tex_DimMenus('Dynamic', 'abovedisplayskip')
- call <SID>Tex_DimMenus('Dynamic', 'baselineskip')
- call <SID>Tex_DimMenus('Dynamic', 'belowdisplayshortskip')
- call <SID>Tex_DimMenus('Dynamic', 'belowdisplayskip')
- call <SID>Tex_DimMenus('Dynamic', 'dblfloatsep')
- call <SID>Tex_DimMenus('Dynamic', 'dbltextfloatsep')
- call <SID>Tex_DimMenus('Dynamic', 'floatsep')
- call <SID>Tex_DimMenus('Dynamic', 'intextsep')
- call <SID>Tex_DimMenus('Dynamic', 'itemsep')
- call <SID>Tex_DimMenus('Dynamic', 'parsep')
- call <SID>Tex_DimMenus('Dynamic', 'parskip')
- call <SID>Tex_DimMenus('Dynamic', 'partopsep')
- call <SID>Tex_DimMenus('Dynamic', 'textfloatsep')
- call <SID>Tex_DimMenus('Dynamic', 'topsep')
- call <SID>Tex_DimMenus('Dynamic', 'topskip')
- " }}}
- " {{{ Change
- call <SID>Tex_DimMenus('Change', 'setlength')
- call <SID>Tex_DimMenus('Change', 'addtolength')
- call <SID>Tex_DimMenus('Change', 'settoheight')
- call <SID>Tex_DimMenus('Change', 'settowidth')
- call <SID>Tex_DimMenus('Change', 'settolength')
- " }}}
-endif
-
-" ==============================================================================
-" Counters
-" ==============================================================================
-if g:Tex_Menus
- " Counters {{{
- call <SID>Tex_CounterMenus('Counters', 'bottomnumber')
- call <SID>Tex_CounterMenus('Counters', 'chapter')
- call <SID>Tex_CounterMenus('Counters', 'dbltopnumber')
- call <SID>Tex_CounterMenus('Counters', 'enumi')
- call <SID>Tex_CounterMenus('Counters', 'enumii')
- call <SID>Tex_CounterMenus('Counters', 'enumiii')
- call <SID>Tex_CounterMenus('Counters', 'enumiv')
- call <SID>Tex_CounterMenus('Counters', 'equation')
- call <SID>Tex_CounterMenus('Counters', 'figure')
- call <SID>Tex_CounterMenus('Counters', 'footnote')
- call <SID>Tex_CounterMenus('Counters', 'mpfootnote')
- call <SID>Tex_CounterMenus('Counters', 'page')
- call <SID>Tex_CounterMenus('Counters', 'paragraph')
- call <SID>Tex_CounterMenus('Counters', 'part')
- call <SID>Tex_CounterMenus('Counters', 'secnumdepth')
- call <SID>Tex_CounterMenus('Counters', 'section')
- call <SID>Tex_CounterMenus('Counters', 'subparagraph')
- call <SID>Tex_CounterMenus('Counters', 'subsection')
- call <SID>Tex_CounterMenus('Counters', 'subsubsection')
- call <SID>Tex_CounterMenus('Counters', 'table')
- call <SID>Tex_CounterMenus('Counters', 'tocdepth')
- call <SID>Tex_CounterMenus('Counters', 'topnumber')
- call <SID>Tex_CounterMenus('Counters', 'totalnumber')
- " }}}
- " theCounters {{{
- call <SID>Tex_CounterMenus('theCounters', 'thebottomnumber')
- call <SID>Tex_CounterMenus('theCounters', 'thechapter')
- call <SID>Tex_CounterMenus('theCounters', 'thedbltopnumber')
- call <SID>Tex_CounterMenus('theCounters', 'theenumi')
- call <SID>Tex_CounterMenus('theCounters', 'theenumii')
- call <SID>Tex_CounterMenus('theCounters', 'theenumiii')
- call <SID>Tex_CounterMenus('theCounters', 'theenumiv')
- call <SID>Tex_CounterMenus('theCounters', 'theequation')
- call <SID>Tex_CounterMenus('theCounters', 'thefigure')
- call <SID>Tex_CounterMenus('theCounters', 'thefootnote')
- call <SID>Tex_CounterMenus('theCounters', 'thempfootnote')
- call <SID>Tex_CounterMenus('theCounters', 'thepage')
- call <SID>Tex_CounterMenus('theCounters', 'theparagraph')
- call <SID>Tex_CounterMenus('theCounters', 'thepart')
- call <SID>Tex_CounterMenus('theCounters', 'thesecnumdepth')
- call <SID>Tex_CounterMenus('theCounters', 'thesection')
- call <SID>Tex_CounterMenus('theCounters', 'thesubparagraph')
- call <SID>Tex_CounterMenus('theCounters', 'thesubsection')
- call <SID>Tex_CounterMenus('theCounters', 'thesubsubsection')
- call <SID>Tex_CounterMenus('theCounters', 'thetable')
- call <SID>Tex_CounterMenus('theCounters', 'thetocdepth')
- call <SID>Tex_CounterMenus('theCounters', 'thetopnumber')
- call <SID>Tex_CounterMenus('theCounters', 'thetotalnumber')
- " }}}
- " Type {{{
- call <SID>Tex_CounterMenus('Type', 'alph')
- call <SID>Tex_CounterMenus('Type', 'Alph')
- call <SID>Tex_CounterMenus('Type', 'arabic')
- call <SID>Tex_CounterMenus('Type', 'roman')
- call <SID>Tex_CounterMenus('Type', 'Roman')
- " }}}
-endif
-
-" ==============================================================================
-" Various
-" ==============================================================================
-if g:Tex_Menus
- " Various {{{
- call <SID>Tex_VariousMenus('ref{}' , '\ref{<++>}<++>')
- call <SID>Tex_VariousMenus('pageref{}' , '\pageref{<++>}<++>')
- call <SID>Tex_VariousMenus('label{}' , '\label{<++>}<++>')
- call <SID>Tex_VariousMenus('footnote{}' , '\footnote{<++>}<++>')
- call <SID>Tex_VariousMenus('footnotemark{}', '\footnotemark{<++>}<++>')
- call <SID>Tex_VariousMenus('footnotemark{}', '\footnotetext{<++>}<++>')
- call <SID>Tex_VariousMenus('cite{}' , '\cite{<++>}<++>')
- call <SID>Tex_VariousMenus('nocite{}' , '\nocite{<++>}<++>')
- " }}}
-endif
-
-if g:Tex_CatchVisMapErrors
- exe "vnoremap ".g:Tex_Leader." :\<C-u>call ExecMap('".g:Tex_Leader."', 'v')\<CR>"
-endif
-" this is for avoiding reinclusion of imaps from next time on.
-let s:doneOnce = 1
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/envmacros.vim b/ftplugin/latex-suite/envmacros.vim
deleted file mode 100644
index edf97f79..00000000
--- a/ftplugin/latex-suite/envmacros.vim
+++ /dev/null
@@ -1,1166 +0,0 @@
-"=============================================================================
-" File: envmacros.vim
-" Author: Mikolaj Machowski
-" Created: Tue Apr 23 08:00 PM 2002 PST
-" CVS Header: $Id: envmacros.vim 1101 2010-01-28 23:30:56Z tmaas $
-" Description: mappings/menus for environments.
-"=============================================================================
-
-if !g:Tex_EnvironmentMaps && !g:Tex_EnvironmentMenus
- finish
-endif
-
-exe 'so '.fnameescape(expand('<sfile>:p:h').'/wizardfuncs.vim')
-
-nmap <silent> <script> <plug> i
-imap <silent> <script> <C-o><plug> <Nop>
-
-" Define environments for IMAP evaluation " {{{
-let s:figure = "\\begin{figure}[<+htpb+>]\<cr>\\centering\<cr>\\psfig{figure=<+eps file+>}\<cr>\\caption{<+caption text+>}\<cr>\\label{fig:<+label+>}\<cr>\\end{figure}<++>"
-let s:figure_graphicx = "\\begin{figure}[<+htpb+>]\<cr>\\centering\<cr>\\includegraphics{<+file+>}\<cr>\\caption{<+caption text+>}\<cr>\\label{fig:<+label+>}\<cr>\\end{figure}<++>"
-let s:minipage = "\\begin{minipage}[<+tb+>]{<+width+>}\<cr><++>\<cr>\\end{minipage}<++>"
-let s:picture = "\\begin{picture}(<+width+>, <+height+>)(<+xoff+>,<+yoff+>)\<cr>\\put(<+xoff+>,<+yoff+>){\\framebox(<++>,<++>){<++>}}\<cr>\\end{picture}<++>"
-let s:list = "\\begin{list}{<+label+>}{<+spacing+>}\<cr>\\item <++>\<cr>\\end{list}<++>"
-let s:table = "\\begin{table}\<cr>\\centering\<cr>\\begin{tabular}{<+dimensions+>}\<cr><++>\<cr>\\end{tabular}\<cr>\\caption{<+Caption text+>}\<cr>\\label{tab:<+label+>}\<cr>\\end{table}<++>"
-let s:array = "\\left<++>\<cr>\\begin{array}{<+dimension+>}\<cr><+elements+>\<cr>\\end{array}\<cr>\\right<++>"
-let s:description ="\\begin{description}\<cr>\\item[<+label+>]<++>\<cr>\\end{description}<++>"
-let s:document = "\\documentclass[<+options+>]{<+class+>}\<cr>\<cr>\\begin{document}\<cr><++>\<cr>\\end{document}"
-let s:tabular = "\\begin{tabular}[<+hbtp+>]{<+format+>}\<cr><++>\<cr>\\end{tabular}"
-let s:tabular_star = "\\begin{tabular*}[<+hbtp+>]{<+format+>}\<cr><++>\<cr>\\end{tabular*}"
-
-" }}}
-" define environments with special behavior in line wise selection. {{{
-if !exists('s:vis_center_left')
- let s:vis_center_left = '\centerline{'
- let s:vis_center_right = '}'
-
- let s:vis_verbatim_left = '\verb\|'
- let s:vis_verbatim_right = '\|'
-
- let s:vis_flushright_left = '{\raggedright '
- let s:vis_flushright_right = '}'
-
- let s:vis_fushleft_left = '{\raggedleft '
- let s:vis_fushleft_right = '}'
-
- let s:vis_lrbox_left = '\sbox{'
- let s:vis_lrbox_right = '}'
-endif
-" }}}
-" Tex_EnvMacros: sets up maps and menus for environments {{{
-" Description:
-function! <SID>Tex_EnvMacros(lhs, submenu, name)
-
- let extra = ''
- if a:submenu =~ 'Lists'
- let extra = '\item '
- endif
-
- let vright = ''
- let vleft = ''
- if exists('s:vis_'.a:name.'_right')
- let vright = s:vis_{a:name}_right
- let vleft = s:vis_{a:name}_left
- endif
- let vrhs = "\<C-\\>\<C-N>:call VEnclose('".vleft."', '".vright."', '\\begin{".a:name."}', '\\end{".a:name."}')\<CR>"
- let location = g:Tex_EnvMenuLocation.a:submenu.a:name.'<tab>'
-
- if a:lhs != ''
-
- let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '')
- let location = location.a:lhs.'\ ('.vlhs.')'
-
- if g:Tex_EnvironmentMaps && !exists('s:doneOnce')
- call IMAP(a:lhs, "\<C-r>=Tex_PutEnvironment('".a:name."')\<CR>", 'tex')
- exec 'vnoremap <silent> '.vlhs.' '.vrhs
- endif
-
- endif
-
- if g:Tex_Menus && g:Tex_EnvironmentMenus && has("gui_running")
- exe 'amenu '.location.' <plug><C-r>=Tex_DoEnvironment("'.a:name.'")<CR>'
- exe 'vmenu '.location.' '.vrhs
- endif
-
-endfunction
-
-" }}}
-" Tex_SpecialMacros: macros with special right hand sides {{{
-" Description:
-function! <SID>Tex_SpecialMacros(lhs, submenu, name, irhs, ...)
-
- let wiz = 1
- if a:0 > 0 && a:1 == 0
- let wiz = 0
- endif
-
- let location = g:Tex_EnvMenuLocation.a:submenu.a:name
-
- let vright = ''
- let vleft = ''
- if exists('s:vis_'.a:name.'_right')
- let vright = s:vis_{a:name}_right
- let vleft = s:vis_{a:name}_left
- endif
- let vrhs = "\<C-\\>\<C-N>:call VEnclose('".vleft."', '".vright."', '\\begin{".a:name."}', '\\end{".a:name."}')\<CR>"
-
- if a:lhs != ''
-
- let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '')
- let location = location.'<tab>'.a:lhs.'\ ('.vlhs.')'
-
- if g:Tex_EnvironmentMaps && !exists('s:doneOnce')
- call IMAP(a:lhs, a:irhs, 'tex')
- exec 'vnoremap '.vlhs.' '.vrhs
- endif
-
- endif
-
- if g:Tex_Menus && g:Tex_EnvironmentMenus
- if wiz
- exe 'amenu '.location.' <plug><C-r>=Tex_DoEnvironment("'.a:name.'")<CR>'
- else
- exe 'amenu '.location." <plug><C-r>=IMAP_PutTextWithMovement('".a:irhs."')<CR>"
- endif
- exe 'vmenu '.location.' '.vrhs
- endif
-
-endfunction " }}}
-" Tex_SectionMacros: creates section maps and menus {{{
-" Description:
-function! <SID>Tex_SectionMacros(lhs, name)
-
- let vlhs = g:Tex_Leader2.substitute(tolower(a:lhs), '^.', '', '')
- let vrhs = "\<C-\\>\<C-N>:call VEnclose('\\".a:name."{', '}', '', '')<CR>"
-
- if g:Tex_SectionMaps && !exists('s:doneOnce')
- exe 'vnoremap '.vlhs.' '.vrhs
- call IMAP (a:lhs, "\\".a:name.'{<++>}<++>', 'tex')
- endif
-
- if g:Tex_Menus && g:Tex_SectionMenus
- let location = g:Tex_EnvMenuLocation.'Sections.'.a:name.'<tab>'.a:lhs.'\ ('.vlhs.')'
- let advlocation = g:Tex_EnvMenuLocation.'Sections.Advanced.'.a:name
-
- let irhs = "\<C-r>=IMAP_PutTextWithMovement('\\".a:name."{<++>}<++>')\<CR>"
-
- let advirhs = "\<C-r>=Tex_InsSecAdv('".a:name."')\<CR>"
- let advvrhs = "\<C-\\>\<C-N>:call Tex_VisSecAdv('".a:name."')\<CR>"
-
- exe 'amenu '.advlocation.' <plug>'.advirhs
- exe 'vnoremenu '.advlocation." ".advvrhs
-
- exe 'amenu '.location.' <plug>'.irhs
- exe 'vnoremenu '.location." ".vrhs
- endif
-endfunction " }}}
-
-" NewEnvironments {{{
-call s:Tex_SpecialMacros('', '', 'newenvironment', '\newenvironment{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', '', 'newenvironment*', '\newenvironment*{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', '', 'renewenvironment', '\renewenvironment{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', '', 'renewenvironment*', '\renewenvironment*{<++>}[<++>][<++>]{<++>}{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', '', '-sepenv0-', ' :', 0)
-" }}}
-" Environments specific commands {{{
-call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', '&item', '\item', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', 'i&tem[]', '\item[<++>]<++>', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Lists.', '&bibitem{}', '\bibitem{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&=', '\=', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&>', '\>', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&\\\\', '\\', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&+', '\+', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&-', '\-', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', "\\\'", "\\\'", 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&`', '\`', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '\\&kill', '\kill', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&makron\ \\CHAR=', '\<++>=<++>', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', "&aigu\ \\CHAR\'", "\\<++>\'<++>", 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', '&grave\ \\CHAR`', '\<++>`<++>', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', 'p&ushtabs', '\pushtabs', 0)
-call s:Tex_SpecialMacros('', 'Env&Commands.&Tabbing.', 'p&optabs', '\poptabs', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&hline', '\hline', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&cline', '\cline', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&\&', '&', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&\\\\', '\\', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Tabular.', '&multicolumn{}{}{}', '\multicolumn{<++>}{<++>}{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&makelabels', '\makelabels', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&address', '\address', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&signature', '\signature', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&date', '\date', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '-sepenva4-', ' :', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&opening{}', '\opening{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&closing{}', '\closing{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', '&ps{}', '\ps{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.Le&tter.', 'cc&{}', '\cc{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&onlyslides{}', '\onlyslides{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&onlynotes{}', '\onlynotes{<++>}<++>', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '-sepenva5-', ' :', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&invisible', '\invisible', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&visible', '\visible', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&settime', '\settime', 0)
-call s:Tex_SpecialMacros('', 'EnvCommands.&Slides.', '&addtime', '\addtime', 0)
-call s:Tex_SpecialMacros('', '', '-sepenv0-', ' :', 0)
-" }}}
-" Lists {{{
-call s:Tex_SpecialMacros('ELI', '&Lists.', 'list', s:list)
-call s:Tex_SpecialMacros('EDE', '&Lists.', 'description', s:description)
-call s:Tex_EnvMacros('EEN', '&Lists.', 'enumerate')
-call s:Tex_EnvMacros('EIT', '&Lists.', 'itemize')
-call s:Tex_EnvMacros('ETI', '&Lists.', 'theindex')
-call s:Tex_EnvMacros('ETL', '&Lists.', 'trivlist')
-" }}}
-" Tables {{{
-call s:Tex_SpecialMacros('ETE', '&Tables.', 'table', s:table)
-call s:Tex_EnvMacros('ETG', '&Tables.', 'tabbing')
-call s:Tex_EnvMacros('', '&Tables.', 'table*')
-call s:Tex_EnvMacros('', '&Tables.', 'table2')
-call s:Tex_SpecialMacros('ETR', '&Tables.', 'tabular', s:tabular)
-call s:Tex_SpecialMacros('', '&Tables.', 'tabular*', s:tabular_star)
-" }}}
-" Math {{{
-call s:Tex_EnvMacros('EAR', '&Math.', 'array')
-call s:Tex_EnvMacros('EDM', '&Math.', 'displaymath')
-call s:Tex_EnvMacros('EEA', '&Math.', 'eqnarray')
-call s:Tex_EnvMacros('', '&Math.', 'eqnarray*')
-call s:Tex_EnvMacros('EEQ', '&Math.', 'equation')
-call s:Tex_EnvMacros('EMA', '&Math.', 'math')
-" }}}
-" Structure {{{
-call s:Tex_SpecialMacros('EAR', 'Math.', 'array', s:array)
-call s:Tex_EnvMacros('EAB', '&Structure.', 'abstract')
-call s:Tex_EnvMacros('EAP', '&Structure.', 'appendix')
-call s:Tex_EnvMacros('ECE', '&Structure.', 'center')
-call s:Tex_EnvMacros('EDO', '&Structure.', 'document')
-call s:Tex_EnvMacros('EFC', '&Structure.', 'filecontents')
-call s:Tex_EnvMacros('', '&Structure.', 'filecontents*')
-call s:Tex_EnvMacros('EFL', '&Structure.', 'flushleft')
-call s:Tex_EnvMacros('EFR', '&Structure.', 'flushright')
-call s:Tex_EnvMacros('EQN', '&Structure.', 'quotation')
-call s:Tex_EnvMacros('EQE', '&Structure.', 'quote')
-call s:Tex_EnvMacros('ESP', '&Structure.', 'sloppypar')
-call s:Tex_EnvMacros('ETI', '&Structure.', 'theindex')
-call s:Tex_EnvMacros('ETP', '&Structure.', 'titlepage')
-call s:Tex_EnvMacros('EVM', '&Structure.', 'verbatim')
-call s:Tex_EnvMacros('', '&Structure.', 'verbatim*')
-call s:Tex_EnvMacros('EVE', '&Structure.', 'verse')
-call s:Tex_EnvMacros('ETB', '&Structure.', 'thebibliography')
-call s:Tex_SpecialMacros('', '&Structure.', '-sepstruct0-', ':', 0)
-call s:Tex_EnvMacros('ENO', '&Structure.', 'note')
-call s:Tex_EnvMacros('EOV', '&Structure.', 'overlay')
-call s:Tex_EnvMacros('ESL', '&Structure.', 'slide')
-" }}}
-" Sections {{{
-call s:Tex_SectionMacros('SPA', 'part')
-call s:Tex_SectionMacros('SCH', 'chapter')
-call s:Tex_SectionMacros('SSE', 'section')
-call s:Tex_SectionMacros('SSS', 'subsection')
-call s:Tex_SectionMacros('SS2', 'subsubsection')
-call s:Tex_SectionMacros('SPG', 'paragraph')
-call s:Tex_SectionMacros('SSP', 'subparagraph')
-" }}}
-" Miscellaneous {{{
-call s:Tex_SpecialMacros('', '', '-sepenv1-', ' :', 0)
-call s:Tex_SpecialMacros('EFI', '', 'figure', "\<C-r>=Tex_PutEnvironment('figure')\<CR>")
-call s:Tex_EnvMacros('', '', 'figure*')
-call s:Tex_EnvMacros('ELR', '', 'lrbox')
-call s:Tex_SpecialMacros('EMP', '', 'minipage', s:minipage)
-call s:Tex_SpecialMacros('EPI', '', 'picture', s:picture)
-" }}}
-
-if g:Tex_CatchVisMapErrors
- exe 'vnoremap '.g:Tex_Leader2." :\<C-u>call ExecMap('".g:Tex_Leader2."', 'v')\<CR>"
-endif
-
-" ==============================================================================
-" Specialized functions for various environments
-"
-" All these functions are to be used as:
-"
-" inoremap <lhs> <C-r>=Tex_itemize('enumerate')<CR>
-" nnoremap <lhs> i<C-r>=Tex_itemize('enumerate')<CR>
-"
-" and so on...
-" ==============================================================================
-" Tex_itemize: {{{
-function! Tex_itemize(env)
- return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr>\\item <++>\<cr>\\end{".a:env."}<++>")
-endfunction
-" }}}
-" Tex_description: {{{
-function! Tex_description(env)
- if g:Tex_UseMenuWizard == 1
- let itlabel = input('(Optional) Item label? ')
- if itlabel != ''
- let itlabel = '['.itlabel.']'
- endif
- return IMAP_PutTextWithMovement("\\begin{description}\<cr>\\item".itlabel." <++>\<cr>\\end{description}<++>")
- else
- return IMAP_PutTextWithMovement(s:description)
- endif
-endfunction
-" }}}
-" Tex_figure: {{{
-function! Tex_figure(env)
- if g:Tex_UseMenuWizard == 1
- let flto = input('Float to (htbp)? ')
- let caption = input('Caption? ')
- let center = input('Center ([y]/n)? ')
- let label = input('Label (for use with \ref)? ')
- " additional to AUC Tex since my pics are usually external files
- let pic = input('Name of Pic-File? ')
- if flto != ''
- let flto = '['.flto."]\<cr>"
- else
- let flto = "\<cr>"
- endif
- if pic != ''
- let pic = '\input{'.pic."}\<cr>"
- else
- let pic = "<++>\<cr>"
- endif
- if caption != ''
- let caption = '\caption{'.caption."}\<cr>"
- endif
- if label != ''
- let label = '\label{fig:'.label."}\<cr>"
- endif
- if center == 'y'
- let centr = '\begin{center}' . "\<cr>"
- let centr = centr . pic
- let centr = centr . caption
- let centr = centr . label
- let centr = centr . '\end{center}' . "\<cr>"
- else
- let centr = pic
- let centr = centr . caption
- let centr = centr . label
- endif
- let figure = '\begin{'.a:env.'}'.flto
- let figure = figure . centr
- let figure = figure . '\end{'.a:env.'}'
- return IMAP_PutTextWithMovement(figure)
- else
- if g:Tex_package_detected =~ '\<graphicx\>'
- return IMAP_PutTextWithMovement(s:figure_graphicx)
- else
- return IMAP_PutTextWithMovement(s:figure)
- endif
- endif
-endfunction
-" }}}
-" Tex_table: {{{
-function! Tex_table(env)
- if g:Tex_UseMenuWizard == 1
- let flto = input('Float to (htbp)? ')
- let caption = input('Caption? ')
- let center = input('Center (y/n)? ')
- let label = input('Label? ')
- if flto != ''
- let flto ='['.flto."]\<cr>"
- else
- let flto = ''
- endif
- let ret='\begin{table}'.flto
- if center == 'y'
- let ret=ret."\\begin{center}\<cr>"
- endif
- let foo = '\begin{tabular}'
- let pos = input('(Optional) Position (t b)? ')
- if pos != ''
- let foo = foo.'['.pos.']'
- else
- let foo = foo."\<cr>"
- endif
- let format = input("Format ( l r c p{width} | @{text} )? ")
- if format == ''
- let format = '<++>'
- endif
- let ret = ret.foo.'{'.format."}\<cr><++>\<cr>\\end{tabular}<++>\<cr>"
- if center == 'y'
- let ret=ret."\\end{center}\<cr>"
- endif
- if caption != ''
- let ret=ret.'\caption{'.caption."}\<cr>"
- endif
- if label != ''
- let ret=ret.'\label{tab:'.label."}\<cr>"
- endif
- let ret=ret.'\end{table}<++>'
- return IMAP_PutTextWithMovement(ret)
- else
- return IMAP_PutTextWithMovement(s:table)
- endif
-endfunction
-" }}}
-" Tex_tabular: {{{
-function! Tex_tabular(env)
- if g:Tex_UseMenuWizard == 1
- let pos = input('(Optional) Position (t b)? ')
- let format = input("Format ( l r c p{width} | @{text} )? ")
- if pos != ''
- let pos = '['.pos.']'
- endif
- if format != ''
- let format = '{'.format.'}'
- endif
- return IMAP_PutTextWithMovement('\begin{'.a:env.'}'.pos.format."\<cr> \<cr>\\end{".a:env.'}<++>')
- else
- return IMAP_PutTextWithMovement('\begin{'.a:env.'}[<+position+>]{<+format+>}'."\<cr><++>\<cr>\\end{".a:env.'}<++>')
- endif
-endfunction
-" }}}
-" Tex_eqnarray: {{{
-function! Tex_eqnarray(env)
- if g:Tex_UseMenuWizard == 1
- if a:env !~ '\*'
- let label = input('Label? ')
- if label != ''
- let arrlabel = '\label{'.label."}\<cr>"
- else
- let arrlabel = ''
- endif
- else
- let arrlabel = ''
- endif
- else
- if a:env !~ '\*'
- let arrlabel = "\\label{<++>}\<cr>"
- else
- let arrlabel = ""
- endif
- endif
- return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr><++>\<cr>".arrlabel."\\end{".a:env."}<++>")
-endfunction
-" }}}
-" Tex_list: {{{
-function! Tex_list(env)
- if g:Tex_UseMenuWizard == 1
- let label = input('Label (for \item)? ')
- if label != ''
- let label = '{'.label.'}'
- let addcmd = input('Additional commands? ')
- if addcmd != ''
- let label = label . '{'.addcmd.'}'
- endif
- else
- let label = ''
- endif
- return IMAP_PutTextWithMovement('\begin{list}'.label."\<cr>\\item \<cr>\\end{list}<++>")
- else
- return IMAP_PutTextWithMovement(s:list)
- endif
-endfunction
-" }}}
-" Tex_document: {{{
-function! Tex_document(env)
- if g:Tex_UseMenuWizard == 1
- let dstyle = input('Document style? ')
- let opts = input('(Optional) Options? ')
- let foo = '\documentclass'
- if opts == ''
- let foo = foo.'{'.dstyle.'}'
- else
- let foo = foo.'['.opts.']'.'{'.dstyle.'}'
- endif
- return IMAP_PutTextWithMovement(foo."\<cr>\<cr>\\begin{document}\<cr><++>\<cr>\\end{document}")
- else
- return IMAP_PutTextWithMovement(s:document)
- endif
-endfunction
-" }}}
-" Tex_minipage: {{{
-function! Tex_minipage(env)
- if g:Tex_UseMenuWizard == 1
- let foo = '\begin{minipage}'
- let pos = input('(Optional) Position (t b)? ')
- let width = input('Width? ')
- if pos == ''
- let foo = foo.'{'.width.'}'
- else
- let foo = foo.'['.pos.']{'.width.'}'
- endif
- return IMAP_PutTextWithMovement(foo."\<cr><++>\<cr>\\end{minipage}<++>")
- else
- return IMAP_PutTextWithMovement(s:minipage)
- endif
-endfunction
-" }}}
-" Tex_thebibliography: {{{
-function! Tex_thebibliography(env)
- if g:Tex_UseMenuWizard == 1
- " AUC Tex: "Label for BibItem: 99"
- let indent = input('Indent for BibItem? ')
- let foo = '{'.indent.'}'
- let biblabel = input('(Optional) Bibitem label? ')
- let key = input('Add key? ')
- let bar = '\bibitem'
- if biblabel != ''
- let bar = bar.'['.biblabel.']'
- endif
- let bar = bar.'{'.key.'}'
- return IMAP_PutTextWithMovement('\begin{thebibliography}'.foo."\<cr>".bar." \<cr>\\end{thebibliography}<++>\<Up>")
- else
- return IMAP_PutTextWithMovement(
- \ "\\begin{thebibliography}\<CR>".
- \ "\\bibitem[<+biblabel+>]{<+bibkey+>} <++>\<CR>".
- \ "<++>\<CR>".
- \ "\\end{thebibliography}<++>")
- endif
-endfunction
-" }}}
-
-" ==============================================================================
-" Contributions / suggestions from Carl Mueller (auctex.vim)
-" ==============================================================================
-" PromptForEnvironment: prompts for an environment {{{
-" Description:
-function! PromptForEnvironment(ask)
- return Tex_ChooseFromPrompt(
- \ a:ask."\n" .
- \ Tex_CreatePrompt(g:Tex_PromptedEnvironments, 2, ",") .
- \ "\nEnter name or number of environment :",
- \ g:Tex_PromptedEnvironments, ",")
-endfunction " }}}
-" Tex_DoEnvironment: fast insertion of environments {{{
-" Description:
-" The menus call this function with an argument (the name of the environment
-" to insert). The maps call this without any arguments. In this case, it
-" prompts for an environment to enter if the current line is empty. If
-" called without arguments and there is a word on the current line, then use
-" that as the name of a new environment.
-function! Tex_DoEnvironment(...)
- if a:0 < 1
- let env = matchstr(getline('.'), '^\s*\zs\w*\*\=\ze\s*$')
- " If in current line is more than one word or in visual mode
- " ignore contents of line and prompt for environment
- if env == '' || (exists('s:isvisual') && s:isvisual == 'yes')
- let env = PromptForEnvironment('Choose which environment to insert: ')
- if env != ''
- return Tex_PutEnvironment(env)
- else
- return ''
- endif
- else
- " delete the word on the line into the blackhole register.
- normal! 0"_D
- return Tex_PutEnvironment(env)
- endif
- else
- return Tex_PutEnvironment(a:1)
- endif
-endfunction " }}}
-" Tex_PutEnvironment: calls various specialized functions {{{
-" Description:
-" Based on input argument, it calls various specialized functions.
-function! Tex_PutEnvironment(env)
- if exists("s:isvisual") && s:isvisual == "yes"
- let s:isvisual = 'no'
- if a:env == '\['
- return VEnclose('', '', '\[', '\]')
- elseif a:env == '$$'
- return VEnclose('', '', '$$', '$$')
- endif
- return VEnclose('\begin{'.a:env.'}', '\end{'.a:env.'}', '\begin{'.a:env.'}', '\end{'.a:env.'}')
- else
- " The user can define something like
- " let g:Tex_Env_theorem = "\\begin{theorem}\<CR><++>\<CR>\\end{theorem}"
- " This will effectively over-write the default definition of the
- " theorem environment which uses a \label.
- if exists("b:Tex_Env_{'".a:env."'}")
- return IMAP_PutTextWithMovement(b:Tex_Env_{a:env})
- elseif exists("g:Tex_Env_{'".a:env."'}")
- return IMAP_PutTextWithMovement(g:Tex_Env_{a:env})
- elseif a:env =~ 'equation*\|eqnarray*\|theorem\|lemma\|equation\|eqnarray\|align\*\|align\>\|multline'
- let g:aa = a:env
- return Tex_eqnarray(a:env)
- elseif a:env =~ "enumerate\\|itemize\\|theindex\\|trivlist"
- return Tex_itemize(a:env)
- elseif a:env =~ "table\\|table*"
- return Tex_table(a:env)
- elseif a:env =~ "tabular\\|tabular*\\|array\\|array*"
- return Tex_tabular(a:env)
- elseif exists('*Tex_'.a:env)
- exe 'return Tex_'.a:env.'(a:env)'
- elseif a:env == '$$'
- return IMAP_PutTextWithMovement('$$<++>$$')
- elseif a:env == '\['
- return IMAP_PutTextWithMovement("\\[\<CR><++>\<CR>\\]<++>")
- else
- " Look in supported packages if exists template for environment
- " given in the line
- if exists('g:Tex_package_supported') && g:Tex_package_supported != ''
- let i = 1
- while Tex_Strntok(g:Tex_package_supported, ',', i) != ''
- let checkpack = Tex_Strntok(g:Tex_package_supported, ',', i)
- if g:TeX_package_{checkpack} =~ 'e..:'.a:env
- if a:env =~ '*'
- " Don't allow * to be treated as wildcard
- let aenv = substitute(a:env, '*', '\\*', '')
- else
- let aenv = a:env
- endif
- let envcommand = matchstr(g:TeX_package_{checkpack}, '\zse..:'.aenv.'[^,]\{-}\ze,')
- return Tex_ProcessPackageCommand(envcommand)
- endif
- let i = i + 1
- endwhile
- endif
- endif
- " If nothing before us managed to create an environment, then just
- " create a bare-bones environment from the name.
- return IMAP_PutTextWithMovement('\begin{'.a:env."}\<cr><++>\<cr>\\end{".a:env."}<++>")
- endif
-endfunction " }}}
-" Mapping the <F5> key to insert/prompt for an environment/package {{{
-" and <S-F5> to prompt/replace an environment
-"
-" g:Tex_PromptedEnvironments is a variable containing a comma seperated list
-" of environments. This list defines the prompt which latex-suite sets up when
-" the user presses <F5> on an empty line.
-"
-" Leaving this empty is equivalent to disabling the feature.
-if g:Tex_PromptedEnvironments != ''
-
- let b:DoubleDollars = 0
-
- " Provide only <plug>s here. main.vim will create the actual maps.
- inoremap <silent> <Plug>Tex_FastEnvironmentInsert <C-r>=Tex_FastEnvironmentInsert("no")<cr>
- nnoremap <silent> <Plug>Tex_FastEnvironmentInsert i<C-r>=Tex_FastEnvironmentInsert("no")<cr>
- vnoremap <silent> <Plug>Tex_FastEnvironmentInsert <C-\><C-N>:call Tex_FastEnvironmentInsert("yes")<CR>
- inoremap <silent> <Plug>Tex_FastEnvironmentChange <C-O>:call Tex_ChangeEnvironments()<CR>
- nnoremap <silent> <Plug>Tex_FastEnvironmentChange :call Tex_ChangeEnvironments()<CR>
-
- " Tex_FastEnvironmentInsert: maps <F5> to prompt for env and insert it " {{{
- " Description:
- " This function calculates whether we are in the preamble. If we are
- " then inserts a \usepackage line by either reading in a word from the
- " current line or prompting to type in one. If not in the preamble, then
- " inserts a environment template either by reading in a word from the
- " current line or prompting the user to choose one.
- "
- function! Tex_FastEnvironmentInsert(isvisual)
-
- let start_line = line('.')
- let pos = Tex_GetPos()
- let s:isvisual = a:isvisual
-
- " decide if we are in the preamble of the document. If we are then
- " insert a package, otherwise insert an environment.
- "
- if search('\\documentclass', 'bW') && search('\\begin{document}')
-
- " If there is a \documentclass line and a \begin{document} line in
- " the file, then a part of the file is the preamble.
-
- " search for where the document begins.
- let begin_line = search('\\begin{document}')
- " if the document begins after where we are presently, then we are
- " in the preamble.
- if start_line < begin_line
- " return to our original location and insert a package
- " statement.
- call Tex_SetPos(pos)
- return Tex_package_from_line()
- else
- " we are after the preamble. insert an environment.
- call Tex_SetPos(pos)
- return Tex_DoEnvironment()
- endif
-
- elseif search('\\documentclass')
- " if there is only a \documentclass but no \begin{document}, then
- " the entire file is a preamble. Put a package.
-
- call Tex_SetPos(pos)
- return Tex_package_from_line()
-
- else
- " no \documentclass, put an environment.
-
- call Tex_SetPos(pos)
- return Tex_DoEnvironment()
-
- endif
-
- endfunction
-
- " }}}
- " Tex_package_from_line: puts a \usepackage line in the current line. " {{{
- " Description:
- "
- function! Tex_package_from_line()
- " Function Tex_PutPackage is defined in packages.vim
- " Ignores <F5> in Visual mode
- if s:isvisual == "yes"
- return 0
- else
- let l = getline(".")
- let pack = matchstr(l, '^\s*\zs.*')
- normal! 0"_D
- return Tex_pack_one(pack)
- endif
- endfunction
-
- " }}}
- " Tex_ChangeEnvironments: calls Change() to change the environment {{{
- " Description:
- " Finds out which environment the cursor is positioned in and changes
- " that to the chosen new environment. This function knows the changes
- " which need to be made to change one env to another and calls
- " Change() with the info.
- "
- function! Tex_ChangeEnvironments()
-
- let env_line = searchpair('$$\|\\[\|begin{', '', '$$\|\\]\|end{', "bn")
-
- if env_line != 0
- if getline(env_line) !~ 'begin{'
- let env_name = '['
- else
- let env_name = matchstr(getline(env_line), 'begin{\zs.\{-}\ze}')
- endif
- endif
-
- if !exists('env_name')
- echomsg "You are not inside environment"
- return 0
- endif
-
- exe 'echomsg "You are within a '.env_name.' environment."'
- let change_env = PromptForEnvironment('What do you want to change it to? ')
-
- if change_env == 'eqnarray'
- call <SID>Change('eqnarray', 1, '', env_name =~ '\*$')
- elseif change_env == 'align'
- call <SID>Change('align', 1, '', env_name =~ '\*$')
- elseif change_env == 'eqnarray*'
- call <SID>Change('eqnarray*', 0, '\\nonumber', 0)
- elseif change_env == 'align*'
- call <SID>Change('align*', 0, '\\nonumber', 0)
- elseif change_env == 'equation*'
- call <SID>Change('equation*', 0, '&\|\\lefteqn{\|\\nonumber\|\\\\', 0)
- elseif change_env == ''
- return 0
- else
- call <SID>Change(change_env, 0, '', '')
- return 0
- endif
-
- endfunction
-
- " }}}
- " Change: changes the current env to the new env {{{
- " Description:
- " This function needs to know the changes which need to be made while
- " going from an old environment to a new one. This info, it gets from
- " Tex_ChangeEnvironments
- "
- " env : name of the new environment.
- " label : if 1, then insert a \label at the end of the environment.
- " otherwise, delete any \label line found.
- " delete : a pattern which is to be deleted from the original environment.
- " for example, going to a eqnarray* environment means we need to
- " delete \label's.
- " putInNonumber : whether we need to put a \nonumber before the end of the
- " environment.
- function! s:Change(env, label, delete, putInNonumber)
-
- let start_line = line('.')
- let start_col = virtcol('.')
-
- if a:env == '['
- if b:DoubleDollars == 0
- let first = '\\['
- let second = '\\]'
- else
- let first = '$$'
- let second = '$$'
- endif
- else
- let first = '\\begin{' . a:env . '}'
- let second = '\\end{' . a:env . '}'
- endif
-
- if b:DoubleDollars == 0
- let bottom = searchpair('\\\[\|\\begin{','','\\\]\|\\end{','')
- s/\\\]\|\\end{.\{-}}/\=second/
- let top = searchpair('\\\[\|\\begin{','','\\\]\|\\end{','b')
- s/\\\[\|\\begin{.\{-}}/\=first/
- else
- let bottom = search('\$\$\|\\end{')
- s/\$\$\|\\end{.\{-}}/\=second/
- let top = search('\$\$\|\\begin{','b')
- s/\$\$\|\\begin{.\{-}}/\=first/
- end
- if a:delete != ''
- exe 'silent '. top . "," . bottom . 's/' . a:delete . '//e'
- endif
-
- if a:putInNonumber == 1
- exe top
- call search('\\end\|\\\\')
- if line('.') != bottom
- exe '.+1,' . bottom . 's/\\\\/\\nonumber\\\\/e'
- exe (bottom-1) . 's/\s*$/ \\nonumber/'
- endif
- endif
-
- if a:label == 1
- exe top
- if search("\\label", "W") > bottom
- exe top
- let local_label = input('Label? ')
- if local_label != ''
- put = '\label{'.local_label.'}'
- endif
- normal $
- endif
- else
- exe 'silent '.top . ',' . bottom . ' g/\\label/delete'
- endif
-
- if exists('local_label') && local_label != ''
- exe start_line + 1.' | normal! '.start_col.'|'
- else
- exe start_line.' | normal! '.start_col.'|'
- endif
- endfunction " }}}
-
-endif
-
-" }}}
-" Map <S-F1> through <S-F4> to insert environments {{{
-if g:Tex_HotKeyMappings != ''
-
- " SetUpHotKeys: maps <F1> through <F4> to insert environments
- " Description:
- function! <SID>SetUpHotKeys()
- let i = 1
- let envname = Tex_Strntok(g:Tex_HotKeyMappings, ',', i)
- while envname != ''
-
- exec 'inoremap <silent> <buffer> <S-F'.i.'> <C-r>=Tex_PutEnvironment("'.envname.'")<CR>'
-
- let i = i + 1
- let envname = Tex_Strntok(g:Tex_HotKeyMappings, ',', i)
-
- endwhile
-
- endfunction
-
-endif
-
-" }}}
-" Tex_SetFastEnvironmentMaps: function for setting up the <F5> and <S-F1>-<S-F4> keys {{{
-" Description: This function is made public so it can be called by the
-" SetTeXOptions() function in main.vim
-function! Tex_SetFastEnvironmentMaps()
- if g:Tex_PromptedEnvironments != ''
- call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'i', '<silent> <buffer>')
- call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'n', '<silent> <buffer>')
- call Tex_MakeMap("<F5>", "<Plug>Tex_FastEnvironmentInsert", 'v', '<silent> <buffer>')
- call Tex_MakeMap("<S-F5>", "<Plug>Tex_FastEnvironmentChange", 'i', '<silent> <buffer>')
- call Tex_MakeMap("<S-F5>", "<Plug>Tex_FastEnvironmentChange", 'n', '<silent> <buffer>')
- endif
- if g:Tex_HotKeyMappings != ''
- call s:SetUpHotKeys()
- endif
-endfunction " }}}
-
-" ==============================================================================
-" Contributions / Tex_InsertItem() from Johannes Tanzler
-" ==============================================================================
-" Tex_GetCurrentEnv: gets the current environment in which the cursor lies {{{
-" Description: handles cases such as:
-"
-" \begin{itemize}
-" \item first item
-" \item second item
-" \begin{description}
-" \item first desc
-" \item second
-" % Tex_GetCurrentEnv will return "description" when called from here
-" \end{description}
-" \item third item
-" % Tex_GetCurrentEnv will return "itemize" when called from here
-" \end{itemize}
-" % Tex_GetCurrentEnv will return "" when called from here
-"
-" Author: Alan Schmitt
-function! Tex_GetCurrentEnv()
- let pos = Tex_GetPos()
- let i = 0
- while 1
- let env_line = search('^[^%]*\\\%(begin\|end\){', 'bW')
- if env_line == 0
- " we reached the beginning of the file, so we return the empty string
- call Tex_SetPos(pos)
- return ''
- endif
- if match(getline(env_line), '^[^%]*\\begin{') == -1
- " we found a \\end, so we keep searching
- let i = i + 1
- continue
- else
- " we found a \\begin which has not been \\end'ed. we are done.
- if i == 0
- let env = matchstr(getline(env_line), '\\begin{\zs.\{-}\ze}')
- call Tex_SetPos(pos)
- return env
- else
- " this \\begin closes a \\end, continue searching.
- let i = i - 1
- continue
- endif
- endif
- endwhile
-endfunction
-" }}}
-" Tex_InsertItem: insert \item into a list {{{
-" Description: Find last \begin line, extract env name, return to the start
-" position and insert proper \item, depending on env name.
-" Env names are stored in g: variables it can be used by
-" package files.
-
-TexLet g:Tex_ItemStyle_itemize = '\item '
-TexLet g:Tex_ItemStyle_enumerate = '\item '
-TexLet g:Tex_ItemStyle_theindex = '\item '
-TexLet g:Tex_ItemStyle_thebibliography = '\bibitem[<+biblabel+>]{<+bibkey+>} <++>'
-TexLet g:Tex_ItemStyle_description = '\item[<+label+>] <++>'
-
-function! Tex_InsertItem()
- " Get current enclosing environment
- let env = Tex_GetCurrentEnv()
-
- if exists('g:Tex_ItemStyle_'.env)
- return IMAP_PutTextWithMovement(g:Tex_ItemStyle_{env})
- else
- return ''
- endif
-endfunction
-" }}}
-" Tex_SetItemMaps: sets the \item inserting maps for current buffer {{{
-
-inoremap <script> <silent> <Plug>Tex_InsertItemOnThisLine <C-r>=Tex_InsertItem()<CR>
-inoremap <script> <silent> <Plug>Tex_InsertItemOnNextLine <ESC>o<C-R>=Tex_InsertItem()<CR>
-
-function! Tex_SetItemMaps()
- if !hasmapto("<Plug>Tex_InsertItemOnThisLine", "i")
- imap <buffer> <M-i> <Plug>Tex_InsertItemOnThisLine
- endif
- if !hasmapto("<Plug>Tex_InsertItemOnNextLine", "i")
- imap <buffer> <C-CR> <Plug>Tex_InsertItemOnNextLine
- endif
-endfunction " }}}
-
-" ==============================================================================
-" Implementation of Fast Environment commands for LaTeX commands
-" ==============================================================================
-" Define certain commonly used command definitions {{{
-
-TexLet g:Tex_Com_{'newtheorem'} = '\newtheorem{<+name+>}{<+caption+>}[<+within+>]'
-TexLet g:Tex_Com_{'frac'} = '\frac{<+n+>}{<+d+>}<++>'
-
-" }}}
-" PromptForCommand: prompts for a command {{{
-" Description:
-function! PromptForCommand(ask)
- let common_com_prompt =
- \ Tex_CreatePrompt(g:Tex_PromptedCommands, 2, ',') . "\n" .
- \ "Enter number or command name :"
-
- let inp = input(a:ask."\n".common_com_prompt)
- if inp =~ '^[0-9]\+$'
- let com = Tex_Strntok(g:Tex_PromptedCommands, ',', inp)
- else
- let com = inp
- endif
-
- return com
-endfunction " }}}
-" Tex_DoCommand: fast insertion of commands {{{
-" Description:
-"
-function! Tex_DoCommand(isvisual)
- " If the current line is empty or if a visual selection has been made,
- " prompt for a new environment.
- if getline('.') == '' || a:isvisual == 'yes'
- let com = PromptForCommand('Choose a command to insert: ')
- if com != ''
- return Tex_PutCommand(com, a:isvisual)
- else
- return ''
- endif
- else
- " We want to find out the word under the cursor without issuing
- " any movement commands.
- let presline = getline('.')
- let c = col('.')
-
- let wordbef = matchstr(strpart(presline, 0, c-1), '\k\+\*\?$')
- let wordaft = matchstr(strpart(presline, c-1), '^\k\+\*\?')
-
- let word = wordbef . wordaft
- call Tex_Debug("Tex_DoCommand: wordbef = [".wordbef."], wordaft = [".wordaft."], word = [".word."]", 'env')
-
- " We use \<Del> instead of \<Bs> because \<Bs> does not work
- " unless bs=2
- if word != ''
- return substitute(wordbef, '.', "\<Left>", 'g')
- \ . substitute(word, '.', "\<Del>", 'g')
- \ . Tex_PutCommand(word, a:isvisual)
- else
- let cmd = PromptForCommand('Choose a command to insert: ')
- if cmd != ''
- return Tex_PutCommand(cmd, a:isvisual)
- else
- return ''
- endif
- endif
- endif
-endfunction " }}}
-" Tex_PutCommand: calls various specialized functions {{{
-" Description:
-" Based on input argument, it calls various specialized functions.
-function! Tex_PutCommand(com, isvisual)
- if a:isvisual == "yes"
- if a:com == '$'
- return VEnclose('$', '$', '$', '$')
- elseif a:com == '\\('
- return VEnclose('\\(', '\\)', '\\(', '\\)')
- else
- return VEnclose("\\".a:com.'{', '}', "\\".a:com.'{', '}')
- endif
- else
- if exists('b:Tex_Com_{"'.a:com.'"}')
- return IMAP_PutTextWithMovement(b:Tex_Com_{a:com})
- elseif exists('g:Tex_Com_{"'.a:com.'"}')
- return IMAP_PutTextWithMovement(g:Tex_Com_{a:com})
- elseif a:com == '$'
- return IMAP_PutTextWithMovement('$<++>$')
- else
- return IMAP_PutTextWithMovement("\\".a:com.'{<++>}<++>')
- endif
- endif
-endfunction " }}}
-" Mapping the <F7> key to prompt/insert for command {{{
-" and <S-F7> to prompt/replace command
-"
-" g:Tex_PromptedCommands is a variable containing a comma seperated list
-" of commands.
-"
-" Leaving this empty is equivalent to disabling the feature.
-if g:Tex_PromptedCommands != ''
-
- let b:DoubleDollars = 0
-
- inoremap <silent> <Plug>Tex_FastCommandInsert <C-r>=Tex_DoCommand('no')<cr>
- nnoremap <silent> <Plug>Tex_FastCommandInsert i<C-r>=Tex_DoCommand('no')<cr>
- vnoremap <silent> <Plug>Tex_FastCommandInsert <C-\><C-N>:call Tex_DoCommand('yes')<CR>
-
- inoremap <silent> <Plug>Tex_FastCommandChange <C-O>:call Tex_ChangeCommand('no')<CR>
- nnoremap <silent> <Plug>Tex_FastCommandChange :call Tex_ChangeCommand('no')<CR>
-
- " Tex_ChangeCommand: calls ChangeCommand() to change the environment {{{
- " Description:
- " Finds out which environment the cursor is positioned in and changes
- " that to the chosen new environment. This function knows the changes
- " which need to be made to change one env to another and calls
- " ChangeCommand() with the info.
- "
- function! Tex_ChangeCommand(isvisual)
-
- let pos_com = Tex_GetPos()
-
- let com_line = searchpair('\\\k\{-}{', '', '}', 'b')
-
- if com_line != 0
- normal l
- let com_name = expand('<cword>')
- endif
-
- if !exists('com_name')
- echomsg "You are not inside command"
- call Tex_SetPos(pos_com)
- return 0
- endif
-
- exe 'echomsg "You are within a '.com_name.' command."'
- let change_com = PromptForCommand('Do you want to change it to (number or name)? ')
-
- if change_com == ''
- call Tex_SetPos(pos_com)
- return 0
- else
- call <SID>ChangeCommand(change_com)
- call Tex_SetPos(pos_com)
- return 0
- endif
-
- endfunction
-
- " }}}
- " ChangeCommand: Changes current command according to prompt menu {{{
- " Description:
- "
- function! s:ChangeCommand(newcom)
-
- exe 'normal! ct{'.a:newcom."\<Esc>"
-
- endfunction
- " }}}
-
-endif
-
-" }}}
-" Tex_SetFastCommandMaps: function for setting up the <F7> keys {{{
-" Description: This function is made public so it can be called by the
-" SetTeXOptions() function in main.vim
-function! Tex_SetFastCommandMaps()
- if g:Tex_PromptedCommands != ''
- if !hasmapto('<Plug>Tex_FastCommandInsert', 'i')
- imap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert
- endif
- if !hasmapto('<Plug>Tex_FastCommandInsert', 'n')
- nmap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert
- endif
- if !hasmapto('<Plug>Tex_FastCommandChange', 'i')
- imap <silent> <buffer> <S-F7> <Plug>Tex_FastCommandChange
- endif
- if !hasmapto('<Plug>Tex_FastCommandChange', 'n')
- nmap <silent> <buffer> <S-F7> <Plug>Tex_FastCommandChange
- endif
- if !hasmapto('<Plug>Tex_FastCommandInsert', 'v')
- vmap <silent> <buffer> <F7> <Plug>Tex_FastCommandInsert
- endif
- endif
-endfunction " }}}
-
-" SetEnvMacrosOptions: sets mappings for buffers {{{
-" " Description:
-function! <SID>SetEnvMacrosOptions()
- if exists('b:doneTexEnvMaps')
- return
- endif
- let b:doneTexEnvMaps = 1
- if g:Tex_PromptedEnvironments != '' || g:Tex_HotKeyMappings != ''
- call Tex_SetFastEnvironmentMaps()
- endif
- if g:Tex_PromptedCommands != ''
- call Tex_SetFastCommandMaps()
- endif
- call Tex_SetItemMaps()
-endfunction " }}}
-" Catch the Filetype event so we set maps for each buffer {{{
-augroup LatexSuite
- au LatexSuite User LatexSuiteFileType
- \ call Tex_Debug('envmacros.vim: Catching LatexSuiteFileType event', 'env') |
- \ call s:SetEnvMacrosOptions()
-augroup END
-" }}}
-
-" this statement has to be at the end.
-let s:doneOnce = 1
-
-" vim:fdm=marker:nowrap:noet:ff=unix
diff --git a/ftplugin/latex-suite/folding.vim b/ftplugin/latex-suite/folding.vim
deleted file mode 100644
index b65407c5..00000000
--- a/ftplugin/latex-suite/folding.vim
+++ /dev/null
@@ -1,400 +0,0 @@
-"=============================================================================
-" File: folding.vim
-" Author: Srinath Avadhanula
-" modifications/additions by Zhang Linbo
-" Created: Tue Apr 23 05:00 PM 2002 PST
-"
-" Description: functions to interact with Syntaxfolds.vim
-"=============================================================================
-
-nnoremap <unique> <Plug>Tex_RefreshFolds :call MakeTexFolds(1)<cr>
-
-augroup LatexSuite
- au LatexSuite User LatexSuiteFileType
- \ call Tex_Debug('folding.vim: catching LatexSuiteFileType', 'fold') |
- \ call Tex_SetFoldOptions()
-augroup END
-
-" Tex_SetFoldOptions: sets maps for every buffer {{{
-" Description:
-function! Tex_SetFoldOptions()
- if exists('b:doneSetFoldOptions')
- return
- endif
- let b:doneSetFoldOptions = 1
-
- setlocal foldtext=TexFoldTextFunction()
-
- if g:Tex_Folding && g:Tex_AutoFolding
- call MakeTexFolds(0)
- endif
-
- let s:ml = '<Leader>'
-
- call Tex_MakeMap(s:ml."rf", "<Plug>Tex_RefreshFolds", 'n', '<silent> <buffer>')
-
-endfunction " }}}
-" Tex_FoldSections: creates section folds {{{
-" Author: Zhang Linbo
-" Description:
-" This function takes a comma seperated list of "sections" and creates fold
-" definitions for them. The first item is supposed to be the "shallowest" field
-" and the last is the "deepest". See g:Tex_FoldedSections for the default
-" definition of the lst input argument.
-"
-" **works recursively**
-function! Tex_FoldSections(lst, endpat)
- let i = match(a:lst, ',')
- if i > 0
- let s = strpart(a:lst, 0, i)
- else
- let s = a:lst
- endif
- if s =~ '%%fakesection'
- let s = '^\s*' . s
- else
- let pattern = ''
- let prefix = ''
- for label in split(s, "|")
- let pattern .= prefix . '^\s*\\' . label . '\W\|^\s*%%fake' . label
- let prefix = '\W\|'
- endfor
- let s = pattern
- endif
- let endpat = s . '\|' . a:endpat
- if i > 0
- call Tex_FoldSections(strpart(a:lst,i+1), endpat)
- endif
- let endpat = '^\s*\\appendix\W\|' . endpat
- call AddSyntaxFoldItem(s, endpat, 0, -1)
-endfunction
-" }}}
-" MakeTexFolds: function to create fold items for latex. {{{
-"
-" used in conjunction with MakeSyntaxFolds().
-" see ../plugin/syntaxFolds.vim for documentation
-function! MakeTexFolds(force)
- if exists('g:Tex_Folding') && !g:Tex_Folding
- return
- endif
- if &ft != 'tex'
- return
- end
-
- " Setup folded items lists g:Tex_Foldedxxxx
- " 1. Use default value if g:Tex_Foldedxxxxxx is not defined
- " 2. prepend default value to g:Tex_Foldedxxxxxx if it starts with ','
- " 3. append default value to g:Tex_Foldedxxxxxx if it ends with ','
-
- " Folding items which are not caught in any of the standard commands,
- " environments or sections.
- let s = 'item,slide,preamble,<<<'
- if !exists('g:Tex_FoldedMisc')
- let g:Tex_FoldedMisc = s
- elseif g:Tex_FoldedMisc[0] == ','
- let g:Tex_FoldedMisc = s . g:Tex_FoldedMisc
- elseif g:Tex_FoldedMisc =~ ',$'
- let g:Tex_FoldedMisc = g:Tex_FoldedMisc . s
- endif
-
- " By default do not fold any commands. It looks like trying to fold
- " commands is a difficult problem since commands can be arbitrarily nested
- " and the end patterns are not unique unlike the case of environments.
- " For this to work well, we need a regexp which will match a line only if
- " a command begins on that line but does not end on that line. This
- " requires a regexp which will match unbalanced curly braces and that is
- " apparently not doable with regexps.
- let s = ''
- if !exists('g:Tex_FoldedCommands')
- let g:Tex_FoldedCommands = s
- elseif g:Tex_FoldedCommands[0] == ','
- let g:Tex_FoldedCommands = s . g:Tex_FoldedCommands
- elseif g:Tex_FoldedCommands =~ ',$'
- let g:Tex_FoldedCommands = g:Tex_FoldedCommands . s
- endif
-
- let s = 'verbatim,comment,eq,gather,align,figure,table,thebibliography,'
- \. 'keywords,abstract,titlepage'
- if !exists('g:Tex_FoldedEnvironments')
- let g:Tex_FoldedEnvironments = s
- elseif g:Tex_FoldedEnvironments[0] == ','
- let g:Tex_FoldedEnvironments = s . g:Tex_FoldedEnvironments
- elseif g:Tex_FoldedEnvironments =~ ',$'
- let g:Tex_FoldedEnvironments = g:Tex_FoldedEnvironments . s
- endif
-
- if !exists('g:Tex_FoldedSections')
- let g:Tex_FoldedSections = 'part,chapter,section,'
- \. 'subsection,subsubsection,paragraph'
- endif
-
- " the order in which these calls are made decides the nestedness. in
- " latex, a table environment will always be embedded in either an item or
- " a section etc. not the other way around. so we first fold up all the
- " tables. and then proceed with the other regions.
-
- let b:numFoldItems = 0
-
- " ========================================================================
- " How to add new folding items {{{
- " ========================================================================
- "
- " Each of the following function calls defines a syntax fold region. Each
- " definition consists of a call to the AddSyntaxFoldItem() function.
- "
- " The order in which the folds are defined is important. Juggling the
- " order of the function calls will create havoc with folding. The
- " "deepest" folding item needs to be called first. For example, if
- " the \begin{table} environment is a subset (or lies within) the \section
- " environment, then add the definition for the \table first.
- "
- " The AddSyntaxFoldItem() function takes either 4 or 6 arguments. When it
- " is called with 4 arguments, it is equivalent to calling it with 6
- " arguments with the last two left blank (i.e as empty strings)
- "
- " The explanation for each argument is as follows:
- " startpat: a line matching this pattern defines the beginning of a fold.
- " endpat : a line matching this pattern defines the end of a fold.
- " startoff: this is the offset from the starting line at which folding will
- " actually start
- " endoff : like startoff, but gives the offset of the actual fold end from
- " the line satisfying endpat.
- " startoff and endoff are necessary when the folding region does
- " not have a specific end pattern corresponding to a start
- " pattern. for example in latex,
- " \begin{section}
- " defines the beginning of a section, but its not necessary to
- " have a corresponding
- " \end{section}
- " the section is assumed to end 1 line _before_ another section
- " starts.
- " startskip: a pattern which defines the beginning of a "skipped" region.
- "
- " For example, suppose we define a \itemize fold as follows:
- " startpat = '^\s*\\item',
- " endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
- " startoff = 0,
- " endoff = -1
- "
- " This defines a fold which starts with a line beginning with an
- " \item and ending one line before a line beginning with an
- " \item or \end{enumerate} etc.
- "
- " Then, as long as \item's are not nested things are fine.
- " However, once items begin to nest, the fold started by one
- " \item can end because of an \item in an \itemize
- " environment within this \item. i.e, the following can happen:
- "
- " \begin{itemize}
- " \item Some text <------- fold will start here
- " This item will contain a nested item
- " \begin{itemize} <----- fold will end here because next line contains \item...
- " \item Hello
- " \end{itemize} <----- ... instead of here.
- " \item Next item of the parent itemize
- " \end{itemize}
- "
- " Therefore, in order to completely define a folding item which
- " allows nesting, we need to also define a "skip" pattern.
- " startskip and end skip do that.
- " Leave '' when there is no nesting.
- " endskip: the pattern which defines the end of the "skip" pattern for
- " nested folds.
- "
- " Example:
- " 1. A syntax fold region for a latex section is
- " startpat = "\\section{"
- " endpat = "\\section{"
- " startoff = 0
- " endoff = -1
- " startskip = ''
- " endskip = ''
- " Note that the start and end patterns are thus the same and endoff has a
- " negative value to capture the effect of a section ending one line before
- " the next starts.
- " 2. A syntax fold region for the \itemize environment is:
- " startpat = '^\s*\\item',
- " endpat = '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
- " startoff = 0,
- " endoff = -1,
- " startskip = '^\s*\\begin{\(enumerate\|itemize\|description\)}',
- " endskip = '^\s*\\end{\(enumerate\|itemize\|description\)}'
- " Note the use of startskip and endskip to allow nesting.
- "
- "
- " }}}
- " ========================================================================
-
- " {{{ comment lines
- if g:Tex_FoldedMisc =~ '\<comments\>'
- call AddSyntaxFoldItem (
- \ '^%\([^%]\|[^f]\|[^a]\|[^k]\|[^e]\)',
- \ '^[^%]',
- \ 0,
- \ -1
- \ )
- endif
- " }}}
-
- " {{{ items
- if g:Tex_FoldedMisc =~ '\<item\>'
- call AddSyntaxFoldItem (
- \ '^\s*\\item',
- \ '^\s*\\item\|^\s*\\end{\(enumerate\|itemize\|description\)}',
- \ 0,
- \ -1,
- \ '^\s*\\begin{\(enumerate\|itemize\|description\)}',
- \ '^\s*\\end{\(enumerate\|itemize\|description\)}'
- \ )
- endif
- " }}}
-
- " {{{ title
- if g:Tex_FoldedMisc =~ '\<title\>'
- call AddSyntaxFoldItem (
- \ '^\s*\\title\W',
- \ '^\s*\\maketitle',
- \ 0,
- \ 0
- \ )
- endif
- " }}}
-
- " Commands and Environments {{{
- " Fold the commands and environments in 2 passes.
- let pass = 0
- while pass < 2
- if pass == 0
- let lst = g:Tex_FoldedCommands
- else
- let lst = g:Tex_FoldedEnvironments
- endif
- while lst != ''
- let i = match(lst, ',')
- if i > 0
- let s = strpart(lst, 0, i)
- let lst = strpart(lst, i+1)
- else
- let s = lst
- let lst = ''
- endif
- if s != ''
- if pass == 0
- " NOTE: This pattern ensures that a command which is
- " terminated on the same line will not start a fold.
- " However, it will also refuse to fold certain commands
- " which have not terminated. eg:
- " \commandname{something \bf{text} and
- " will _not_ start a fold.
- " In other words, the pattern is safe, but not exact.
- call AddSyntaxFoldItem('^\s*\\'.s.'{[^{}]*$','^[^}]*}',0,0)
- else
- call AddSyntaxFoldItem('^\s*\\begin{'.s,'\(^\|\s\)\s*\\end{'.s,0,0)
- endif
- endif
- endwhile
- let pass = pass + 1
- endwhile
- " }}}
-
- " Sections {{{
- if g:Tex_FoldedSections != ''
- call Tex_FoldSections(g:Tex_FoldedSections,
- \ '^\s*\\frontmatter\|^\s*\\mainmatter\|^\s*\\backmatter\|'
- \. '^\s*\\begin{thebibliography\|>>>\|^\s*\\endinput\|'
- \. '^\s*\\begin{slide\|^\s*\\end{document')
- endif
- " }}}
-
- " {{{ slide
- if g:Tex_FoldedMisc =~ '\<slide\>'
- call AddSyntaxFoldItem (
- \ '^\s*\\begin{slide',
- \ '^\s*\\appendix\W\|^\s*\\chapter\W\|^\s*\\end{slide\|^\s*\\end{document',
- \ 0,
- \ 0
- \ )
- endif
- " }}}
-
- " {{{ preamble
- if g:Tex_FoldedMisc =~ '\<preamble\>'
- call AddSyntaxFoldItem (
- \ '^\s*\\document\(class\|style\).*{',
- \ '^\s*\\begin{document}',
- \ 0,
- \ -1
- \ )
- endif
- " }}}
-
- " Manually folded regions {{{
- if g:Tex_FoldedMisc =~ '\(^\|,\)<<<\(,\|$\)'
- call AddSyntaxFoldItem (
- \ '<<<',
- \ '>>>',
- \ 0,
- \ 0
- \ )
- endif
- " }}}
-
- call MakeSyntaxFolds(a:force)
- normal! zv
-endfunction
-
-" }}}
-" TexFoldTextFunction: create fold text for folds {{{
-function! TexFoldTextFunction()
- let leadingSpace = matchstr(' ', ' \{,'.indent(v:foldstart).'}')
- if getline(v:foldstart) =~ '^\s*\\begin{'
- let header = matchstr(getline(v:foldstart),
- \ '^\s*\\begin{\zs\([:alpha:]*\)[^}]*\ze}')
- let caption = ''
- let label = ''
- let i = v:foldstart
- while i <= v:foldend
- if getline(i) =~ '\\caption'
- " distinguish between
- " \caption{fulldesc} - fulldesc will be displayed
- " \caption[shortdesc]{fulldesc} - shortdesc will be displayed
- if getline(i) =~ '\\caption\['
- let caption = matchstr(getline(i), '\\caption\[\zs[^\]]*')
- let caption = substitute(caption, '\zs\]{.*}[^}]*$', '', '')
- else
- let caption = matchstr(getline(i), '\\caption{\zs.*')
- let caption = substitute(caption, '\zs}[^}]*$', '', '')
- end
- elseif getline(i) =~ '\\label'
- let label = matchstr(getline(i), '\\label{\zs.*')
- " :FIXME: this does not work when \label contains a
- " newline or a }-character
- let label = substitute(label, '\([^}]*\)}.*$', '\1', '')
- end
-
- let i = i + 1
- endwhile
-
- let ftxto = foldtext()
- " if no caption found, then use the second line.
- if caption == ''
- let caption = getline(v:foldstart + 1)
- end
-
- let retText = matchstr(ftxto, '^[^:]*').': '.header.
- \ ' ('.label.'): '.caption
- return leadingSpace.retText
-
- elseif getline(v:foldstart) =~ '^%' && getline(v:foldstart) !~ '^%%fake'
- let ftxto = foldtext()
- return leadingSpace.substitute(ftxto, ':', ': % ', '')
- elseif getline(v:foldstart) =~ '^\s*\\document\(class\|style\).*{'
- let ftxto = leadingSpace.foldtext()
- return substitute(ftxto, ':', ': Preamble: ', '')
- else
- return leadingSpace.foldtext()
- end
-endfunction
-" }}}
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/main.vim b/ftplugin/latex-suite/main.vim
deleted file mode 100644
index ad27b917..00000000
--- a/ftplugin/latex-suite/main.vim
+++ /dev/null
@@ -1,1042 +0,0 @@
-" LaTeX filetype
-" Language: LaTeX (ft=tex)
-" Maintainer: Srinath Avadhanula
-" URL:
-
-" line continuation used here.
-let s:save_cpo = &cpo
-set cpo&vim
-
-" avoiding re-inclusion {{{
-" the avoiding re-inclusion statement is not provided here because the files
-" which call this file should in the normal course of events handle the
-" re-inclusion stuff.
-
-" we definitely dont want to run through the entire file each and every time.
-" only once to define the functions. for successive latex files, just set up
-" the folding and mappings and quit.
-if exists('s:doneFunctionDefinitions') && !exists('b:forceRedoLocalTex')
- call s:SetTeXOptions()
- finish
-endif
-
-let s:doneFunctionDefinitions = 1
-
-" get the place where this plugin resides for setting cpt and dict options.
-" these lines need to be outside the function.
-let s:path = expand('<sfile>:p:h')
-" set up personal defaults.
-runtime ftplugin/tex/texrc
-" set up global defaults.
-exe "so ".fnameescape(s:path.'/texrc')
-
-" }}}
-
-nmap <silent> <script> <plug> i
-imap <silent> <script> <C-o><plug> <Nop>
-
-" ==============================================================================
-" mappings
-" ==============================================================================
-" {{{
-" calculate the mapleader character.
-let s:ml = '<Leader>'
-
-if !exists('s:doneMappings')
- let s:doneMappings = 1
- " short forms for latex formatting and math elements. {{{
- " taken from auctex.vim or miktexmacros.vim
- call IMAP ('__', '_{<++>}<++>', "tex")
- call IMAP ('()', '(<++>)<++>', "tex")
- call IMAP ('[]', '[<++>]<++>', "tex")
- call IMAP ('{}', '{<++>}<++>', "tex")
- call IMAP ('^^', '^{<++>}<++>', "tex")
- call IMAP ('$$', '$<++>$<++>', "tex")
- call IMAP ('==', '&=& ', "tex")
- call IMAP ('~~', '&\approx& ', "tex")
- call IMAP ('=~', '\approx', "tex")
- call IMAP ('::', '\dots', "tex")
- call IMAP ('((', '\left( <++> \right)<++>', "tex")
- call IMAP ('[[', '\left[ <++> \right]<++>', "tex")
- call IMAP ('{{', '\left\{ <++> \right\}<++>', "tex")
- call IMAP (g:Tex_Leader.'^', '\hat{<++>}<++>', "tex")
- call IMAP (g:Tex_Leader.'_', '\bar{<++>}<++>', "tex")
- call IMAP (g:Tex_Leader.'6', '\partial', "tex")
- call IMAP (g:Tex_Leader.'8', '\infty', "tex")
- call IMAP (g:Tex_Leader.'/', '\frac{<++>}{<++>}<++>', "tex")
- call IMAP (g:Tex_Leader.'%', '\frac{<++>}{<++>}<++>', "tex")
- call IMAP (g:Tex_Leader.'@', '\circ', "tex")
- call IMAP (g:Tex_Leader.'0', '^\circ', "tex")
- call IMAP (g:Tex_Leader.'=', '\equiv', "tex")
- call IMAP (g:Tex_Leader."\\",'\setminus', "tex")
- call IMAP (g:Tex_Leader.'.', '\cdot', "tex")
- call IMAP (g:Tex_Leader.'*', '\times', "tex")
- call IMAP (g:Tex_Leader.'&', '\wedge', "tex")
- call IMAP (g:Tex_Leader.'-', '\bigcap', "tex")
- call IMAP (g:Tex_Leader.'+', '\bigcup', "tex")
- call IMAP (g:Tex_Leader.'M', '\sum_{<++>}^{<++>}<++>', 'tex')
- call IMAP (g:Tex_Leader.'S', '\sum_{<++>}^{<++>}<++>', 'tex')
- call IMAP (g:Tex_Leader.'(', '\subset', "tex")
- call IMAP (g:Tex_Leader.')', '\supset', "tex")
- call IMAP (g:Tex_Leader.'<', '\le', "tex")
- call IMAP (g:Tex_Leader.'>', '\ge', "tex")
- call IMAP (g:Tex_Leader.',', '\nonumber', "tex")
- call IMAP (g:Tex_Leader.'~', '\tilde{<++>}<++>', "tex")
- call IMAP (g:Tex_Leader.';', '\dot{<++>}<++>', "tex")
- call IMAP (g:Tex_Leader.':', '\ddot{<++>}<++>', "tex")
- call IMAP (g:Tex_Leader.'2', '\sqrt{<++>}<++>', "tex")
- call IMAP (g:Tex_Leader.'|', '\Big|', "tex")
- call IMAP (g:Tex_Leader.'I', "\\int_{<++>}^{<++>}<++>", 'tex')
- " }}}
- " Greek Letters {{{
- call IMAP(g:Tex_Leader.'a', '\alpha', 'tex')
- call IMAP(g:Tex_Leader.'b', '\beta', 'tex')
- call IMAP(g:Tex_Leader.'c', '\chi', 'tex')
- call IMAP(g:Tex_Leader.'d', '\delta', 'tex')
- call IMAP(g:Tex_Leader.'e', '\varepsilon', 'tex')
- call IMAP(g:Tex_Leader.'f', '\varphi', 'tex')
- call IMAP(g:Tex_Leader.'g', '\gamma', 'tex')
- call IMAP(g:Tex_Leader.'h', '\eta', 'tex')
- call IMAP(g:Tex_Leader.'i', '\iota', 'tex')
- call IMAP(g:Tex_Leader.'k', '\kappa', 'tex')
- call IMAP(g:Tex_Leader.'l', '\lambda', 'tex')
- call IMAP(g:Tex_Leader.'m', '\mu', 'tex')
- call IMAP(g:Tex_Leader.'n', '\nu', 'tex')
- call IMAP(g:Tex_Leader.'p', '\pi', 'tex')
- call IMAP(g:Tex_Leader.'q', '\theta', 'tex')
- call IMAP(g:Tex_Leader.'r', '\rho', 'tex')
- call IMAP(g:Tex_Leader.'s', '\sigma', 'tex')
- call IMAP(g:Tex_Leader.'t', '\tau', 'tex')
- call IMAP(g:Tex_Leader.'u', '\upsilon', 'tex')
- call IMAP(g:Tex_Leader.'v', '\varsigma', 'tex')
- call IMAP(g:Tex_Leader.'w', '\omega', 'tex')
- call IMAP(g:Tex_Leader.'w', '\wedge', 'tex') " AUCTEX style
- call IMAP(g:Tex_Leader.'x', '\xi', 'tex')
- call IMAP(g:Tex_Leader.'y', '\psi', 'tex')
- call IMAP(g:Tex_Leader.'z', '\zeta', 'tex')
- " not all capital greek letters exist in LaTeX!
- " reference: http://www.giss.nasa.gov/latex/ltx-405.html
- call IMAP(g:Tex_Leader.'D', '\Delta', 'tex')
- call IMAP(g:Tex_Leader.'F', '\Phi', 'tex')
- call IMAP(g:Tex_Leader.'G', '\Gamma', 'tex')
- call IMAP(g:Tex_Leader.'Q', '\Theta', 'tex')
- call IMAP(g:Tex_Leader.'L', '\Lambda', 'tex')
- call IMAP(g:Tex_Leader.'X', '\Xi', 'tex')
- call IMAP(g:Tex_Leader.'Y', '\Psi', 'tex')
- call IMAP(g:Tex_Leader.'S', '\Sigma', 'tex')
- call IMAP(g:Tex_Leader.'U', '\Upsilon', 'tex')
- call IMAP(g:Tex_Leader.'W', '\Omega', 'tex')
- " }}}
- " ProtectLetters: sets up indentity maps for things like ``a {{{
- " " Description: If we simply do
- " call IMAP('`a', '\alpha', 'tex')
- " then we will never be able to type 'a' after a tex-quotation. Since
- " IMAP() always uses the longest map ending in the letter, this problem
- " can be avoided by creating a fake map for ``a -> ``a.
- " This function sets up fake maps of the following forms:
- " ``[aA] -> ``[aA] (for writing in quotations)
- " \`[aA] -> \`[aA] (for writing diacritics)
- " "`[aA] -> "`[aA] (for writing german quotations)
- " It does this for all printable lower ascii characters just to make sure
- " we dont let anything slip by.
- function! s:ProtectLetters(first, last)
- let i = a:first
- while i <= a:last
- if nr2char(i) =~ '[[:print:]]'
- call IMAP('``'.nr2char(i), '``'.nr2char(i), 'tex')
- call IMAP('\`'.nr2char(i), '\`'.nr2char(i), 'tex')
- call IMAP('"`'.nr2char(i), '"`'.nr2char(i), 'tex')
- endif
- let i = i + 1
- endwhile
- endfunction
- call s:ProtectLetters(32, 127)
- " }}}
- " vmaps: enclose selected region in brackets, environments {{{
- " The action changes depending on whether the selection is character-wise
- " or line wise. for example, selecting linewise and pressing \v will
- " result in the region being enclosed in \begin{verbatim}, \end{verbatim},
- " whereas in characterise visual mode, the thingie is enclosed in \verb|
- " and |.
- exec 'vnoremap <silent> '.g:Tex_Leader."( \<C-\\>\<C-N>:call VEnclose('\\left( ', ' \\right)', '\\left(', '\\right)')\<CR>"
- exec 'vnoremap <silent> '.g:Tex_Leader."[ \<C-\\>\<C-N>:call VEnclose('\\left[ ', ' \\right]', '\\left[', '\\right]')\<CR>"
- exec 'vnoremap <silent> '.g:Tex_Leader."{ \<C-\\>\<C-N>:call VEnclose('\\left\\{ ', ' \\right\\}', '\\left\\{', '\\right\\}')\<CR>"
- exec 'vnoremap <silent> '.g:Tex_Leader."$ \<C-\\>\<C-N>:call VEnclose('$', '$', '\\[', '\\]')\<CR>"
- " }}}
-end
-
-" }}}
-
-" ==============================================================================
-" Helper functions for debugging
-" ==============================================================================
-" Tex_Debug: appends the argument into s:debugString {{{
-" Description:
-"
-" Do not want a memory leak! Set this to zero so that latex-suite always
-" starts out in a non-debugging mode.
-if !exists('g:Tex_Debug')
- let g:Tex_Debug = 0
-endif
-function! Tex_Debug(str, ...)
- if !g:Tex_Debug
- return
- endif
- if a:0 > 0
- let pattern = a:1
- else
- let pattern = ''
- endif
- if !exists('s:debugString_'.pattern)
- let s:debugString_{pattern} = ''
- endif
- let s:debugString_{pattern} = s:debugString_{pattern}.a:str."\n"
-
- let s:debugString_ = (exists('s:debugString_') ? s:debugString_ : '')
- \ . pattern.' : '.a:str."\n"
-
- if Tex_GetVarValue('Tex_DebugLog') != ''
- exec 'redir! >> '.Tex_GetVarValue('Tex_DebugLog')
- silent! echo pattern.' : '.a:str
- redir END
- endif
-endfunction " }}}
-" Tex_PrintDebug: prings s:debugString {{{
-" Description:
-"
-function! Tex_PrintDebug(...)
- if a:0 > 0
- let pattern = a:1
- else
- let pattern = ''
- endif
- if exists('s:debugString_'.pattern)
- echo s:debugString_{pattern}
- endif
-endfunction " }}}
-" Tex_ClearDebug: clears the s:debugString string {{{
-" Description:
-"
-function! Tex_ClearDebug(...)
- if a:0 > 0
- let pattern = a:1
- else
- let pattern = ''
- endif
- if exists('s:debugString_'.pattern)
- let s:debugString_{pattern} = ''
- endif
-endfunction " }}}
-" Tex_ShowVariableValue: debugging help {{{
-" provides a way to examine script local variables from outside the script.
-" very handy for debugging.
-function! Tex_ShowVariableValue(...)
- let i = 1
- while i <= a:0
- exe 'let arg = a:'.i
- if exists('s:'.arg) ||
- \ exists('*s:'.arg)
- exe 'let val = s:'.arg
- echomsg 's:'.arg.' = '.val
- end
- let i = i + 1
- endwhile
-endfunction
-
-" }}}
-
-" ==============================================================================
-" Helper functions for grepping
-" ==============================================================================
-" Tex_Grep: shorthand for :grep or :vimgrep {{{
-function! Tex_Grep(string, where)
- if v:version >= 700
- exec 'silent! vimgrep! /'.a:string.'/ '.a:where
- else
- exec 'silent! grep! '.Tex_EscapeForGrep(a:string).' '.a:where
- endif
-endfunction
-
-" }}}
-" Tex_Grepadd: shorthand for :grepadd or :vimgrepadd {{{
-function! Tex_Grepadd(string, where)
- if v:version >= 700
- exec 'silent! vimgrepadd! /'.a:string.'/ '.a:where
- else
- exec "silent! grepadd! ".Tex_EscapeForGrep(a:string).' '.a:where
- endif
-endfunction
-
-" }}}
-" Tex_EscapeForGrep: escapes back-slashes and doublequotes the correct number of times {{{
-" Description: This command escapes the backslash and double quotes in a
-" search pattern the correct number of times so it can be used in the ``:grep``
-" command. This command is meant to be used as::
-"
-" exec "silent! grep ".Tex_EscapeForGrep(pattern)." file"
-"
-" The input argument to this function should be the string which you want
-" the external command to finally see. For example, to search for a string
-" ``'\bibitem'``, the grep command needs to be passed a string like
-" ``'\\bibitem'``. Examples::
-"
-" Tex_EscapeForGrep('\\bibitem') " correct
-" Tex_EscapeForGrep('\bibitem') " wrong
-" Tex_EscapeForGrep("\\bibitem") " wrong
-" Tex_EscapeForGrep('\<word\>') " correct
-"
-function! Tex_EscapeForGrep(string)
- let retVal = a:string
-
- " The shell halves the backslashes.
- if &shell =~ 'sh'
- let retVal = escape(retVal, "\\")
-
- " If shellxquote is set, then the backslashes are halved yet again.
- if &shellxquote == '"'
- let retVal = escape(retVal, "\"\\")
- endif
-
- endif
- " escape special characters which bash/cmd.exe might interpret
- let retVal = escape(retVal, "<>")
-
- return retVal
-endfunction " }}}
-
-" ==============================================================================
-" Uncategorized helper functions
-" ==============================================================================
-" Tex_Strntok: extract the n^th token from a list {{{
-" example: Strntok('1,23,3', ',', 2) = 23
-fun! Tex_Strntok(s, tok, n)
- return matchstr( a:s.a:tok[0], '\v(\zs([^'.a:tok.']*)\ze['.a:tok.']){'.a:n.'}')
-endfun
-
-" }}}
-" Tex_CreatePrompt: creates a prompt string {{{
-" Description:
-" Arguments:
-" promptList: This is a string of the form:
-" 'item1,item2,item3,item4'
-" cols: the number of columns in the resultant prompt
-" sep: the list seperator token
-"
-" Example:
-" Tex_CreatePrompt('item1,item2,item3,item4', 2, ',')
-" returns
-" "(1) item1\t(2)item2\n(3)item3\t(4)item4"
-"
-" This string can be used in the input() function.
-function! Tex_CreatePrompt(promptList, cols, sep)
-
- let g:listSep = a:sep
- let num_common = GetListCount(a:promptList)
-
- let i = 1
- let promptStr = ""
-
- while i <= num_common
-
- let j = 0
- while j < a:cols && i + j <= num_common
- let com = Tex_Strntok(a:promptList, a:sep, i+j)
- let promptStr = promptStr.'('.(i+j).') '.
- \ com."\t".( strlen(com) < 4 ? "\t" : '' )
-
- let j = j + 1
- endwhile
-
- let promptStr = promptStr."\n"
-
- let i = i + a:cols
- endwhile
- return promptStr
-endfunction
-
-" }}}
-" Tex_CleanSearchHistory: removes last search item from search history {{{
-" Description: This function needs to be globally visible because its
-" called from outside the script during expansion.
-function! Tex_CleanSearchHistory()
- call histdel("/", -1)
- let @/ = histget("/", -1)
-endfunction
-nmap <silent> <script> <plug>cleanHistory :call Tex_CleanSearchHistory()<CR>
-
-" }}}
-" Tex_GetVarValue: gets the value of the variable {{{
-" Description:
-" See if a window-local, buffer-local or global variable with the given name
-" exists and if so, returns the corresponding value. If none exist, return
-" an empty string.
-function! Tex_GetVarValue(varname, ...)
- if exists('w:'.a:varname)
- return w:{a:varname}
- elseif exists('b:'.a:varname)
- return b:{a:varname}
- elseif exists('g:'.a:varname)
- return g:{a:varname}
- elseif a:0 > 0
- return a:1
- else
- return ''
- endif
-endfunction " }}}
-" Tex_GetMainFileName: gets the name of the main file being compiled. {{{
-" Description: returns the full path name of the main file.
-" This function checks for the existence of a .latexmain file
-" which might point to the location of a "main" latex file.
-" If .latexmain exists, then return the full path name of the
-" file being pointed to by it.
-"
-" Otherwise, return the full path name of the current buffer.
-"
-" You can supply an optional "modifier" argument to the
-" function, which will optionally modify the file name before
-" returning.
-" NOTE: From version 1.6 onwards, this function always trims
-" away the .latexmain part of the file name before applying the
-" modifier argument.
-function! Tex_GetMainFileName(...)
- if a:0 > 0
- let modifier = a:1
- else
- let modifier = ':p'
- endif
-
- " If the user wants to use his own way to specify the main file name, then
- " use it straight away.
- if Tex_GetVarValue('Tex_MainFileExpression') != ''
- exec 'let retval = '.Tex_GetVarValue('Tex_MainFileExpression')
- return retval
- endif
-
- let s:origdir = fnameescape(getcwd())
-
- let dirmodifier = '%:p:h'
- let dirLast = fnameescape(expand(dirmodifier))
- exe 'cd '.dirLast
-
- " move up the directory tree until we find a .latexmain file.
- " TODO: Should we be doing this recursion by default, or should there be a
- " setting?
- while glob('*.latexmain') == ''
- let dirmodifier = dirmodifier.':h'
- let dirNew = fnameescape(expand(dirmodifier))
- " break from the loop if we cannot go up any further.
- if dirNew == dirLast
- break
- endif
- let dirLast = dirNew
- exe 'cd '.dirLast
- endwhile
-
- let lheadfile = glob('*.latexmain')
- if lheadfile != ''
- " Remove the trailing .latexmain part of the filename... We never want
- " that.
- let lheadfile = fnamemodify(substitute(lheadfile, '\.latexmain$', '', ''), modifier)
- else
- " If we cannot find any main file, just modify the filename of the
- " current buffer.
- let lheadfile = expand('%'.modifier)
- endif
-
- exe 'cd '.s:origdir
-
- " NOTE: The caller of this function needs to escape the file name with
- " fnameescape() . The reason its not done here is that escaping is not
- " safe if this file is to be used as part of an external command on
- " certain platforms.
- return lheadfile
-endfunction
-
-" }}}
-" Tex_ChooseFromPrompt: process a user input to a prompt string {{{
-" " Description:
-function! Tex_ChooseFromPrompt(dialog, list, sep)
- let g:Tex_ASDF = a:dialog
- let inp = input(a:dialog)
- if inp =~ '\d\+'
- return Tex_Strntok(a:list, a:sep, inp)
- else
- return inp
- endif
-endfunction " }}}
-" Tex_ChooseFile: produces a file list and prompts for choice {{{
-" Description:
-function! Tex_ChooseFile(dialog)
- let files = glob('*')
- if files == ''
- return ''
- endif
- let s:incnum = 0
- echo a:dialog
- let filenames = substitute(files, "\\v(^|\n)", "\\=submatch(0).Tex_IncrementNumber(1).' : '", 'g')
- echo filenames
- let choice = input('Enter Choice : ')
- let g:choice = choice
- if choice == ''
- return ''
- endif
- if choice =~ '^\s*\d\+\s*$'
- let retval = Tex_Strntok(files, "\n", choice)
- else
- let filescomma = substitute(files, "\n", ",", "g")
- let retval = GetListMatchItem(filescomma, choice)
- endif
- if retval == ''
- return ''
- endif
- return retval
-endfunction
-
-" }}}
-" Tex_IncrementNumber: returns an incremented number each time {{{
-" Description:
-let s:incnum = 0
-function! Tex_IncrementNumber(increm)
- let s:incnum = s:incnum + a:increm
- return s:incnum
-endfunction
-
-" }}}
-" Tex_ResetIncrementNumber: increments s:incnum to zero {{{
-" Description:
-function! Tex_ResetIncrementNumber(val)
- let s:incnum = a:val
-endfunction " }}}
-" Tex_FindInRtp: check if file exists in &rtp {{{
-" Description: Checks if file exists in globpath(&rtp, ...) and cuts off the
-" rest of returned names. This guarantees that sourced file is
-" from $HOME.
-" If an optional argument is given, it specifies how to expand
-" each filename found. For example, '%:p' will return a list of
-" the complete paths to the files. By default returns trailing
-" path-names without extenions.
-" NOTE: This function is very slow when a large number of
-" matches are found because of a while loop which modifies
-" each filename found. Some speedup was acheived by using
-" a tokenizer approach rather than using Tex_Strntok which
-" would have been more obvious.
-function! Tex_FindInRtp(filename, directory, ...)
- " how to expand each filename. ':p:t:r' modifies each filename to its
- " trailing part without extension.
- let expand = (a:0 > 0 ? a:1 : ':p:t:r')
- " The pattern used... An empty filename should be regarded as '*'
- let pattern = (a:filename != '' ? a:filename : '*')
-
- let filelist = globpath(&rtp, 'ftplugin/latex-suite/'.a:directory.'/'.pattern)."\n"
-
- if filelist == "\n"
- return ''
- endif
-
- if a:filename != ''
- return fnamemodify(Tex_Strntok(filelist, "\n", 1), expand)
- endif
-
- " Now cycle through the files modifying each filename in the desired
- " manner.
- let retfilelist = ''
- let i = 1
- while 1
- " Extract the portion till the next newline. Then shorten the filelist
- " by removing till the newline.
- let nextnewline = stridx(filelist, "\n")
- if nextnewline == -1
- break
- endif
- let filename = strpart(filelist, 0, nextnewline)
- let filelist = strpart(filelist, nextnewline+1)
-
- " The actual modification.
- if fnamemodify(filename, expand) != ''
- let retfilelist = retfilelist.fnamemodify(filename, expand).","
- endif
- let i = i + 1
- endwhile
-
- return substitute(retfilelist, ',$', '', '')
-endfunction
-
-" }}}
-" Tex_GetErrorList: returns vim's clist {{{
-" Description: returns the contents of the error list available via the :clist
-" command.
-function! Tex_GetErrorList()
- let _a = @a
- redir @a | silent! clist | redir END
- let errlist = @a
- let @a = _a
-
- if errlist =~ 'E42: '
- let errlist = ''
- endif
-
- return errlist
-endfunction " }}}
-" Tex_GetTempName: get the name of a temporary file in specified directory {{{
-" Description: Unlike vim's native tempname(), this function returns the name
-" of a temporary file in the directory specified. This enables
-" us to create temporary files in a specified directory.
-function! Tex_GetTempName(dirname)
- let prefix = 'latexSuiteTemp'
- let slash = (a:dirname =~ '\\\|/$' ? '' : '/')
- let i = 0
- while filereadable(a:dirname.slash.prefix.i.'.tex') && i < 1000
- let i = i + 1
- endwhile
- if filereadable(a:dirname.slash.prefix.i.'.tex')
- echoerr "Temporary file could not be created in ".a:dirname
- return ''
- endif
- return expand(a:dirname.slash.prefix.i.'.tex', ':p')
-endfunction
-" }}}
-" Tex_MakeMap: creates a mapping from lhs to rhs if rhs is not already mapped {{{
-" Description:
-function! Tex_MakeMap(lhs, rhs, mode, extraargs)
- if !hasmapto(a:rhs, a:mode)
- exec a:mode.'map '.a:extraargs.' '.a:lhs.' '.a:rhs
- endif
-endfunction " }}}
-" Tex_CD: cds to given directory escaping spaces if necessary {{{
-" " Description:
-function! Tex_CD(dirname)
- exec 'cd '.Tex_EscapeSpaces(a:dirname)
-endfunction " }}}
-" Tex_EscapeSpaces: escapes unescaped spaces from a path name {{{
-" Description:
-function! Tex_EscapeSpaces(path)
- return substitute(a:path, '[^\\]\(\\\\\)*\zs ', '\\ ', 'g')
-endfunction " }}}
-" Tex_FindFile: finds a file in the vim's 'path' {{{
-" Description: finds a file in vim's 'path'
-function! Tex_FindFile(fname, path, suffixesadd)
- if exists('*findfile')
- let _suffixesadd = &suffixesadd
- let &suffixesadd = a:suffixesadd
- let retval = findfile(a:fname, a:path)
- let &suffixesadd = _suffixesadd
- else
- " split a new window so we do not screw with the current buffer. We
- " want to use the same filename each time so that multiple scratch
- " buffers are not created.
- let retval = ''
- silent! split __HOPEFULLY_THIS_FILE_DOES_NOT_EXIST__
- let _suffixesadd = &suffixesadd
- let _path = &path
- let &suffixesadd = a:suffixesadd
- let &path = a:path
- exec 'silent! find '.a:fname
- if bufname('%') != '__HOPEFULLY_THIS_FILE_DOES_NOT_EXIST__'
- let retval = expand('%:p')
- end
- silent! bdelete!
- let &suffixesadd = _suffixesadd
- let &path = _path
- endif
- return retval
-endfunction " }}}
-" Tex_GetPos: gets position of cursor {{{
-function! Tex_GetPos()
- if exists('*getpos')
- return getpos('.')
- else
- return line('.').' | normal! '.virtcol('.').'|'
- endif
-endfunction " }}}
-" Tex_SetPos: sets position of cursor {{{
-function! Tex_SetPos(pos)
- if exists('*setpos')
- call setpos('.', a:pos)
- else
- exec a:pos
- endif
-endfunction " }}}
-
-
-" ==============================================================================
-" Smart key-mappings
-" ==============================================================================
-" TexQuotes: inserts `` or '' instead of " {{{
-if g:Tex_SmartKeyQuote
-
- " TexQuotes: inserts `` or '' instead of "
- " Taken from texmacro.vim by Benji Fisher <benji@e-math.AMS.org>
- " TODO: Deal with nested quotes.
- " The :imap that calls this function should insert a ", move the cursor to
- " the left of that character, then call this with <C-R>= .
- function! s:TexQuotes()
- let l = line(".")
- let c = col(".")
- let restore_cursor = l . "G" . virtcol(".") . "|"
- normal! H
- let restore_cursor = "normal!" . line(".") . "Gzt" . restore_cursor
- execute restore_cursor
- " In math mode, or when preceded by a \, just move the cursor past the
- " already-inserted " character.
- if synIDattr(synID(l, c, 1), "name") =~ "^texMath"
- \ || (c > 1 && getline(l)[c-2] == '\')
- return "\<Right>"
- endif
- " Find the appropriate open-quote and close-quote strings.
- if exists("b:Tex_SmartQuoteOpen")
- let open = b:Tex_SmartQuoteOpen
- elseif exists("g:Tex_SmartQuoteOpen")
- let open = g:Tex_SmartQuoteOpen
- else
- let open = "``"
- endif
- if exists("b:Tex_SmartQuoteClose")
- let close = b:Tex_SmartQuoteClose
- elseif exists("g:Tex_SmartQuoteClose")
- let close = g:Tex_SmartQuoteClose
- else
- let close = "''"
- endif
- let boundary = '\|'
- " This code seems to be obsolete, since this script variable is never
- " set. The idea is that some languages use ",," as an open- or
- " close-quote string, and we want to avoid confusing ordinary ","
- " with a quote boundary.
- if exists("s:TeX_strictquote")
- if( s:TeX_strictquote == "open" || s:TeX_strictquote == "both" )
- let boundary = '\<' . boundary
- endif
- if( s:TeX_strictquote == "close" || s:TeX_strictquote == "both" )
- let boundary = boundary . '\>'
- endif
- endif
-
- " Eventually return q; set it to the default value now.
- let q = open
- let pattern =
- \ escape(open, '\~') .
- \ boundary .
- \ escape(close, '\~') .
- \ '\|^$\|"'
-
- while 1 " Look for preceding quote (open or close), ignoring
- " math mode and '\"' .
- call search(pattern, "bw")
- if synIDattr(synID(line("."), col("."), 1), "name") !~ "^texMath"
- \ && strpart(getline('.'), col('.')-2, 2) != '\"'
- break
- endif
- endwhile
-
- " Now, test whether we actually found a _preceding_ quote; if so, is it
- " an open quote?
- if ( line(".") < l || line(".") == l && col(".") < c )
- if strpart(getline("."), col(".")-1) =~ '\V\^' . escape(open, '\')
- if line(".") == l && col(".") + strlen(open) == c
- " Insert "<++>''<++>" instead of just "''".
- let q = IMAP_PutTextWithMovement("<++>".close."<++>")
- else
- let q = close
- endif
- endif
- endif
-
- " Return to line l, column c:
- execute restore_cursor
- " Start with <Del> to remove the " put in by the :imap .
- return "\<Del>" . q
-
- endfunction
-
-endif
-" }}}
-" SmartBS: smart backspacing {{{
-if g:Tex_SmartKeyBS
-
- " SmartBS: smart backspacing
- " SmartBS lets you treat diacritic characters (those \'{a} thingies) as a
- " single character. This is useful for example in the following situation:
- "
- " \v{s}\v{t}astn\'{y} ('happy' in Slovak language :-) )
- " If you will delete this normally (without using smartBS() function), you
- " must press <BS> about 19x. With function smartBS() you must press <BS> only
- " 7x. Strings like "\v{s}", "\'{y}" are considered like one character and are
- " deleted with one <BS>.
- let s:smartBS_pat = Tex_GetVarValue('Tex_SmartBSPattern')
-
- fun! s:SmartBS_pat()
- return s:smartBS_pat
- endfun
-
- " This function comes from Benji Fisher <benji@e-math.AMS.org>
- " http://vim.sourceforge.net/scripts/download.php?src_id=409
- " (modified/patched by Lubomir Host 'rajo' <host8 AT keplerDOTfmphDOTuniba.sk>)
- function! s:SmartBS(pat)
- let init = strpart(getline("."), 0, col(".")-1)
- let matchtxt = matchstr(init, a:pat)
- if matchtxt != ''
- let bstxt = substitute(matchtxt, '.', "\<bs>", 'g')
- return bstxt
- else
- return "\<bs>"
- endif
- endfun
-
-endif " }}}
-" SmartDots: inserts \cdots instead of ... in math mode otherwise \ldots {{{
-" if amsmath package is detected then just use \dots and let amsmath take care
-" of it.
-if g:Tex_SmartKeyDot
-
- function! <SID>SmartDots()
- if strpart(getline('.'), col('.')-3, 2) == '..' &&
- \ g:Tex_package_detected =~ '\<amsmath\|ellipsis\>'
- return "\<bs>\<bs>\\dots"
- elseif synIDattr(synID(line('.'),col('.')-1,0),"name") =~ '^texMath'
- \&& strpart(getline('.'), col('.')-3, 2) == '..'
- return "\<bs>\<bs>\\cdots"
- elseif strpart(getline('.'), col('.')-3, 2) == '..'
- return "\<bs>\<bs>\\ldots"
- else
- return '.'
- endif
- endfunction
-
-endif
-" }}}
-
-" source texproject.vim before other files
-exe 'source '.fnameescape(s:path.'/texproject.vim')
-
-" source all the relevant files.
-exe 'source '.fnameescape(s:path.'/texmenuconf.vim')
-exe 'source '.fnameescape(s:path.'/envmacros.vim')
-exe 'source '.fnameescape(s:path.'/elementmacros.vim')
-
-" source utf-8 or plain math menus
-if exists("g:Tex_UseUtfMenus") && g:Tex_UseUtfMenus != 0 && has("gui_running")
- exe 'source '.fnameescape(s:path.'/mathmacros-utf.vim')
-else
- exe 'source '.fnameescape(s:path.'/mathmacros.vim')
-endif
-
-exe 'source '.fnameescape(s:path.'/multicompile.vim')
-exe 'source '.fnameescape(s:path.'/compiler.vim')
-exe 'source '.fnameescape(s:path.'/folding.vim')
-exe 'source '.fnameescape(s:path.'/templates.vim')
-exe 'source '.fnameescape(s:path.'/custommacros.vim')
-exe 'source '.fnameescape(s:path.'/bibtex.vim')
-
-" source advanced math functions
-if g:Tex_AdvancedMath == 1
- exe 'source '.fnameescape(s:path.'/brackets.vim')
- exe 'source '.fnameescape(s:path.'/smartspace.vim')
-endif
-
-if g:Tex_Diacritics != 0
- exe 'source '.fnameescape(s:path.'/diacritics.vim')
-endif
-
-exe 'source '.fnameescape(s:path.'/texviewer.vim')
-exe 'source '.fnameescape(s:path.'/version.vim')
-
-" ==============================================================================
-" Finally set up the folding, options, mappings and quit.
-" ==============================================================================
-" SetTeXOptions: sets options/mappings for this file. {{{
-function! <SID>SetTeXOptions()
- " Avoid reinclusion.
- if exists('b:doneSetTeXOptions')
- return
- endif
- let b:doneSetTeXOptions = 1
-
- exe 'setlocal dict^='.fnameescape(s:path.'/dictionaries/dictionary')
-
- call Tex_Debug('SetTeXOptions: sourcing maps', 'main')
- " smart functions
- if g:Tex_SmartKeyQuote
- inoremap <buffer> <silent> " "<Left><C-R>=<SID>TexQuotes()<CR>
- endif
- if g:Tex_SmartKeyBS
- inoremap <buffer> <silent> <BS> <C-R>=<SID>SmartBS(<SID>SmartBS_pat())<CR>
- endif
- if g:Tex_SmartKeyDot
- inoremap <buffer> <silent> . <C-R>=<SID>SmartDots()<CR>
- endif
-
- " This line seems to be necessary to source our compiler/tex.vim file.
- " The docs are unclear why this needs to be done even though this file is
- " the first compiler plugin in 'runtimepath'.
- runtime compiler/tex.vim
-
-endfunction
-
-augroup LatexSuite
- au LatexSuite User LatexSuiteFileType
- \ call Tex_Debug('main.vim: Catching LatexSuiteFileType event', 'main') |
- \ call <SID>SetTeXOptions()
-augroup END
-
-" }}}
-
-" ==============================================================================
-" Settings for taglist.vim plugin
-" ==============================================================================
-" Sets Tlist_Ctags_Cmd for taglist.vim and regexps for ctags {{{
-if exists("g:Tex_TaglistSupport") && g:Tex_TaglistSupport == 1
- if !exists("g:tlist_tex_settings")
- let g:tlist_tex_settings = 'tex;s:section;c:chapter;l:label;r:ref'
- endif
-
- if exists("Tlist_Ctags_Cmd")
- let s:tex_ctags = Tlist_Ctags_Cmd
- else
- let s:tex_ctags = 'ctags' " Configurable in texrc?
- endif
-
- if exists("g:Tex_InternalTagsDefinitions") && g:Tex_InternalTagsDefinitions == 1
- let Tlist_Ctags_Cmd = s:tex_ctags ." --langdef=tex --langmap=tex:.tex.ltx.latex"
- \.' --regex-tex="/\\\\begin{abstract}/Abstract/s,abstract/"'
- \.' --regex-tex="/\\\\part[ \t]*\*?\{[ \t]*([^}]*)\}/\1/s,part/"'
- \.' --regex-tex="/\\\\chapter[ \t]*\*?\{[ \t]*([^}]*)\}/\1/s,chapter/"'
- \.' --regex-tex="/\\\\section[ \t]*\*?\{[ \t]*([^}]*)\}/\1/s,section/"'
- \.' --regex-tex="/\\\\subsection[ \t]*\*?\{[ \t]*([^}]*)\}/+ \1/s,subsection/"'
- \.' --regex-tex="/\\\\subsubsection[ \t]*\*?\{[ \t]*([^}]*)\}/+ \1/s,subsubsection/"'
- \.' --regex-tex="/\\\\paragraph[ \t]*\*?\{[ \t]*([^}]*)\}/+ \1/s,paragraph/"'
- \.' --regex-tex="/\\\\subparagraph[ \t]*\*?\{[ \t]*([^}]*)\}/+ \1/s,subparagraph/"'
- \.' --regex-tex="/\\\\begin{thebibliography}/BIBLIOGRAPHY/s,thebibliography/"'
- \.' --regex-tex="/\\\\tableofcontents/TABLE OF CONTENTS/s,tableofcontents/"'
- \.' --regex-tex="/\\\\frontmatter/FRONTMATTER/s,frontmatter/"'
- \.' --regex-tex="/\\\\mainmatter/MAINMATTER/s,mainmatter/"'
- \.' --regex-tex="/\\\\backmatter/BACKMATTER/s,backmatter/"'
- \.' --regex-tex="/\\\\appendix/APPENDIX/s,appendix/"'
- \.' --regex-tex="/\\\\label[ \t]*\*?\{[ \t]*([^}]*)\}/\1/l,label/"'
- \.' --regex-tex="/\\\\ref[ \t]*\*?\{[ \t]*([^}]*)\}/\1/r,ref/"'
- endif
-endif
-
-" }}}
-
-" commands to completion
-let g:Tex_completion_explorer = ','
-
-" Mappings defined in package files will overwrite all other
-exe 'source '.fnameescape(s:path.'/packages.vim')
-
-" ==============================================================================
-" These functions are used to immitate certain operating system type functions
-" (like reading the contents of a file), which are not available in vim. For
-" example, in Vim, its not possible to read the contents of a file without
-" opening a buffer on it, which means that over time, lots of buffers can open
-" up needlessly.
-"
-" If python is available (and allowed), then these functions utilize python
-" library functions without making calls to external programs.
-" ==============================================================================
-" Tex_GotoTempFile: open a temp file. reuse from next time on {{{
-function! Tex_GotoTempFile()
- if !exists('s:tempFileName')
- let s:tempFileName = tempname()
- endif
- exec 'silent! split '.s:tempFileName
-endfunction " }}}
-" Tex_IsPresentInFile: finds if a string str, is present in filename {{{
-if has('python') && g:Tex_UsePython
- function! Tex_IsPresentInFile(regexp, filename)
- exec 'python isPresentInFile(r"'.a:regexp.'", r"'.a:filename.'")'
-
- return retval
- endfunction
-else
- function! Tex_IsPresentInFile(regexp, filename)
- call Tex_GotoTempFile()
-
- silent! 1,$ d _
- let _report = &report
- let _sc = &sc
- set report=9999999 nosc
- exec 'silent! 0r! '.g:Tex_CatCmd.' '.a:filename
- set nomod
- let &report = _report
- let &sc = _sc
-
- if search(a:regexp, 'w')
- let retval = 1
- else
- let retval = 0
- endif
- silent! bd
- return retval
- endfunction
-endif " }}}
-" Tex_CatFile: returns the contents of a file in a <NL> seperated string {{{
-if has('*readfile')
- function! Tex_CatFile(filename)
- return join(readfile(filename), "\n")
- endfunction
-elseif has('python') && g:Tex_UsePython
- function! Tex_CatFile(filename)
- " catFile assigns a value to retval
- exec 'python catFile("'.a:filename.'")'
-
- return retval
- endfunction
-else
- function! Tex_CatFile(filename)
- if glob(a:filename) == ''
- return ''
- endif
-
- call Tex_GotoTempFile()
-
- silent! 1,$ d _
-
- let _report = &report
- let _sc = &sc
- set report=9999999 nosc
- exec 'silent! 0r! '.g:Tex_CatCmd.' '.a:filename
-
- set nomod
- let _a = @a
- silent! normal! ggVG"ay
- let retval = @a
- let @a = _a
-
- silent! bd
- let &report = _report
- let &sc = _sc
- return retval
- endfunction
-endif
-" }}}
-" Tex_DeleteFile: removes a file if present {{{
-" Description:
-if has('python') && g:Tex_UsePython
- function! Tex_DeleteFile(filename)
- exec 'python deleteFile(r"'.a:filename.'")'
-
- if exists('retval')
- return retval
- endif
- endfunction
-else
- function! Tex_DeleteFile(filename)
- if filereadable(a:filename)
- exec '! '.g:Tex_RmCmd.' '.a:filename
- endif
- endfunction
-endif
-" }}}
-
-
-let &cpo = s:save_cpo
-
-" Define the functions in python if available.
-if !has('python') || !g:Tex_UsePython
- finish
-endif
-
-exec 'pyfile '.fnameescape(expand('<sfile>:p:h')).'/pytools.py'
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap
diff --git a/ftplugin/latex-suite/mathmacros-utf.vim b/ftplugin/latex-suite/mathmacros-utf.vim
deleted file mode 100644
index ac9cf7e5..00000000
--- a/ftplugin/latex-suite/mathmacros-utf.vim
+++ /dev/null
@@ -1,729 +0,0 @@
-"=============================================================================
-" File: mathmacros.vim
-" Author: Mikolaj Machowski
-" Created: Tue Apr 23 06:00 PM 2002 PST
-"
-" Description: macros for everything mathematical in latex.
-"=============================================================================
-
-if !(has('gui_running') && g:Tex_MathMenus && g:Tex_Menus)
- finish
-endif
-
-let s:MathMenuName = g:Tex_MenuPrefix.'Ma&th.'
-
-function! Tex_MathMenuRemove()
- exe 'silent! aunmenu '.s:MathMenuName
-endfunction
-
-let s:pA = 'amenu <silent> 85 '.s:MathMenuName
-
-" brackets and dollars {{{
-exe s:pA.'\\&[\ \\] <plug><C-r>=IMAP_PutTextWithMovement("\\[<++>\\]<++>")<cr>'
-exe s:pA.'\\&(\ \\) <plug><C-r>=IMAP_PutTextWithMovement("\\(<++>\\)<++>")<cr>'
-exe s:pA.'&$\ $ <plug>$$'
-exe s:pA.'-sepmath1- :'
-" }}}
-" MATH arrows {{{
-let s:pA1 = s:pA."&Arrows."
-exe s:pA1.'Leftarrow<Tab>โ‡ <plug>\Leftarrow '
-exe s:pA1.'leftarrow<Tab>โ† <plug>\leftarrow'
-exe s:pA1.'longleftarrow<Tab>โ† <plug>\longleftarrow '
-exe s:pA1.'Longleftarrow<Tab>โ‡ <plug>\Longleftarrow '
-exe s:pA1.'rightarrow<Tab>โ†’ <plug>\rightarrow '
-exe s:pA1.'longrightarrow<Tab>โ†’ <plug>\longrightarrow '
-exe s:pA1.'Rightarrow<Tab>โ‡’ <plug>\Rightarrow '
-exe s:pA1.'Longrightarrow<Tab>โ‡’ <plug>\Longrightarrow '
-exe s:pA1.'leftrightarrow<Tab>โ‡† <plug>\leftrightarrow '
-exe s:pA1.'longleftrightarrow<Tab>โ†” <plug>\longleftrightarrow '
-exe s:pA1.'Leftrightarrow<Tab>โ‡” <plug>\Leftrightarrow '
-exe s:pA1.'Longleftrightarrow<Tab>โ‡” <plug>\Longleftrightarrow '
-exe s:pA1.'uparrow<Tab>โ†‘ <plug>\uparrow '
-exe s:pA1.'Uparrow<Tab>โ‡‘ <plug>\Uparrow '
-exe s:pA1.'downarrow<Tab>โ†“ <plug>\downarrow '
-exe s:pA1.'Downarrow<Tab>โ‡“ <plug>\Downarrow '
-exe s:pA1.'updownarrow<Tab>โ†• <plug>\updownarrow '
-exe s:pA1.'Updownarrow<Tab>โ‡• <plug>\Updownarrow '
-exe s:pA1.'nearrow<Tab>โ†— <plug>\nearrow '
-exe s:pA1.'searrow<Tab>โ†˜ <plug>\searrow '
-exe s:pA1.'swarrow<Tab>โ†™ <plug>\swarrow '
-exe s:pA1.'nwarrow<Tab>โ†– <plug>\nwarrow '
-exe s:pA1.'mapsto<Tab>โ†ฆ <plug>\mapsto '
-exe s:pA1.'leadsto<Tab>โ† <plug>\leadsto '
-exe s:pA1.'longmapsto<Tab>โ‡– <plug>\longmapsto '
-exe s:pA1.'hookleftarrow<Tab>โ†ฉ <plug>\hookleftarrow '
-exe s:pA1.'hookrightarrow<Tab>โ†ช <plug>\hookrightarrow '
-exe s:pA1.'leftharpoonup<Tab>โ†ผ <plug>\leftharpoonup '
-exe s:pA1.'leftharpoondown<Tab>โ†ฝ <plug>\leftharpoondown '
-exe s:pA1.'rightharpoonup<Tab>โ‡€ <plug>\rightharpoonup '
-exe s:pA1.'rightharpoondown<Tab>โ‡ <plug>\rightharpoondown '
-exe s:pA1.'rightleftharpoons<Tab>โ‡Œ <plug>\rightleftharpoons '
-exe s:pA1.'overleftarrow<Tab> <plug>\overleftarrow '
-exe s:pA1.'overrightarrow<Tab> <plug>\overrightarrow '
-exe s:pA1.'overleftrightarrow<Tab> <plug>\overleftrightarrow '
-exe s:pA1.'underleftarrow<Tab> <plug>\underleftarrow '
-exe s:pA1.'underrightarrow<Tab> <plug>\underrightarrow '
-exe s:pA1.'underleftrightarrow<Tab> <plug>\underleftrightarrow '
-exe s:pA1.'xleftarrow<Tab> <plug>\xleftarrow '
-exe s:pA1.'xrightarrow<Tab> <plug>\xrightarrow '
-" }}}
-" MATH Arrows2 {{{
-let s:pA1a = s:pA."Arrows2."
-exe s:pA1a.'dashleftarrow<Tab>โ‡  <plug>\dashleftarrow '
-exe s:pA1a.'leftleftarrows<Tab>โ‡‡ <plug>\leftleftarrows '
-exe s:pA1a.'leftrightarrows<Tab>โ‡† <plug>\leftrightarrows '
-exe s:pA1a.'Lleftarrow<Tab>โ‡š <plug>\Lleftarrow '
-exe s:pA1a.'twoheadleftarrow<Tab>โ†ž <plug>\twoheadleftarrow '
-exe s:pA1a.'leftarrowtail<Tab>โ†ข <plug>\leftarrowtail '
-exe s:pA1a.'leftrightharpoons<Tab>โ‡‹ <plug>\leftrightharpoons '
-exe s:pA1a.'Lsh<Tab>โ†ฐ <plug>\Lsh '
-exe s:pA1a.'looparrowleft<Tab>โ†ซ <plug>\looparrowleft '
-exe s:pA1a.'curvearrowleft<Tab>โ†ถ <plug>\curvearrowleft '
-exe s:pA1a.'circlearrowleft<Tab>โ†บ <plug>\circlearrowleft '
-exe s:pA1a.'dashrightarrow<Tab>โ‡ข <plug>\dashrightarrow '
-exe s:pA1a.'rightrightarrows<Tab>โ‡‰ <plug>\rightrightarrows '
-exe s:pA1a.'rightleftarrows<Tab>โ‡„ <plug>\rightleftarrows '
-exe s:pA1a.'Rrightarrow<Tab>โ‡› <plug>\Rrightarrow '
-exe s:pA1a.'twoheadrightarrow<Tab>โ†  <plug>\twoheadrightarrow '
-exe s:pA1a.'rightarrowtail<Tab>โ†ฃ <plug>\rightarrowtail '
-exe s:pA1a.'rightleftharpoons<Tab>โ‡Œ <plug>\rightleftharpoons '
-exe s:pA1a.'Rsh<Tab>โ†ฑ <plug>\Rsh '
-exe s:pA1a.'looparrowright<Tab>โ†ฌ <plug>\looparrowright '
-exe s:pA1a.'curvearrowright<Tab>โ†ท <plug>\curvearrowright '
-exe s:pA1a.'circlearrowright<Tab>โ†ป <plug>\circlearrowright '
-exe s:pA1a.'multimap<Tab>โŠธ <plug>\multimap '
-exe s:pA1a.'upuparrows<Tab>โ‡ˆ <plug>\upuparrows '
-exe s:pA1a.'downdownarrows<Tab>โ‡Š <plug>\downdownarrows '
-exe s:pA1a.'upharpoonleft<Tab>โ†ฟ <plug>\upharpoonleft '
-exe s:pA1a.'upharpoonright<Tab>โ†พ <plug>\upharpoonright '
-exe s:pA1a.'downharpoonleft<Tab>โ‡ƒ <plug>\downharpoonleft '
-exe s:pA1a.'downharpoonright<Tab>โ‡‚ <plug>\downharpoonright '
-exe s:pA1a.'rightsquigarrow<Tab>โ‡ <plug>\rightsquigarrow '
-exe s:pA1a.'leftrightsquigarrow<Tab>โ†ญ <plug>\leftrightsquigarrow '
-" }}}
-" MATH nArrows {{{
-let s:pA1b = s:pA."&nArrows."
-exe s:pA1b.'nleftarrow<Tab>โ†š <plug>\nleftarrow '
-exe s:pA1b.'nLeftarrow<Tab>โ‡ <plug>\nLeftarrow '
-exe s:pA1b.'nleftrightarrow<Tab>โ†ฎ <plug>\nleftrightarrow '
-exe s:pA1b.'nLeftrightarrow<Tab>โ‡Ž <plug>\nleftrightarrow '
-exe s:pA1b.'nrightarrow<Tab>โ†› <plug>\nrightarrow '
-exe s:pA1b.'nRightarrow<Tab>โ‡ <plug>\nRightarrow '
-" }}}
-" MATH Fonts {{{
-let s:pA2a = s:pA."&MathFonts."
-exe s:pA2a.'mathbf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbf{<++>}<++>")<cr>'
-exe s:pA2a.'mathrm{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathrm{<++>}<++>")<cr>'
-exe s:pA2a.'mathsf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathsf{<++>}<++>")<cr>'
-exe s:pA2a.'mathtt{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathtt{<++>}<++>")<cr>'
-exe s:pA2a.'mathit{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathit{<++>}<++>")<cr>'
-exe s:pA2a.'mathfrak{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathfrak{<++>}<++>")<cr>'
-exe s:pA2a.'mathcal{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathcal{<++>}<++>")<cr>'
-exe s:pA2a.'mathscr{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathscr{<++>}<++>")<cr>'
-exe s:pA2a.'mathbb{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbb{<++>}<++>")<cr>'
-" }}}
-" Greek Letters small {{{
-let s:pA2 = s:pA."&Greek.&Small."
-exe s:pA2.'alpha<Tab>`a\ \ ฮฑ <plug>\alpha '
-exe s:pA2.'beta<Tab>`b\ \ ฮฒ <plug>\beta '
-exe s:pA2.'gamma<Tab>`g\ \ ฮณ <plug>\gamma '
-exe s:pA2.'delta<Tab>`d\ \ ฮด <plug>\delta '
-exe s:pA2.'epsilon<Tab>โˆŠ <plug>\epsilon '
-exe s:pA2.'varepsilon<Tab>`e\ \ ฮต <plug>\varepsilon '
-exe s:pA2.'zeta<Tab>`z\ \ ฮถ <plug>\zeta '
-exe s:pA2.'eta<Tab>`h\ \ ฮท <plug>\eta '
-exe s:pA2.'theta<Tab>`q\ \ ฮธ <plug>\theta '
-exe s:pA2.'vartheta<Tab>ฯ‘ <plug>\vartheta '
-exe s:pA2.'iota<Tab>`i\ \ ฮน <plug>\iota '
-exe s:pA2.'kappa<Tab>`k\ \ ฮบ <plug>\kappa '
-exe s:pA2.'lambda<Tab>`l\ \ ฮป <plug>\lambda '
-exe s:pA2.'mu<Tab>`m\ \ ฮผ <plug>\mu '
-exe s:pA2.'nu<Tab>`n\ \ ฮฝ <plug>\nu '
-exe s:pA2.'xi<Tab>`x\ \ ฮพ <plug>\xi '
-exe s:pA2.'pi<Tab>`p\ \ ฯ€ <plug>\pi '
-exe s:pA2.'varpi<Tab>ฯ– <plug>\varpi '
-exe s:pA2.'rho<Tab>`r\ \ ฯ <plug>\rho '
-exe s:pA2.'varrho<Tab>ฯฑ <plug>\varrho '
-exe s:pA2.'sigma<Tab>`s\ \ ฯƒ <plug>\sigma '
-exe s:pA2.'varsigma<Tab>`v\ \ ฯ‚ <plug>\varsigma '
-exe s:pA2.'tau<Tab>`t\ \ ฯ„ <plug>\tau '
-exe s:pA2.'upsilon<Tab>`u\ \ ฯ… <plug>\upsilon '
-exe s:pA2.'phi<Tab>ฯ† <plug>\phi '
-exe s:pA2.'varphi<Tab>`f\ \ ฯ• <plug>\varphi '
-exe s:pA2.'chi<Tab>`c\ \ ฯ‡ <plug>\chi '
-exe s:pA2.'psi<Tab>`y\ \ ฯˆ <plug>\psi '
-exe s:pA2.'omega<Tab>`w\ \ ฯ‰ <plug>\omega '
-" }}}
-" Greek Letters big {{{
-let s:pA3 = s:pA.'&Greek.&Big.'
-exe s:pA3.'Alpha<Tab>`A\ \ A <plug>\Alpha '
-exe s:pA3.'Beta<Tab>`B\ \ B <plug>\Beta '
-exe s:pA3.'Gamma<Tab>`G\ \ ฮ“ <plug>\Gamma '
-exe s:pA3.'Delta<Tab>`D\ \ ฮ” <plug>\Delta '
-exe s:pA3.'Epsilon<Tab>`E\ \ E <plug>\Epsilon '
-exe s:pA3.'Zeta<Tab>`Z\ \ Z <plug>\mathrm{Z} '
-exe s:pA3.'Eta<Tab>`H\ \ H <plug>\Eta '
-exe s:pA3.'Theta<Tab>ฮ˜ <plug>\Theta '
-exe s:pA3.'Iota<Tab>I <plug>\mathrm{I} '
-exe s:pA3.'Kappa<Tab>`K\ \ K <plug>\Kappa '
-exe s:pA3.'Lambda<Tab>`L\ \ ฮ› <plug>\Lambda '
-exe s:pA3.'Mu<Tab>`M\ \ M <plug>\Mu '
-exe s:pA3.'Nu<Tab>`N\ \ N <plug>\Nu '
-exe s:pA3.'Xi<Tab>`X\ \ ฮž <plug>\Xi '
-exe s:pA3.'Pi<Tab>`P\ \ ฮ  <plug>\Pi '
-exe s:pA3.'Rho<Tab>`R\ \ P <plug>\Rho '
-exe s:pA3.'Sigma<Tab>`S\ \ ฮฃ <plug>\Sigma '
-exe s:pA3.'Tau<Tab>`T\ \ T <plug>\Tau '
-exe s:pA3.'Upsilon<Tab>`U\ \ Y <plug>\Upsilon '
-exe s:pA3.'Phi<Tab>ฮฆ <plug>\Phi '
-exe s:pA3.'Chi<Tab>`C\ \ X <plug>\Chi '
-exe s:pA3.'Psi<Tab>`Y\ \ ฮจ <plug>\Psi '
-exe s:pA3.'Omega<Tab>`W\ \ ฮฉ <plug>\Omega '
-" }}}
-" BinaryRel1 {{{
-let s:pA4 = s:pA."&BinaryRel1."
-exe s:pA4.'ll<Tab>โ‰ช <plug>\ll '
-exe s:pA4.'lll<Tab>โ‹˜ <plug>\lll '
-exe s:pA4.'leqslant<Tab>โ‰ค <plug>\leqslant '
-exe s:pA4.'leq<Tab>โ‰ค <plug>\leq '
-exe s:pA4.'leqq<Tab>โ‰ฆ <plug>\leqq '
-exe s:pA4.'eqslantless<Tab>โ‹œ <plug>\eqslantless '
-exe s:pA4.'lessdot<Tab>โ‹– <plug>\lessdot '
-exe s:pA4.'prec<Tab>โ‰บ <plug>\prec '
-exe s:pA4.'preceq<Tab>โ‰ผ <plug>\preceq '
-exe s:pA4.'preccurlyeq<Tab>โ‰ผ <plug>\preccurlyeq '
-exe s:pA4.'curlyeqprec<Tab>โ‹ž <plug>\curlyeqprec '
-exe s:pA4.'lesssim<Tab>โ‰ฒ <plug>\lesssim '
-exe s:pA4.'lessapprox<Tab> <plug>\lessapprox '
-exe s:pA4.'precsim<Tab>โ‰พ <plug>\precsim '
-exe s:pA4.'precapprox<Tab> <plug>\precapprox '
-exe s:pA4.'in<Tab>โˆˆ <plug>\in '
-exe s:pA4.'subset<Tab>`(\ \ โŠ‚ <plug>\subset '
-exe s:pA4.'Subset<Tab>`)\ \ โ‹ <plug>\Subset '
-exe s:pA4.'subseteq<Tab>โІ <plug>\subseteq '
-exe s:pA4.'subseteqq<Tab> <plug>\subseteqq '
-exe s:pA4.'sqsubset<Tab>โŠ <plug>\sqsubset '
-exe s:pA4.'sqsubseteq<Tab>โŠ‘ <plug>\sqsubseteq '
-exe s:pA4.'smile<Tab>โŒฃ <plug>\smile '
-exe s:pA4.'smallsmile<Tab>โŒฃ <plug>\smallsmile '
-exe s:pA4.'parallel<Tab>โˆฅ <plug>\parallel '
-exe s:pA4.'shortparallel<Tab>โˆฅ <plug>\shortparallel '
-exe s:pA4.'dashv<Tab>โŠฃ <plug>\dashv '
-exe s:pA4.'vdash<Tab>โŠข <plug>\vdash '
-exe s:pA4.'vDash<Tab>โŠจ <plug>\vDash '
-exe s:pA4.'models<Tab>โŠจ <plug>\models '
-exe s:pA4.'therefore<Tab>โˆด <plug>\therefore '
-exe s:pA4.'backepsilon<Tab>โˆ <plug>\backepsilon '
-" }}}
-" nBinaryRel1 {{{
-let s:pA4a = s:pA."&nBinaryRel1."
-exe s:pA4a.'nless<Tab>โ‰ฎ <plug>\nless '
-exe s:pA4a.'nleqslant<Tab>โ‰ฐ <plug>\nleqslant '
-exe s:pA4a.'nleq<Tab> <plug>\nleq '
-exe s:pA4a.'lneq<Tab> <plug>\lneq '
-exe s:pA4a.'nleqq<Tab> <plug>\nleqq '
-exe s:pA4a.'lneqq<Tab>โ‰จ <plug>\lneqq '
-exe s:pA4a.'lvertneqq<Tab> <plug>\lvertneqq '
-exe s:pA4a.'nprec<Tab>โŠ€ <plug>\nprec '
-exe s:pA4a.'npreceq<Tab>โ‹  <plug>\npreceq '
-exe s:pA4a.'precneqq<Tab> <plug>\precneqq '
-exe s:pA4a.'lnsim<Tab>โ‹ฆ <plug>\lnsim '
-exe s:pA4a.'lnapprox<Tab> <plug>\lnapprox '
-exe s:pA4a.'precnsim<Tab>โ‹จ <plug>\precnsim '
-exe s:pA4a.'precnapprox<Tab> <plug>\precnapprox '
-exe s:pA4a.'notin<Tab>โˆ‰ <plug>\notin '
-exe s:pA4a.'nsubseteq<Tab>โŠˆ <plug>\nsubseteq '
-exe s:pA4a.'varsubsetneq<Tab> <plug>\varsubsetneq '
-exe s:pA4a.'subsetneq<Tab>โŠŠ <plug>\subsetneq '
-exe s:pA4a.'nsubseteqq<Tab> <plug>\nsubseteqq '
-exe s:pA4a.'varsubsetneqq<Tab> <plug>\varsubsetneqq '
-exe s:pA4a.'subsetneqq<Tab>โŠˆ <plug>\subsetneqq '
-exe s:pA4a.'nparallel<Tab>โˆฆ <plug>\nparallel '
-exe s:pA4a.'nshortparallel<Tab> <plug>\nshortparallel '
-exe s:pA4a.'nvdash<Tab>โŠฌ <plug>\nvdash '
-exe s:pA4a.'nvDash<Tab>โŠญ <plug>\nvDash '
-" }}}
-" BinaryRel2 {{{
-let s:pA5 = s:pA."&BinaryRel2."
-exe s:pA5.'gg<Tab>โ‰ซ <plug>\gg '
-exe s:pA5.'ggg<Tab>โ‹™ <plug>\ggg '
-exe s:pA5.'gggtr<Tab>โ‹™ <plug>\gggtr '
-exe s:pA5.'geqslant<Tab> <plug>\geqslant '
-exe s:pA5.'geq<Tab>โ‰ฅ <plug>\geq '
-exe s:pA5.'geqq<Tab>โ‰ง <plug>\geqq '
-exe s:pA5.'eqslantgtr<Tab> <plug>\eqslantgtr '
-exe s:pA5.'gtrdot<Tab>โ‹— <plug>\gtrdot '
-exe s:pA5.'succ<Tab>โ‰ป <plug>\succ '
-exe s:pA5.'succeq<Tab>โ‰ฝ <plug>\succeq '
-exe s:pA5.'succcurlyeq<Tab>โ‰ฝ <plug>\succcurlyeq '
-exe s:pA5.'curlyeqsucc<Tab>โ‹Ÿ <plug>\curlyeqsucc '
-exe s:pA5.'gtrsim<Tab>โ‰ณ <plug>\gtrsim '
-exe s:pA5.'gtrapprox<Tab> <plug>\gtrapprox '
-exe s:pA5.'succsim<Tab>โ‰ฟ <plug>\succsim '
-exe s:pA5.'succapprox<Tab> <plug>\succapprox '
-exe s:pA5.'ni<Tab>โˆ‹ <plug>\ni '
-exe s:pA5.'owns<Tab> <plug>\owns '
-exe s:pA5.'supset<Tab>โŠƒ <plug>\supset '
-exe s:pA5.'Supset<Tab>โ‹‘ <plug>\Supset '
-exe s:pA5.'supseteq<Tab>โЇ <plug>\supseteq '
-exe s:pA5.'supseteqq<Tab> <plug>\supseteqq '
-exe s:pA5.'sqsupset<Tab>โА <plug>\sqsupset '
-exe s:pA5.'sqsupseteq<Tab>โŠ’ <plug>\sqsupseteq '
-exe s:pA5.'frown<Tab>โŒข <plug>\frown '
-exe s:pA5.'smallfrown<Tab>โŒข <plug>\smallfrown '
-exe s:pA5.'mid<Tab>โˆฃ <plug>\mid '
-exe s:pA5.'shortmid<Tab> <plug>\shortmid '
-exe s:pA5.'between<Tab>โ‰ฌ <plug>\between '
-exe s:pA5.'Vdash<Tab>โŠฉ <plug>\Vdash '
-exe s:pA5.'bowtie<Tab>โ‹ˆ <plug>\bowtie '
-exe s:pA5.'Join<Tab>โ‹ˆ <plug>\Join '
-exe s:pA5.'pitchfork<Tab>โ‹” <plug>\pitchfork '
-" }}}
-" {{{ nBinaryRel2
-let s:pA5a = s:pA."n&BinaryRel2." "TODO: dorobiรฆ logarytmy
-exe s:pA5a.'ngtr<Tab>โ‰ฏ <plug>\ngtr '
-exe s:pA5a.'ngeqslant<Tab>โ‰ฑ <plug>\ngeqslant '
-exe s:pA5a.'ngeq<Tab> <plug>\ngeq '
-exe s:pA5a.'gneq<Tab> <plug>\gneq '
-exe s:pA5a.'ngeqq<Tab> <plug>\ngeqq '
-exe s:pA5a.'gneqq<Tab>โ‰ฉ <plug>\gneqq '
-exe s:pA5a.'nsucc<Tab>โЁ <plug>\nsucc '
-exe s:pA5a.'nsucceq<Tab>โ‹ก <plug>\nsucceq '
-exe s:pA5a.'succneqq<Tab> <plug>\succneqq '
-exe s:pA5a.'gnsim<Tab>โ‹ง <plug>\gnsim '
-exe s:pA5a.'gnapprox<Tab> <plug>\gnapprox '
-exe s:pA5a.'succnsim<Tab>โ‹ฉ <plug>\succnsim '
-exe s:pA5a.'succnapprox<Tab> <plug>\succnapprox '
-exe s:pA5a.'nsupseteq<Tab>โЉ <plug>\nsupseteq '
-exe s:pA5a.'varsupsetneq<Tab> <plug>\varsupsetneq '
-exe s:pA5a.'supsetneq<Tab>โŠ‹ <plug>\supsetneq '
-exe s:pA5a.'nsupseteqq<Tab> <plug>\nsupseteqq '
-exe s:pA5a.'varsupsetneqq<Tab> <plug>\varsupsetneqq '
-exe s:pA5a.'supsetneqq<Tab> <plug>\supsetneqq '
-exe s:pA5a.'nmid<Tab>โˆค <plug>\nmid '
-exe s:pA5a.'nshortmid<Tab> <plug>\nshortmid '
-exe s:pA5a.'nVdash<Tab>โŠฎ <plug>\nVdash '
-" }}}
-" {{{ BinaryRel3
-let s:pA6 = s:pA."&BinaryRel3."
-exe s:pA6.'doteq<Tab>โ‰ <plug>\doteq '
-exe s:pA6.'circeq<Tab>โ‰— <plug>\circeq '
-exe s:pA6.'eqcirc<Tab>โ‰– <plug>\eqcirc '
-exe s:pA6.'risingdotseq<Tab>โ‰“ <plug>\risingdotseq '
-exe s:pA6.'doteqdot<Tab>โ‰‘ <plug>\doteqdot '
-exe s:pA6.'Doteq<Tab>โ‰‘ <plug>\Doteq '
-exe s:pA6.'fallingdotseq<Tab>โ‰’ <plug>\fallingdotseq '
-exe s:pA6.'triangleq<Tab>โ‰œ <plug>\triangleq '
-exe s:pA6.'bumpeq<Tab>โ‰ <plug>\bumpeq '
-exe s:pA6.'Bumpeq<Tab>โ‰Ž <plug>\Bumpeq '
-exe s:pA6.'equiv<Tab>`=\ \ โ‰ก <plug>\equiv '
-exe s:pA6.'sim<Tab>โˆผ <plug>\sim '
-exe s:pA6.'thicksim<Tab>โˆผ <plug>\thicksim '
-exe s:pA6.'backsim<Tab>โˆฝ <plug>\backsim '
-exe s:pA6.'simeq<Tab>โ‰ƒ <plug>\simeq '
-exe s:pA6.'backsimeq<Tab>โ‹ <plug>\backsimeq '
-exe s:pA6.'cong<Tab>โ‰… <plug>\cong '
-exe s:pA6.'approx<tab>=~\ \ โ‰ˆ <plug>\approx '
-exe s:pA6.'thickapprox<Tab>โ‰ˆ <plug>\thickapprox '
-exe s:pA6.'approxeq<Tab>โ‰Š <plug>\approxeq '
-exe s:pA6.'blacktriangleleft<Tab>โ—€ <plug>\blacktriangleleft '
-exe s:pA6.'vartriangleleft<Tab>โŠฒ <plug>\vartriangleleft '
-exe s:pA6.'trianglelefteq<Tab>โŠด <plug>\trianglelefteq '
-exe s:pA6.'blacktriangleright<Tab>โ–ถ <plug>\blacktriangleright '
-exe s:pA6.'vartriangleright<Tab>โŠณ <plug>\vartriangleright '
-exe s:pA6.'trianglerighteq<Tab>โŠต <plug>\trianglerighteq '
-exe s:pA6.'perp<Tab>โŠฅ <plug>\perp '
-exe s:pA6.'asymp<Tab>โ‰ <plug>\asymp '
-exe s:pA6.'Vvdash<Tab>โŠช <plug>\Vvdash '
-exe s:pA6.'propto<Tab>โˆ <plug>\propto '
-exe s:pA6.'varpropto<Tab>โˆ <plug>\varpropto '
-exe s:pA6.'because<Tab>โˆต <plug>\because '
-" }}}
-" {{{ nBinaryRel3
-let s:pA6a = s:pA."&nBinaryRel3."
-exe s:pA6a.'neq<Tab>โ‰  <plug>\neq '
-exe s:pA6a.'nsim<Tab>โ‰ <plug>\nsim '
-exe s:pA6a.'ncong<Tab>โ‰† <plug>\ncong '
-exe s:pA6a.'ntriangleleft<Tab>โ‹ช <plug>\ntriangleleft '
-exe s:pA6a.'ntrianglelefteq<Tab>โ‹ฌ <plug>\ntrianglelefteq '
-exe s:pA6a.'ntriangleright<Tab>โ‹ซ <plug>\ntriangleright '
-exe s:pA6a.'ntrianglerighteq<Tab>โ‹ญ <plug>\ntrianglerighteq '
-" }}}
-" {{{ BinaryRel4
-let s:pA7 = s:pA."&BinaryRel4."
-exe s:pA7.'lessgtr<Tab>โ‰ถ <plug>\lessgtr '
-exe s:pA7.'gtrless<Tab>โ‰ท <plug>\gtrless '
-exe s:pA7.'lesseqgtr<Tab>โ‹š <plug>\lesseqgtr '
-exe s:pA7.'gtreqless<Tab>โ‹› <plug>\gtreqless '
-exe s:pA7.'lesseqqgtr<Tab> <plug>\lesseqqgtr '
-exe s:pA7.'gtreqqless<Tab> <plug>\gtreqqless '
-" }}}
-" {{{ BigOp
-let s:pA8a = s:pA."&BigOp."
-exe s:pA8a.'limits<Tab> <plug>\limits'
-exe s:pA8a.'nolimits<Tab> <plug>\nolimits'
-exe s:pA8a.'displaylimits<Tab> <plug>\displaylimits'
-exe s:pA8a.'-seplimits- :'
-exe s:pA8a.'bigcap<Tab>`-\ \ โ‹‚ <plug>\bigcap'
-exe s:pA8a.'bigcup<Tab>`+\ \ โ‹ƒ <plug>\bigcup'
-exe s:pA8a.'bigodot<Tab>โŠ™ <plug>\bigodot'
-exe s:pA8a.'bigoplus<Tab>โŠ• <plug>\bigoplus'
-exe s:pA8a.'bigotimes<Tab>โŠ— <plug>\bigotimes'
-exe s:pA8a.'bigsqcup<Tab>โŠ” <plug>\bigsqcup'
-exe s:pA8a.'biguplus<Tab>โŠŽ <plug>\biguplus'
-exe s:pA8a.'bigvee<Tab>โ‹ <plug>\bigvee'
-exe s:pA8a.'bigwedge<Tab>โ‹€ <plug>\bigwedge'
-exe s:pA8a.'coprod<Tab>โˆ <plug>\coprod'
-exe s:pA8a.'int<Tab>โˆซ <plug>\int'
-exe s:pA8a.'iint<Tab>โˆฌ <plug>\int'
-exe s:pA8a.'iiint<Tab>โˆญ <plug>\int'
-exe s:pA8a.'oint<Tab>โˆฎ <plug>\oint'
-exe s:pA8a.'prod<Tab>โˆ <plug>\prod'
-exe s:pA8a.'sum<Tab>โˆ‘ <plug>\sum'
-" }}}
-" {{{ BinaryOp
-let s:pA8 = s:pA."&BinaryOp."
-exe s:pA8.'pm<Tab>ยฑ <plug>\pm '
-exe s:pA8.'mp<Tab>โˆ“ <plug>\mp '
-exe s:pA8.'dotplus<Tab>โˆ” <plug>\dotplus '
-exe s:pA8.'cdot<Tab>`.\ \ โ‹… <plug>\cdot '
-exe s:pA8.'centerdot<Tab>โ‹… <plug>\centerdot '
-exe s:pA8.'times<Tab>`*\ \ ร— <plug>\times '
-exe s:pA8.'ltimes<Tab>โ‹‰ <plug>\ltimes '
-exe s:pA8.'rtimes<Tab>โ‹Š <plug>\rtimes '
-exe s:pA8.'leftthreetimes<Tab>โ‹‹ <plug>\leftthreetimes '
-exe s:pA8.'rightthreetimes<Tab>โ‹Œ <plug>\rightthreetimes '
-exe s:pA8.'div<Tab>รท <plug>\div '
-exe s:pA8.'divideontimes<Tab>โ‹‡ <plug>\divideontimes '
-exe s:pA8.'bmod<Tab> <plug>\bmod '
-exe s:pA8.'ast<Tab>โˆ— <plug>\ast '
-exe s:pA8.'star<Tab>โ‹† <plug>\star '
-exe s:pA8.'setminus<Tab>`\\\ \ โˆ– <plug>\setminus '
-exe s:pA8.'smallsetminus<Tab>โˆ– <plug>\smallsetminus '
-exe s:pA8.'diamond<Tab>โ‹„ <plug>\diamond '
-exe s:pA8.'wr<Tab>โ‰€ <plug>\wr '
-exe s:pA8.'intercal<Tab>โŠบ <plug>\intercal '
-exe s:pA8.'circ<Tab>`@\ \ โˆ˜ <plug>\circ '
-exe s:pA8.'bigcirc<Tab>โ—‹ <plug>\bigcirc '
-exe s:pA8.'bullet<Tab>โˆ™ <plug>\bullet '
-exe s:pA8.'cap<Tab>โˆฉ <plug>\cap '
-exe s:pA8.'Cap<Tab>โ‹’ <plug>\Cap '
-exe s:pA8.'cup<Tab>โˆช <plug>\cup '
-exe s:pA8.'Cup<Tab>โ‹“ <plug>\Cup '
-exe s:pA8.'sqcap<Tab>โŠ“ <plug>\sqcap '
-exe s:pA8.'sqcup<Tab>โŠ” <plug>\sqcup'
-exe s:pA8.'amalg<Tab> <plug>\amalg '
-exe s:pA8.'uplus<Tab>โŠŽ <plug>\uplus '
-exe s:pA8.'triangleleft<Tab>โ— <plug>\triangleleft '
-exe s:pA8.'triangleright<Tab>โ–ท <plug>\triangleright '
-exe s:pA8.'bigtriangleup<Tab>โ–ณ <plug>\bigtriangleup '
-exe s:pA8.'bigtriangledown<Tab>โ–ฝ <plug>\bigtriangledown '
-exe s:pA8.'vee<Tab>โˆจ <plug>\vee '
-exe s:pA8.'veebar<Tab>โŠป <plug>\veebar '
-exe s:pA8.'curlyvee<Tab>โ‹Ž <plug>\curlyvee '
-exe s:pA8.'wedge<Tab>`&\ \ โˆง <plug>\wedge '
-exe s:pA8.'barwedge<Tab>โŠผ <plug>\barwedge '
-exe s:pA8.'doublebarwedge<Tab>โŒ† <plug>\doublebarwedge '
-exe s:pA8.'curlywedge<Tab>โ‹ <plug>\curlywedge '
-exe s:pA8.'oplus<Tab>โŠ• <plug>\oplus '
-exe s:pA8.'ominus<Tab>โŠ– <plug>\ominus '
-exe s:pA8.'otimes<Tab>โŠ— <plug>\otimes '
-exe s:pA8.'oslash<Tab>โŠ˜ <plug>\oslash '
-exe s:pA8.'boxplus<Tab>โŠž <plug>\boxplus '
-exe s:pA8.'boxminus<Tab>โŠŸ <plug>\boxminus '
-exe s:pA8.'boxtimes<Tab>โŠ  <plug>\boxtimes '
-exe s:pA8.'boxdot<Tab>โŠก <plug>\boxdot '
-exe s:pA8.'odot<Tab>โŠ™ <plug>\odot '
-exe s:pA8.'circledast<Tab>โŠ› <plug>\circledast '
-exe s:pA8.'circleddash<Tab>โŠ <plug>\circleddash '
-exe s:pA8.'circledcirc<Tab>โŠš <plug>\circledcirc '
-exe s:pA8.'dagger<Tab>โ€  <plug>\dagger '
-exe s:pA8.'ddagger<Tab>โ€ก <plug>\ddagger '
-exe s:pA8.'lhd<Tab>โŠฒ <plug>\lhd '
-exe s:pA8.'unlhd<Tab>โŠด <plug>\unlhd '
-exe s:pA8.'rhd<Tab>โŠณ <plug>\rhd '
-exe s:pA8.'unrhd<Tab>โŠต <plug>\unrhd '
-" }}}
-" {{{ Other1
-let s:pA9 = s:pA."&Other1."
-exe s:pA9.'hat<Tab>รข <plug>\hat '
-exe s:pA9.'check<Tab>วŽ <plug>\check '
-exe s:pA9.'grave<Tab>ร  <plug>\grave '
-exe s:pA9.'acute<Tab>รก <plug>\acute '
-exe s:pA9.'dot<Tab>ศง <plug>\dot '
-exe s:pA9.'ddot<Tab>รค <plug>\ddot '
-exe s:pA9.'tilde<Tab>`,\ \ รฃ <plug>\tilde '
-exe s:pA9.'breve<Tab>ฤƒ <plug>\breve '
-exe s:pA9.'bar<Tab>ฤ <plug>\bar '
-exe s:pA9.'vec<Tab>aโƒ— <plug>\vec '
-exe s:pA9.'aleph<Tab>ื <plug>\aleph '
-exe s:pA9.'hbar<Tab>โ„ <plug>\hbar '
-exe s:pA9.'imath<Tab> <plug>\imath '
-exe s:pA9.'jmath<Tab> <plug>\jmath '
-exe s:pA9.'ell<Tab>โ„“ <plug>\ell '
-exe s:pA9.'wp<Tab>โ„˜ <plug>\wp '
-exe s:pA9.'Re<Tab>โ„œ <plug>\Re '
-exe s:pA9.'Im<Tab>โ„‘ <plug>\Im '
-exe s:pA9.'partial<Tab>โˆ‚ <plug>\partial '
-exe s:pA9.'infty<Tab>`8\ \ โˆž <plug>\infty '
-exe s:pA9.'prime<Tab>โ€ฒ <plug>\prime '
-exe s:pA9.'emptyset<Tab>โˆ… <plug>\emptyset '
-exe s:pA9.'nabla<Tab>โˆ‡ <plug>\nabla '
-exe s:pA9.'surd<Tab>โˆš <plug>\surd '
-exe s:pA9.'top<Tab>โŠค <plug>\top '
-exe s:pA9.'bot<Tab>โŠฅ <plug>\bot '
-exe s:pA9.'angle<Tab>โˆ  <plug>\angle '
-exe s:pA9.'triangle<Tab>โ–ณ <plug>\triangle '
-exe s:pA9.'backslash<Tab>\\ <plug>\backslash '
-exe s:pA9.'forall<Tab>โˆ€ <plug>\forall '
-exe s:pA9.'exists<Tab>โˆƒ <plug>\exists '
-exe s:pA9.'neg<Tab>ยฌ <plug>\neg '
-exe s:pA9.'flat<Tab>โ™ญ <plug>\flat '
-exe s:pA9.'natural<Tab>โ™ฎ <plug>\natural '
-exe s:pA9.'sharp<Tab>โ™ฏ <plug>\sharp '
-exe s:pA9.'clubsuit<Tab>โ™ฃ <plug>\clubsuit '
-exe s:pA9.'diamondsuit<Tab>โ™ข <plug>\diamondsuit '
-exe s:pA9.'heartsuit<Tab>โ™ก <plug>\heartsuit '
-exe s:pA9.'spadesuit<Tab>โ™  <plug>\spadesuit '
-exe s:pA9.'S<Tab>ยง <plug>\S '
-exe s:pA9.'P<Tab>ยถ <plug>\P'
-" }}}
-" {{{ MathCreating
-let s:pA10 = s:pA."&MathCreating."
-exe s:pA10.'not<Tab> <plug>\not'
-exe s:pA10.'mkern<Tab> <plug>\mkern'
-exe s:pA10.'mathbin<Tab> <plug>\mathbin'
-exe s:pA10.'mathrel<Tab> <plug>\mathrel'
-exe s:pA10.'stackrel<Tab> <plug>\stackrel'
-exe s:pA10.'mathord<Tab> <plug>\mathord'
-" }}}
-" {{{ Styles
-let s:pA11 = s:pA."&Styles."
-exe s:pA11.'displaystyle<Tab> <plug>\displaystyle'
-exe s:pA11.'textstyle<Tab> <plug>\textstyle'
-exe s:pA11.'scritpstyle<Tab> <plug>\scritpstyle'
-exe s:pA11.'scriptscriptstyle<Tab> <plug>\scriptscriptstyle'
-" }}}
-" {{{ MathDiacritics
-let s:pA12 = s:pA."&MathDiacritics."
-exe s:pA12.'acute{}<Tab>รก <plug><C-r>=IMAP_PutTextWithMovement("\\acute{<++>}<++>")<cr>'
-exe s:pA12.'bar{}<Tab>`_\ \ ฤ <plug><C-r>=IMAP_PutTextWithMovement("\\bar{<++>}<++>")<cr>'
-exe s:pA12.'breve{}<Tab>ฤƒ <plug><C-r>=IMAP_PutTextWithMovement("\\breve{<++>}<++>")<cr>'
-exe s:pA12.'check{}<Tab>วŽ <plug><C-r>=IMAP_PutTextWithMovement("\\check{<++>}<++>")<cr>'
-exe s:pA12.'ddot{}<Tab>`:\ \ รค <plug><C-r>=IMAP_PutTextWithMovement("\\ddot{<++>}<++>")<cr>'
-exe s:pA12.'dot{}<Tab>`;\ \ ศง <plug><C-r>=IMAP_PutTextWithMovement("\\dot{<++>}<++>")<cr>'
-exe s:pA12.'grave{}<Tab>ร  <plug><C-r>=IMAP_PutTextWithMovement("\\grave{<++>}<++>")<cr>'
-exe s:pA12.'hat{}<Tab>`^\ \ รข <plug><C-r>=IMAP_PutTextWithMovement("\\hat{<++>}<++>")<cr>'
-exe s:pA12.'tilde{}<tab>`~\ \ รฃ <plug><C-r>=IMAP_PutTextWithMovement("\\tilde{<++>}<++>")<cr>'
-exe s:pA12.'vec{}<Tab>aโƒ— <plug><C-r>=IMAP_PutTextWithMovement("\\vec{<++>}<++>")<cr>'
-exe s:pA12.'widehat{}<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\widehat{<++>}<++>")<cr>'
-exe s:pA12.'widetilde{}<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\widetilde{<++>}<++>")<cr>'
-exe s:pA12.'imath<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\imath")<cr>'
-exe s:pA12.'jmath<Tab> <plug><C-r>=IMAP_PutTextWithMovement("\\jmath")<cr>'
-" }}}
-" {{{ OverlineAndCo
-let s:pA13 = s:pA."&OverlineAndCo."
-exe s:pA13.'overline{} <plug><C-r>=IMAP_PutTextWithMovement("\\overline{}")<cr>'
-exe s:pA13.'underline{} <plug><C-r>=IMAP_PutTextWithMovement("\\underline{}")<cr>'
-exe s:pA13.'overrightarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overrightarrow{}")<cr>'
-exe s:pA13.'overleftarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overleftarrow{}")<cr>'
-exe s:pA13.'overbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\overbrace{}")<cr>'
-exe s:pA13.'underbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\underbrace{}")<cr>'
-" }}}
-" {{{ Symbols1
-let s:pA14a = s:pA."&Symbols1."
-exe s:pA14a.'forall<Tab>โˆ€ <plug>\forall '
-exe s:pA14a.'exists<Tab>โˆƒ <plug>\exists '
-exe s:pA14a.'nexists<Tab>โˆ„ <plug>\nexists '
-exe s:pA14a.'neg<Tab>ยฌ <plug>\neg '
-exe s:pA14a.'top<Tab>โŠค <plug>\top '
-exe s:pA14a.'bot<Tab>โŠฅ <plug>\bot '
-exe s:pA14a.'emptyset<Tab>โˆ… <plug>\emptyset '
-exe s:pA14a.'varnothing<Tab>โŒ€ <plug>\varnothing '
-exe s:pA14a.'infty<Tab>โˆž <plug>\infty '
-exe s:pA14a.'aleph<Tab>ื <plug>\aleph '
-exe s:pA14a.'beth<Tab>ื‘ <plug>\beth '
-exe s:pA14a.'gimel<Tab>ื’ <plug>\gimel '
-exe s:pA14a.'daleth<Tab>ื“ <plug>\daleth '
-exe s:pA14a.'hbar<Tab> <plug>\hbar '
-exe s:pA14a.'hslash<Tab>โ„ <plug>\hslash '
-exe s:pA14a.'diagup<Tab>โ„ <plug>\diagup '
-exe s:pA14a.'vert<Tab>\| <plug>\vert '
-exe s:pA14a.'Vert<Tab>โˆฅ <plug>\Vert '
-exe s:pA14a.'backslash<Tab>\\ <plug>\backslash '
-exe s:pA14a.'diagdown<Tab> <plug>\diagdown '
-exe s:pA14a.'Bbbk<Tab>แต• <plug>\Bbbk '
-exe s:pA14a.'P<Tab>ยถ <plug>\P '
-exe s:pA14a.'S<Tab>ยง <plug>\S '
-" }}}
-" {{{ Symbols2
-let s:pA14b = s:pA."&Symbols2."
-exe s:pA14b.'# <plug>\# '
-exe s:pA14b.'% <plug>\% '
-exe s:pA14b.'_<Tab> <plug>\_ '
-exe s:pA14b.'$ <plug>\$ '
-exe s:pA14b.'& <plug>\& '
-exe s:pA14b.'imath<Tab> <plug>\imath '
-exe s:pA14b.'jmath<Tab> <plug>\jmath '
-exe s:pA14b.'ell<Tab>โ„“ <plug>\ell '
-exe s:pA14b.'wp<Tab>โ„˜ <plug>\wp '
-exe s:pA14b.'Re<Tab>โ„œ <plug>\Re '
-exe s:pA14b.'Im<Tab>โ„‘ <plug>\Im '
-exe s:pA14b.'prime<Tab>โ€ฒ <plug>\prime '
-exe s:pA14b.'backprime<Tab>โ€ต <plug>\backprime '
-exe s:pA14b.'nabla<Tab>โˆ‡ <plug>\nabla '
-exe s:pA14b.'surd<Tab>โˆš <plug>\surd '
-exe s:pA14b.'flat<Tab>โ™ญ <plug>\flat '
-exe s:pA14b.'sharp<Tab>โ™ฏ <plug>\sharp '
-exe s:pA14b.'natural<Tab>โ™ฎ <plug>\natural '
-exe s:pA14b.'eth<Tab>รฐ <plug>\eth '
-exe s:pA14b.'bigstar<Tab>โ˜… <plug>\bigstar '
-exe s:pA14b.'circledS<Tab>โ“ˆ <plug>\circledS '
-exe s:pA14b.'Finv<Tab>โ„ฒ <plug>\Finv '
-exe s:pA14b.'dag<Tab>โ€  <plug>\dag '
-exe s:pA14b.'ddag<Tab>โ€ก <plug>\ddag '
-" }}}
-" {{{ Symbols3
-let s:pA14c = s:pA."&Symbols3."
-exe s:pA14c.'angle<Tab>โˆ  <plug>\angle '
-exe s:pA14c.'measuredangle<Tab>โˆก <plug>\measuredangle '
-exe s:pA14c.'sphericalangle<Tab>โˆข <plug>\sphericalangle '
-exe s:pA14c.'spadesuit<Tab>โ™  <plug>\spadesuit '
-exe s:pA14c.'heartsuit<Tab>โ™ก <plug>\heartsuit '
-exe s:pA14c.'diamondsuit<Tab>โ™ข <plug>\diamondsuit '
-exe s:pA14c.'clubsuit<Tab>โ™ฃ <plug>\clubsuit '
-exe s:pA14c.'lozenge<Tab>โ—Š <plug>\lozenge '
-exe s:pA14c.'blacklozenge<Tab>โ—† <plug>\blacklozenge '
-exe s:pA14c.'Diamond<Tab>โ—‡ <plug>\Diamond '
-exe s:pA14c.'triangle<Tab>โ–ณ <plug>\triangle '
-exe s:pA14c.'vartriangle<Tab>โ–ณ <plug>\vartriangle '
-exe s:pA14c.'blacktriangle<Tab>โ–ฒ <plug>\blacktriangle '
-exe s:pA14c.'triangledown<Tab>โ–ฝ <plug>\triangledown '
-exe s:pA14c.'blacktriangledown<Tab>โ–ผ <plug>\blacktriangledown '
-exe s:pA14c.'Box<Tab>โ–ก <plug>\Box '
-exe s:pA14c.'square<Tab>โ–ก <plug>\square '
-exe s:pA14c.'blacksquare<Tab>โ–  <plug>\blacksquare '
-exe s:pA14c.'complement<Tab>โˆ <plug>\complement '
-exe s:pA14c.'mho<Tab>โ„ง <plug>\mho '
-exe s:pA14c.'Game<Tab>โ… <plug>\Game '
-exe s:pA14c.'partial<Tab>`6\ \ โˆ‚ <plug>\partial '
-exe s:pA14c.'smallint<Tab>โˆซ <plug>\smallint '
-" }}}
-" {{{ Logic
-let s:pA15 = s:pA."&Logic."
-exe s:pA15.'lnot<Tab>ยฌ <plug>\lnot '
-exe s:pA15.'lor<Tab>โˆจ <plug>\lor '
-exe s:pA15.'land<Tab>โˆง <plug>\land '
-" }}}
-" {{{ Limits1
-let s:pA16 = s:pA."&Limits1."
-exe s:pA16.'left<Tab>( <plug>\left'
-exe s:pA16.'right<Tab>) <plug>\right'
-exe s:pA16.'-sepbigl- :'
-exe s:pA16.'bigl<Tab> <plug>\bigl'
-exe s:pA16.'Bigl<Tab> <plug>\Bigl'
-exe s:pA16.'biggl<Tab> <plug>\biggl'
-exe s:pA16.'Biggl<Tab> <plug>\Biggl'
-exe s:pA16.'-sepbigr- :'
-exe s:pA16.'bigr<Tab> <plug>\bigr'
-exe s:pA16.'Bigr<Tab> <plug>\Bigr'
-exe s:pA16.'biggr<Tab> <plug>\biggr'
-exe s:pA16.'Biggr<Tab> <plug>\Biggr'
-exe s:pA16.'-sepbig- :'
-exe s:pA16.'big<Tab> <plug>\big'
-exe s:pA16.'bigm<Tab> <plug>\bigm'
-exe s:pA16.'-sepfloor- :'
-exe s:pA16.'lfloor<Tab>โŒŠ <plug>\lfloor '
-exe s:pA16.'lceil<Tab>โŒˆ <plug>\lceil '
-exe s:pA16.'rfloor<Tab>โŒ‹ <plug>\rfloor '
-exe s:pA16.'rceil<Tab>โŒ‰ <plug>\rceil '
-exe s:pA16.'-sepangle- :'
-exe s:pA16.'langle<Tab>โŒฉ <plug>\langle '
-exe s:pA16.'rangle<Tab>โŒช <plug>\rangle '
-" }}}
-" {{{ Limits2
-let s:pA16a = s:pA."&Limits2."
-exe s:pA16a.'ulcorner<Tab>โŒœ <plug>\ulcorner '
-exe s:pA16a.'urcorner<Tab>โŒ <plug>\urcorner '
-exe s:pA16a.'llcorner<Tab>โŒž <plug>\llcorner '
-exe s:pA16a.'rlcorner<Tab>โŒŸ <plug>\rlcorner '
-exe s:pA16a.'-sepcorner- :'
-exe s:pA16a.'vert<Tab>\| <plug>\vert '
-exe s:pA16a.'Vert<Tab>โˆฅ <plug>\Vert '
-exe s:pA16a.'lvert<Tab> <plug>\lvert '
-exe s:pA16a.'lVert<Tab> <plug>\lVert '
-exe s:pA16a.'rvert<Tab> <plug>\rvert '
-exe s:pA16a.'rVert<Tab> <plug>\rVert '
-exe s:pA16a.'uparrow<Tab>โ†‘ <plug>\uparrow '
-exe s:pA16a.'Uparrow<Tab>โ‡‘ <plug>\Uparrow '
-exe s:pA16a.'downarrow<Tab>โ†“ <plug>\downarrow '
-exe s:pA16a.'Downarrow<Tab>โ‡“ <plug>\Downarrow '
-exe s:pA16a.'updownarrow<Tab>โ†• <plug>\updownarrow '
-exe s:pA16a.'Updownarrow<Tab>โ‡• <plug>\Updownarrow '
-exe s:pA16a.'lgroup<Tab> <plug>\lgroup '
-exe s:pA16a.'rgroup<Tab> <plug>\rgroup '
-exe s:pA16a.'lmoustache<Tab>โˆซ <plug>\lmoustache '
-exe s:pA16a.'rmoustache<Tab> <plug>\rmoustache '
-exe s:pA16a.'arrowvert<Tab> <plug>\arrowvert '
-exe s:pA16a.'Arrowvert<Tab> <plug>\Arrowvert '
-exe s:pA16a.'bracevert<Tab> <plug>\bracevert '
-" }}}
-" {{{ Log-likes
-let s:pA17 = s:pA."Lo&g-likes."
-exe s:pA17.'arccos<Tab> <plug>\arccos '
-exe s:pA17.'arcsin<Tab> <plug>\arcsin '
-exe s:pA17.'arctan<Tab> <plug>\arctan '
-exe s:pA17.'arg<Tab> <plug>\arg '
-exe s:pA17.'cos<Tab> <plug>\cos '
-exe s:pA17.'cosh<Tab> <plug>\cosh '
-exe s:pA17.'cot<Tab> <plug>\cot '
-exe s:pA17.'coth<Tab> <plug>\coth '
-exe s:pA17.'csc<Tab> <plug>\csc '
-exe s:pA17.'deg<Tab> <plug>\deg '
-exe s:pA17.'det<Tab> <plug>\det '
-exe s:pA17.'dim<Tab> <plug>\dim '
-exe s:pA17.'exp<Tab> <plug>\exp '
-exe s:pA17.'gcd<Tab> <plug>\gcd '
-exe s:pA17.'hom<Tab> <plug>\hom '
-exe s:pA17.'inf<Tab> <plug>\inf '
-exe s:pA17.'injlim<Tab> <plug>\injlim '
-exe s:pA17.'ker<Tab> <plug>\ker '
-exe s:pA17.'lg<Tab> <plug>\lg '
-exe s:pA17.'lim<Tab> <plug>\lim '
-exe s:pA17.'liminf<Tab> <plug>\liminf '
-exe s:pA17.'limsup<Tab> <plug>\limsup '
-exe s:pA17.'ln<Tab> <plug>\ln '
-exe s:pA17.'log<Tab> <plug>\log '
-exe s:pA17.'max<Tab> <plug>\max '
-exe s:pA17.'min<Tab> <plug>\min '
-exe s:pA17.'Pr<Tab> <plug>\Pr '
-exe s:pA17.'projlim<Tab> <plug>\projlim '
-exe s:pA17.'sec<Tab> <plug>\sec '
-exe s:pA17.'sin<Tab> <plug>\sin '
-exe s:pA17.'sinh<Tab> <plug>\sinh '
-exe s:pA17.'sup<Tab> <plug>\sup '
-exe s:pA17.'tan<Tab> <plug>\tan '
-exe s:pA17.'tanh<Tab> <plug>\tanh '
-exe s:pA17.'varlimsup<Tab> <plug>\varlimsup '
-exe s:pA17.'varliminf<Tab> <plug>\varliminf '
-exe s:pA17.'varinjlim<Tab> <plug>\varinjlim '
-exe s:pA17.'varprojlim<Tab> <plug>\varprojlim '
-" }}}
-" {{{ MathSpacing
-let s:pA18 = s:pA."MathSpacing."
-exe s:pA18.', <plug>\, '
-exe s:pA18.': <plug>\: '
-exe s:pA18.'; <plug>\; '
-exe s:pA18.'[space] <plug>\ '
-exe s:pA18.'quad<Tab> <plug>\quad '
-exe s:pA18.'qquad<Tab> <plug>\qquad '
-exe s:pA18.'! <plug>\! '
-exe s:pA18.'thinspace<Tab> <plug>\thinspace '
-exe s:pA18.'medspace<Tab> <plug>\medspace '
-exe s:pA18.'thickspace<Tab> <plug>\thickspace '
-exe s:pA18.'negthinspace<Tab> <plug>\negthinspace '
-exe s:pA18.'negmedspace<Tab> <plug>\negmedspace '
-exe s:pA18.'negthickspace<Tab> <plug>\negthickspace '
-" 1}}}
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:fenc=utf-8
diff --git a/ftplugin/latex-suite/mathmacros.vim b/ftplugin/latex-suite/mathmacros.vim
deleted file mode 100644
index 553965c6..00000000
--- a/ftplugin/latex-suite/mathmacros.vim
+++ /dev/null
@@ -1,730 +0,0 @@
-"=============================================================================
-" File: mathmacros.vim
-" Author: Mikolaj Machowski
-" Created: Tue Apr 23 06:00 PM 2002 PST
-"
-" Description: macros for everything mathematical in latex.
-"=============================================================================
-
-if !(has('gui_running') && g:Tex_MathMenus && g:Tex_Menus)
- finish
-endif
-
-let s:MathMenuName = g:Tex_MenuPrefix.'&Math.'
-
-function! Tex_MathMenuRemove()
- exe 'silent! aunmenu '.s:MathMenuName
-endfunction
-
-let s:pA = 'amenu <silent> '.g:Tex_NextMenuLocation.' '.s:MathMenuName
-let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
-
-" brackets and dollars {{{
-exe s:pA.'\\&[\ \\] <plug><C-r>=IMAP_PutTextWithMovement("\\[<++>\\]<++>")<cr>'
-exe s:pA.'\\&(\ \\) <plug><C-r>=IMAP_PutTextWithMovement("\\(<++>\\)<++>")<cr>'
-exe s:pA.'&$\ $ <plug>$$'
-exe s:pA.'-sepmath1- :'
-" }}}
-" MATH arrows {{{
-let s:pA1 = s:pA."&Arrows."
-exe s:pA1.'Leftarrow <plug>\leftarrow '
-exe s:pA1.'leftarrow <plug>\leftarrow'
-exe s:pA1.'longleftarrow <plug>\longleftarrow '
-exe s:pA1.'Leftarrow <plug>\Leftarrow '
-exe s:pA1.'Longleftarrow <plug>\Longleftarrow '
-exe s:pA1.'rightarrow <plug>\rightarrow '
-exe s:pA1.'longrightarrow <plug>\longrightarrow '
-exe s:pA1.'Rightarrow <plug>\Rightarrow '
-exe s:pA1.'Longrightarrow <plug>\Longrightarrow '
-exe s:pA1.'leftrightarrow <plug>\leftrightarrow '
-exe s:pA1.'longleftrightarrow <plug>\longleftrightarrow '
-exe s:pA1.'Leftrightarrow <plug>\Leftrightarrow '
-exe s:pA1.'Longleftrightarrow <plug>\Longleftrightarrow '
-exe s:pA1.'uparrow <plug>\uparrow '
-exe s:pA1.'Uparrow <plug>\Uparrow '
-exe s:pA1.'downarrow <plug>\downarrow '
-exe s:pA1.'Downarrow <plug>\Downarrow '
-exe s:pA1.'updownarrow <plug>\updownarrow '
-exe s:pA1.'Updownarrow <plug>\Updownarrow '
-exe s:pA1.'nearrow <plug>\nearrow '
-exe s:pA1.'searrow <plug>\searrow '
-exe s:pA1.'swarrow <plug>\swarrow '
-exe s:pA1.'nwarrow <plug>\nwarrow '
-exe s:pA1.'mapsto <plug>\mapsto '
-exe s:pA1.'leadsto <plug>\leadsto '
-exe s:pA1.'longmapsto <plug>\longmapsto '
-exe s:pA1.'hookleftarrow <plug>\hookleftarrow '
-exe s:pA1.'hookrightarrow <plug>\hookrightarrow '
-exe s:pA1.'leftharpoonup <plug>\leftharpoonup '
-exe s:pA1.'leftharpoondown <plug>\leftharpoondown '
-exe s:pA1.'rightharpoonup <plug>\rightharpoonup '
-exe s:pA1.'rightharpoondown <plug>\rightharpoondown '
-exe s:pA1.'rightleftharpoons <plug>\rightleftharpoons '
-exe s:pA1.'overleftarrow <plug>\overleftarrow '
-exe s:pA1.'overrightarrow <plug>\overrightarrow '
-exe s:pA1.'overleftrightarrow <plug>\overleftrightarrow '
-exe s:pA1.'underleftarrow <plug>\underleftarrow '
-exe s:pA1.'underrightarrow <plug>\underrightarrow '
-exe s:pA1.'underleftrightarrow <plug>\underleftrightarrow '
-exe s:pA1.'xleftarrow <plug>\xleftarrow '
-exe s:pA1.'xrightarrow <plug>\xrightarrow '
-" }}}
-
-
-" MATH nArrows {{{
-let s:pA1a = s:pA."&nArrows."
-exe s:pA1a.'nleftarrow <plug>\nleftarrow '
-exe s:pA1a.'nLeftarrow <plug>\nLeftarrow '
-exe s:pA1a.'nleftrightarrow <plug>\nleftrightarrow '
-exe s:pA1a.'nrightarrow <plug>\nrightarrow '
-exe s:pA1a.'nRightarrow <plug>\nRightarrow '
-" }}}
-" MATH Arrows2 {{{
-let s:pA1a = s:pA."Arrows2."
-exe s:pA1a.'dashleftarrow <plug>\dashleftarrow '
-exe s:pA1a.'leftleftarrows <plug>\leftleftarrows '
-exe s:pA1a.'leftrightarrows <plug>\leftrightarrows '
-exe s:pA1a.'Lleftarrow <plug>\Lleftarrow '
-exe s:pA1a.'twoheadleftarrow <plug>\twoheadleftarrow '
-exe s:pA1a.'leftarrowtail <plug>\leftarrowtail '
-exe s:pA1a.'leftrightharpoons <plug>\leftrightharpoons '
-exe s:pA1a.'Lsh <plug>\Lsh '
-exe s:pA1a.'looparrowleft <plug>\looparrowleft '
-exe s:pA1a.'curvearrowleft <plug>\curvearrowleft '
-exe s:pA1a.'circlearrowleft <plug>\circlearrowleft '
-exe s:pA1a.'dashrightarrow <plug>\dashrightarrow '
-exe s:pA1a.'rightrightarrows <plug>\rightrightarrows '
-exe s:pA1a.'rightleftarrows <plug>\rightleftarrows '
-exe s:pA1a.'Rrightarrow <plug>\Rrightarrow '
-exe s:pA1a.'twoheadrightarrow <plug>\twoheadrightarrow '
-exe s:pA1a.'rightarrowtail <plug>\rightarrowtail '
-exe s:pA1a.'rightleftharpoons <plug>\rightleftharpoons '
-exe s:pA1a.'Rsh <plug>\Rsh '
-exe s:pA1a.'looparrowright <plug>\looparrowright '
-exe s:pA1a.'curvearrowright <plug>\curvearrowright '
-exe s:pA1a.'circlearrowright <plug>\circlearrowright '
-exe s:pA1a.'multimap <plug>\multimap '
-exe s:pA1a.'upuparrows <plug>\upuparrows '
-exe s:pA1a.'downdownarrows <plug>\downdownarrows '
-exe s:pA1a.'upharpoonleft <plug>\upharpoonleft '
-exe s:pA1a.'upharpoonright <plug>\upharpoonright '
-exe s:pA1a.'downharpoonleft <plug>\downharpoonleft '
-exe s:pA1a.'downharpoonright <plug>\downharpoonright '
-exe s:pA1a.'rightsquigarrow <plug>\rightsquigarrow '
-exe s:pA1a.'leftrightsquigarrow <plug>\leftrightsquigarrow '
-" }}}
-" MATH Fonts {{{
-let s:pA2a = s:pA."&MathFonts."
-exe s:pA2a.'mathbf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbf{<++>}<++>")<cr>'
-exe s:pA2a.'mathrm{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathrm{<++>}<++>")<cr>'
-exe s:pA2a.'mathsf{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathsf{<++>}<++>")<cr>'
-exe s:pA2a.'mathtt{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathtt{<++>}<++>")<cr>'
-exe s:pA2a.'mathit{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathit{<++>}<++>")<cr>'
-exe s:pA2a.'mathfrak{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathfrak{<++>}<++>")<cr>'
-exe s:pA2a.'mathcal{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathcal{<++>}<++>")<cr>'
-exe s:pA2a.'mathscr{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathscr{<++>}<++>")<cr>'
-exe s:pA2a.'mathbb{} <plug><C-r>=IMAP_PutTextWithMovement("\\mathbb{<++>}<++>")<cr>'
-" }}}
-" Greek Letters small {{{
-let s:pA2 = s:pA."&Greek.&Small."
-exe s:pA2.'alpha<Tab>`a <plug>\alpha '
-exe s:pA2.'beta<Tab>`b <plug>\beta '
-exe s:pA2.'gamma<Tab>`g <plug>\gamma '
-exe s:pA2.'delta<Tab>`d <plug>\delta '
-exe s:pA2.'epsilon <plug>\epsilon '
-exe s:pA2.'varepsilon<Tab>`e <plug>\varepsilon '
-exe s:pA2.'zeta<Tab>`z <plug>\zeta '
-exe s:pA2.'eta<Tab>`h <plug>\eta '
-exe s:pA2.'theta<Tab>`q <plug>\theta '
-exe s:pA2.'vartheta <plug>\vartheta '
-exe s:pA2.'iota<Tab>`i <plug>\iota '
-exe s:pA2.'kappa<Tab>`k <plug>\kappa '
-exe s:pA2.'lambda<Tab>`l <plug>\lambda '
-exe s:pA2.'mu<Tab>`m <plug>\mu '
-exe s:pA2.'nu<Tab>`n <plug>\nu '
-exe s:pA2.'xi<Tab>`x <plug>\xi '
-exe s:pA2.'pi<Tab>`p <plug>\pi '
-exe s:pA2.'varpi <plug>\varpi '
-exe s:pA2.'rho<Tab>`r <plug>\rho '
-exe s:pA2.'varrho <plug>\varrho '
-exe s:pA2.'sigma<Tab>`s <plug>\sigma '
-exe s:pA2.'varsigma<Tab>`v <plug>\varsigma '
-exe s:pA2.'tau<Tab>`t <plug>\tau '
-exe s:pA2.'upsilon<Tab>`u <plug>\upsilon '
-exe s:pA2.'phi <plug>\phi '
-exe s:pA2.'varphi<Tab>`f <plug>\varphi '
-exe s:pA2.'chi<Tab>`c <plug>\chi '
-exe s:pA2.'psi<Tab>`y <plug>\psi '
-exe s:pA2.'omega<Tab>`w <plug>\omega '
-" }}}
-" Greek Letters big {{{
-let s:pA3 = s:pA.'&Greek.&Big.'
-exe s:pA3.'Alpha<Tab>`A <plug>\Alpha '
-exe s:pA3.'Beta<Tab>`B <plug>\Beta '
-exe s:pA3.'Gamma<Tab>`G <plug>\Gamma '
-exe s:pA3.'Delta<Tab>`D <plug>\Delta '
-exe s:pA3.'Epsilon<Tab>`E <plug>\Epsilon '
-exe s:pA3.'Zeta<Tab>`Z <plug>\mathrm{Z} '
-exe s:pA3.'Eta<Tab>`H <plug>\Eta '
-exe s:pA3.'Theta <plug>\Theta '
-exe s:pA3.'Iota <plug>\mathrm{I} '
-exe s:pA3.'Kappa<Tab>`K <plug>\Kappa '
-exe s:pA3.'Lambda<Tab>`L <plug>\Lambda '
-exe s:pA3.'Mu<Tab>`M <plug>\Mu '
-exe s:pA3.'Nu<Tab>`N <plug>\Nu '
-exe s:pA3.'Xi<Tab>`X <plug>\Xi '
-exe s:pA3.'Pi<Tab>`P <plug>\Pi '
-exe s:pA3.'Rho<Tab>`R <plug>\Rho '
-exe s:pA3.'Sigma<Tab>`S <plug>\Sigma '
-exe s:pA3.'Tau<Tab>`T <plug>\Tau '
-exe s:pA3.'Upsilon<Tab>`U <plug>\Upsilon '
-exe s:pA3.'Phi <plug>\Phi '
-exe s:pA3.'Chi<Tab>`C <plug>\Chi '
-exe s:pA3.'Psi<Tab>`Y <plug>\Psi '
-exe s:pA3.'Omega<Tab>`W <plug>\Omega '
-" }}}
-" BinaryRel1 {{{
-let s:pA4 = s:pA."&BinaryRel1."
-exe s:pA4.'ll <plug>\ll '
-exe s:pA4.'lll <plug>\lll '
-exe s:pA4.'leqslant <plug>\leqslant '
-exe s:pA4.'leq <plug>\leq '
-exe s:pA4.'leqq <plug>\leqq '
-exe s:pA4.'eqslantless <plug>\eqslantless '
-exe s:pA4.'lessdot <plug>\lessdot '
-exe s:pA4.'prec <plug>\prec '
-exe s:pA4.'preceq <plug>\preceq '
-exe s:pA4.'preccurlyeq <plug>\preccurlyeq '
-exe s:pA4.'curlyeqprec <plug>\curlyeqprec '
-exe s:pA4.'lesssim <plug>\lesssim '
-exe s:pA4.'lessapprox <plug>\lessapprox '
-exe s:pA4.'precsim <plug>\precsim '
-exe s:pA4.'precapprox <plug>\precapprox '
-exe s:pA4.'in <plug>\in '
-exe s:pA4.'subset<Tab>`( <plug>\subset '
-exe s:pA4.'Subset<Tab>`) <plug>\Subset '
-exe s:pA4.'subseteq <plug>\subseteq '
-exe s:pA4.'subseteqq <plug>\subseteqq '
-exe s:pA4.'sqsubset <plug>\sqsubset '
-exe s:pA4.'sqsubseteq <plug>\sqsubseteq '
-exe s:pA4.'smile <plug>\smile '
-exe s:pA4.'smallsmile <plug>\smallsmile '
-exe s:pA4.'parallel <plug>\parallel '
-exe s:pA4.'shortparallel <plug>\shortparallel '
-exe s:pA4.'dashv <plug>\dashv '
-exe s:pA4.'vdash <plug>\vdash '
-exe s:pA4.'vDash <plug>\vDash '
-exe s:pA4.'models <plug>\models '
-exe s:pA4.'therefore <plug>\therefore '
-exe s:pA4.'backepsilon <plug>\backepsilon '
-" }}}
-" nBinaryRel1 {{{
-let s:pA4a = s:pA."&nBinaryRel1."
-exe s:pA4a.'nless <plug>\nless '
-exe s:pA4a.'nleqslant <plug>\nleqslant '
-exe s:pA4a.'nleq <plug>\nleq '
-exe s:pA4a.'lneq <plug>\lneq '
-exe s:pA4a.'nleqq <plug>\nleqq '
-exe s:pA4a.'lneqq <plug>\lneqq '
-exe s:pA4a.'lvertneqq <plug>\lvertneqq '
-exe s:pA4a.'nprec <plug>\nprec '
-exe s:pA4a.'npreceq <plug>\npreceq '
-exe s:pA4a.'precneqq <plug>\precneqq '
-exe s:pA4a.'lnsim <plug>\lnsim '
-exe s:pA4a.'lnapprox <plug>\lnapprox '
-exe s:pA4a.'precnsim <plug>\precnsim '
-exe s:pA4a.'precnapprox <plug>\precnapprox '
-exe s:pA4a.'notin <plug>\notin '
-exe s:pA4a.'nsubseteq <plug>\nsubseteq '
-exe s:pA4a.'varsubsetneq <plug>\varsubsetneq '
-exe s:pA4a.'subsetneq <plug>\subsetneq '
-exe s:pA4a.'nsubseteqq <plug>\nsubseteqq '
-exe s:pA4a.'varsubsetneqq <plug>\varsubsetneqq '
-exe s:pA4a.'subsetneqq <plug>\subsetneqq '
-exe s:pA4a.'nparallel <plug>\nparallel '
-exe s:pA4a.'nshortparallel <plug>\nshortparallel '
-exe s:pA4a.'nvdash <plug>\nvdash '
-exe s:pA4a.'nvDash <plug>\nvDash '
-" }}}
-" BinaryRel2 {{{
-let s:pA5 = s:pA."&BinaryRel2."
-exe s:pA5.'gg <plug>\gg '
-exe s:pA5.'ggg <plug>\ggg '
-exe s:pA5.'gggtr <plug>\gggtr '
-exe s:pA5.'geqslant <plug>\geqslant '
-exe s:pA5.'geq <plug>\geq '
-exe s:pA5.'geqq <plug>\geqq '
-exe s:pA5.'eqslantgtr <plug>\eqslantgtr '
-exe s:pA5.'gtrdot <plug>\gtrdot '
-exe s:pA5.'succ <plug>\succ '
-exe s:pA5.'succeq <plug>\succeq '
-exe s:pA5.'succcurlyeq <plug>\succcurlyeq '
-exe s:pA5.'curlyeqsucc <plug>\curlyeqsucc '
-exe s:pA5.'gtrsim <plug>\gtrsim '
-exe s:pA5.'gtrapprox <plug>\gtrapprox '
-exe s:pA5.'succsim <plug>\succsim '
-exe s:pA5.'succapprox <plug>\succapprox '
-exe s:pA5.'ni <plug>\ni '
-exe s:pA5.'owns <plug>\owns '
-exe s:pA5.'supset <plug>\supset '
-exe s:pA5.'Supset <plug>\Supset '
-exe s:pA5.'supseteq <plug>\supseteq '
-exe s:pA5.'supseteqq <plug>\supseteqq '
-exe s:pA5.'sqsupset <plug>\sqsupset '
-exe s:pA5.'sqsupseteq <plug>\sqsupseteq '
-exe s:pA5.'frown <plug>\frown '
-exe s:pA5.'smallfrown <plug>\smallfrown '
-exe s:pA5.'mid <plug>\mid '
-exe s:pA5.'shortmid <plug>\shortmid '
-exe s:pA5.'between <plug>\between '
-exe s:pA5.'Vdash <plug>\Vdash '
-exe s:pA5.'bowtie <plug>\bowtie '
-exe s:pA5.'Join <plug>\Join '
-exe s:pA5.'pitchfork <plug>\pitchfork '
-" }}}
-" {{{ nBinaryRel2
-let s:pA5a = s:pA."n&BinaryRel2." "TODO: dorobiๆ logarytmy
-exe s:pA5a.'ngtr <plug>\ngtr '
-exe s:pA5a.'ngeqslant <plug>\ngeqslant '
-exe s:pA5a.'ngeq <plug>\ngeq '
-exe s:pA5a.'gneq <plug>\gneq '
-exe s:pA5a.'ngeqq <plug>\ngeqq '
-exe s:pA5a.'gneqq <plug>\gneqq '
-exe s:pA5a.'nsucc <plug>\nsucc '
-exe s:pA5a.'nsucceq <plug>\nsucceq '
-exe s:pA5a.'succneqq <plug>\succneqq '
-exe s:pA5a.'gnsim <plug>\gnsim '
-exe s:pA5a.'gnapprox <plug>\gnapprox '
-exe s:pA5a.'succnsim <plug>\succnsim '
-exe s:pA5a.'succnapprox <plug>\succnapprox '
-exe s:pA5a.'nsupseteq <plug>\nsupseteq '
-exe s:pA5a.'varsupsetneq <plug>\varsupsetneq '
-exe s:pA5a.'supsetneq <plug>\supsetneq '
-exe s:pA5a.'nsupseteqq <plug>\nsupseteqq '
-exe s:pA5a.'varsupsetneqq <plug>\varsupsetneqq '
-exe s:pA5a.'supsetneqq <plug>\supsetneqq '
-exe s:pA5a.'nmid <plug>\nmid '
-exe s:pA5a.'nshortmid <plug>\nshortmid '
-exe s:pA5a.'nVdash <plug>\nVdash '
-" }}}
-" {{{ BinaryRel3
-let s:pA6 = s:pA."&BinaryRel3."
-exe s:pA6.'doteq <plug>\doteq '
-exe s:pA6.'circeq <plug>\circeq '
-exe s:pA6.'eqcirc <plug>\eqcirc '
-exe s:pA6.'risingdotseq <plug>\risingdotseq '
-exe s:pA6.'doteqdot <plug>\doteqdot '
-exe s:pA6.'Doteq <plug>\Doteq '
-exe s:pA6.'fallingdotseq <plug>\fallingdotseq '
-exe s:pA6.'triangleq <plug>\triangleq '
-exe s:pA6.'bumpeq <plug>\bumpeq '
-exe s:pA6.'Bumpeq <plug>\Bumpeq '
-exe s:pA6.'equiv<Tab>`= <plug>\equiv '
-exe s:pA6.'sim <plug>\sim '
-exe s:pA6.'thicksim <plug>\thicksim '
-exe s:pA6.'backsim <plug>\backsim '
-exe s:pA6.'simeq <plug>\simeq '
-exe s:pA6.'backsimeq <plug>\backsimeq '
-exe s:pA6.'cong <plug>\cong '
-exe s:pA6.'approx<tab>=~ <plug>\approx '
-exe s:pA6.'thickapprox <plug>\thickapprox '
-exe s:pA6.'approxeq <plug>\approxeq '
-exe s:pA6.'blacktriangleleft <plug>\blacktriangleleft '
-exe s:pA6.'vartriangleleft <plug>\vartriangleleft '
-exe s:pA6.'trianglelefteq <plug>\trianglelefteq '
-exe s:pA6.'blacktriangleright <plug>\blacktriangleright '
-exe s:pA6.'vartriangleright <plug>\vartriangleright '
-exe s:pA6.'trianglerighteq <plug>\trianglerighteq '
-exe s:pA6.'perp <plug>\perp '
-exe s:pA6.'asymp <plug>\asymp '
-exe s:pA6.'Vvdash <plug>\Vvdash '
-exe s:pA6.'propto <plug>\propto '
-exe s:pA6.'varpropto <plug>\varpropto '
-exe s:pA6.'because <plug>\because '
-" }}}
-" {{{ nBinaryRel3
-let s:pA6a = s:pA."&nBinaryRel3."
-exe s:pA6a.'neq <plug>\neq '
-exe s:pA6a.'nsim <plug>\nsim '
-exe s:pA6a.'ncong <plug>\ncong '
-exe s:pA6a.'ntriangleleft <plug>\ntriangleleft '
-exe s:pA6a.'ntrianglelefteq <plug>\ntrianglelefteq '
-exe s:pA6a.'ntriangleright <plug>\ntriangleright '
-exe s:pA6a.'ntrianglerighteq <plug>\ntrianglerighteq '
-" }}}
-" {{{ BinaryRel4
-let s:pA7 = s:pA."&BinaryRel4."
-exe s:pA7.'lessgtr <plug>\lessgtr '
-exe s:pA7.'gtrless <plug>\gtrless '
-exe s:pA7.'lesseqgtr <plug>\lesseqgtr '
-exe s:pA7.'gtreqless <plug>\gtreqless '
-exe s:pA7.'lesseqqgtr <plug>\lesseqqgtr '
-exe s:pA7.'gtreqqless <plug>\gtreqqless '
-" }}}
-" {{{ BigOp
-let s:pA8a = s:pA."&BigOp."
-exe s:pA8a.'limits <plug>\limits'
-exe s:pA8a.'nolimits <plug>\nolimits'
-exe s:pA8a.'displaylimits <plug>\displaylimits'
-exe s:pA8a.'-seplimits- :'
-exe s:pA8a.'bigcap<Tab>`- <plug>\bigcap'
-exe s:pA8a.'bigcup<Tab>`+ <plug>\bigcup'
-exe s:pA8a.'bigodot <plug>\bigodot'
-exe s:pA8a.'bigoplus <plug>\bigoplus'
-exe s:pA8a.'bigotimes <plug>\bigotimes'
-exe s:pA8a.'bigsqcup <plug>\bigsqcup'
-exe s:pA8a.'biguplus <plug>\biguplus'
-exe s:pA8a.'bigvee <plug>\bigvee'
-exe s:pA8a.'bigwedge <plug>\bigwedge'
-exe s:pA8a.'coprod <plug>\coprod'
-exe s:pA8a.'int <plug>\int'
-exe s:pA8a.'oint <plug>\oint'
-exe s:pA8a.'prod <plug>\prod'
-exe s:pA8a.'sum <plug>\sum'
-" }}}
-" {{{ BinaryOp
-let s:pA8 = s:pA."&BinaryOp."
-exe s:pA8.'pm <plug>\pm '
-exe s:pA8.'mp <plug>\mp '
-exe s:pA8.'dotplus <plug>\dotplus '
-exe s:pA8.'cdot<Tab>`. <plug>\cdot '
-exe s:pA8.'centerdot <plug>\centerdot '
-exe s:pA8.'times<Tab>`* <plug>\times '
-exe s:pA8.'ltimes <plug>\ltimes '
-exe s:pA8.'rtimes <plug>\rtimes '
-exe s:pA8.'leftthreetimes <plug>\leftthreetimes '
-exe s:pA8.'rightthreetimes <plug>\rightthreetimes '
-exe s:pA8.'div <plug>\div '
-exe s:pA8.'divideontimes <plug>\divideontimes '
-exe s:pA8.'bmod <plug>\bmod '
-exe s:pA8.'ast <plug>\ast '
-exe s:pA8.'star <plug>\star '
-exe s:pA8.'setminus<Tab>`\\ <plug>\setminus '
-exe s:pA8.'smallsetminus <plug>\smallsetminus '
-exe s:pA8.'diamond <plug>\diamond '
-exe s:pA8.'wr <plug>\wr '
-exe s:pA8.'intercal <plug>\intercal '
-exe s:pA8.'circ<Tab>`@ <plug>\circ '
-exe s:pA8.'bigcirc <plug>\bigcirc '
-exe s:pA8.'bullet <plug>\bullet '
-exe s:pA8.'cap <plug>\cap '
-exe s:pA8.'Cap <plug>\Cap '
-exe s:pA8.'cup <plug>\cup '
-exe s:pA8.'Cup <plug>\Cup '
-exe s:pA8.'sqcap <plug>\sqcap '
-exe s:pA8.'sqcup <plug>\sqcup'
-exe s:pA8.'amalg <plug>\amalg '
-exe s:pA8.'uplus <plug>\uplus '
-exe s:pA8.'triangleleft <plug>\triangleleft '
-exe s:pA8.'triangleright <plug>\triangleright '
-exe s:pA8.'bigtriangleup <plug>\bigtriangleup '
-exe s:pA8.'bigtriangledown <plug>\bigtriangledown '
-exe s:pA8.'vee <plug>\vee '
-exe s:pA8.'veebar <plug>\veebar '
-exe s:pA8.'curlyvee <plug>\curlyvee '
-exe s:pA8.'wedge<Tab>`& <plug>\wedge '
-exe s:pA8.'barwedge <plug>\barwedge '
-exe s:pA8.'doublebarwedge <plug>\doublebarwedge '
-exe s:pA8.'curlywedge <plug>\curlywedge '
-exe s:pA8.'oplus <plug>\oplus '
-exe s:pA8.'ominus <plug>\ominus '
-exe s:pA8.'otimes <plug>\otimes '
-exe s:pA8.'oslash <plug>\oslash '
-exe s:pA8.'boxplus <plug>\boxplus '
-exe s:pA8.'boxminus <plug>\boxminus '
-exe s:pA8.'boxtimes <plug>\boxtimes '
-exe s:pA8.'boxdot <plug>\boxdot '
-exe s:pA8.'odot <plug>\odot '
-exe s:pA8.'circledast <plug>\circledast '
-exe s:pA8.'circleddash <plug>\circleddash '
-exe s:pA8.'circledcirc <plug>\circledcirc '
-exe s:pA8.'dagger <plug>\dagger '
-exe s:pA8.'ddagger <plug>\ddagger '
-exe s:pA8.'lhd <plug>\lhd '
-exe s:pA8.'unlhd <plug>\unlhd '
-exe s:pA8.'rhd <plug>\rhd '
-exe s:pA8.'unrhd <plug>\unrhd '
-" }}}
-" {{{ Other1
-let s:pA9 = s:pA."&Other1."
-exe s:pA9.'hat <plug>\hat '
-exe s:pA9.'check <plug>\check '
-exe s:pA9.'grave <plug>\grave '
-exe s:pA9.'acute <plug>\acute '
-exe s:pA9.'dot <plug>\dot '
-exe s:pA9.'ddot <plug>\ddot '
-exe s:pA9.'tilde<Tab>`, <plug>\tilde '
-exe s:pA9.'breve <plug>\breve '
-exe s:pA9.'bar <plug>\bar '
-exe s:pA9.'vec <plug>\vec '
-exe s:pA9.'aleph <plug>\aleph '
-exe s:pA9.'hbar <plug>\hbar '
-exe s:pA9.'imath <plug>\imath '
-exe s:pA9.'jmath <plug>\jmath '
-exe s:pA9.'ell <plug>\ell '
-exe s:pA9.'wp <plug>\wp '
-exe s:pA9.'Re <plug>\Re '
-exe s:pA9.'Im <plug>\Im '
-exe s:pA9.'partial <plug>\partial '
-exe s:pA9.'infty<Tab>`8 <plug>\infty '
-exe s:pA9.'prime <plug>\prime '
-exe s:pA9.'emptyset <plug>\emptyset '
-exe s:pA9.'nabla <plug>\nabla '
-exe s:pA9.'surd <plug>\surd '
-exe s:pA9.'top <plug>\top '
-exe s:pA9.'bot <plug>\bot '
-exe s:pA9.'angle <plug>\angle '
-exe s:pA9.'triangle <plug>\triangle '
-exe s:pA9.'backslash <plug>\backslash '
-exe s:pA9.'forall <plug>\forall '
-exe s:pA9.'exists <plug>\exists '
-exe s:pA9.'neg <plug>\neg '
-exe s:pA9.'flat <plug>\flat '
-exe s:pA9.'natural <plug>\natural '
-exe s:pA9.'sharp <plug>\sharp '
-exe s:pA9.'clubsuit <plug>\clubsuit '
-exe s:pA9.'diamondsuit <plug>\diamondsuit '
-exe s:pA9.'heartsuit <plug>\heartsuit '
-exe s:pA9.'spadesuit <plug>\spadesuit '
-exe s:pA9.'S <plug>\S '
-exe s:pA9.'P <plug>\P'
-" }}}
-" {{{ MathCreating
-let s:pA10 = s:pA."&MathCreating."
-exe s:pA10.'not <plug>\not'
-exe s:pA10.'mkern <plug>\mkern'
-exe s:pA10.'mathbin <plug>\mathbin'
-exe s:pA10.'mathrel <plug>\mathrel'
-exe s:pA10.'stackrel <plug>\stackrel'
-exe s:pA10.'mathord <plug>\mathord'
-" }}}
-" {{{ Styles
-let s:pA11 = s:pA."&Styles."
-exe s:pA11.'displaystyle <plug>\displaystyle'
-exe s:pA11.'textstyle <plug>\textstyle'
-exe s:pA11.'scritpstyle <plug>\scritpstyle'
-exe s:pA11.'scriptscriptstyle <plug>\scriptscriptstyle'
-" }}}
-" {{{ MathDiacritics
-let s:pA12 = s:pA."&MathDiacritics."
-exe s:pA12.'acute{} <plug><C-r>=IMAP_PutTextWithMovement("\\acute{<++>}<++>")<cr>'
-exe s:pA12.'bar{}<Tab>`_ <plug><C-r>=IMAP_PutTextWithMovement("\\bar{<++>}<++>")<cr>'
-exe s:pA12.'breve{} <plug><C-r>=IMAP_PutTextWithMovement("\\breve{<++>}<++>")<cr>'
-exe s:pA12.'check{} <plug><C-r>=IMAP_PutTextWithMovement("\\check{<++>}<++>")<cr>'
-exe s:pA12.'ddot{}<Tab>`: <plug><C-r>=IMAP_PutTextWithMovement("\\ddot{<++>}<++>")<cr>'
-exe s:pA12.'dot{}<Tab>`; <plug><C-r>=IMAP_PutTextWithMovement("\\dot{<++>}<++>")<cr>'
-exe s:pA12.'grave{} <plug><C-r>=IMAP_PutTextWithMovement("\\grave{<++>}<++>")<cr>'
-exe s:pA12.'hat{}<Tab>`^ <plug><C-r>=IMAP_PutTextWithMovement("\\hat{<++>}<++>")<cr>'
-exe s:pA12.'tilde{}<tab>`~ <plug><C-r>=IMAP_PutTextWithMovement("\\tilde{<++>}<++>")<cr>'
-exe s:pA12.'vec{} <plug><C-r>=IMAP_PutTextWithMovement("\\vec{<++>}<++>")<cr>'
-exe s:pA12.'widehat{} <plug><C-r>=IMAP_PutTextWithMovement("\\widehat{<++>}<++>")<cr>'
-exe s:pA12.'widetilde{} <plug><C-r>=IMAP_PutTextWithMovement("\\widetilde{<++>}<++>")<cr>'
-exe s:pA12.'imath <plug><C-r>=IMAP_PutTextWithMovement("\\imath")<cr>'
-exe s:pA12.'jmath <plug><C-r>=IMAP_PutTextWithMovement("\\jmath")<cr>'
-" }}}
-" {{{ OverlineAndCo
-let s:pA13 = s:pA."&OverlineAndCo."
-exe s:pA13.'overline{} <plug><C-r>=IMAP_PutTextWithMovement("\\overline{}")<cr>'
-exe s:pA13.'underline{} <plug><C-r>=IMAP_PutTextWithMovement("\\underline{}")<cr>'
-exe s:pA13.'overrightarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overrightarrow{}")<cr>'
-exe s:pA13.'overleftarrow{} <plug><C-r>=IMAP_PutTextWithMovement("\\overleftarrow{}")<cr>'
-exe s:pA13.'overbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\overbrace{}")<cr>'
-exe s:pA13.'underbrace{} <plug><C-r>=IMAP_PutTextWithMovement("\\underbrace{}")<cr>'
-" }}}
-" {{{ Symbols1
-let s:pA14a = s:pA."&Symbols1."
-exe s:pA14a.'forall <plug>\forall '
-exe s:pA14a.'exists <plug>\exists '
-exe s:pA14a.'nexists <plug>\nexists '
-exe s:pA14a.'neg <plug>\neg '
-exe s:pA14a.'top <plug>\top '
-exe s:pA14a.'bot <plug>\bot '
-exe s:pA14a.'emptyset <plug>\emptyset '
-exe s:pA14a.'varnothing <plug>\varnothing '
-exe s:pA14a.'infty <plug>\infty '
-exe s:pA14a.'aleph <plug>\aleph '
-exe s:pA14a.'beth <plug>\beth '
-exe s:pA14a.'gimel <plug>\gimel '
-exe s:pA14a.'daleth <plug>\daleth '
-exe s:pA14a.'hbar <plug>\hbar '
-exe s:pA14a.'hslash <plug>\hslash '
-exe s:pA14a.'diagup <plug>\diagup '
-exe s:pA14a.'vert <plug>\vert '
-exe s:pA14a.'Vert <plug>\Vert '
-exe s:pA14a.'backslash <plug>\backslash '
-exe s:pA14a.'diagdown <plug>\diagdown '
-exe s:pA14a.'Bbbk <plug>\Bbbk '
-exe s:pA14a.'P <plug>\P '
-exe s:pA14a.'S <plug>\S '
-" }}}
-" {{{ Symbols2
-let s:pA14b = s:pA."&Symbols2."
-exe s:pA14b.'# <plug>\# '
-exe s:pA14b.'% <plug>\% '
-exe s:pA14b.'_ <plug>\_ '
-exe s:pA14b.'$ <plug>\$ '
-exe s:pA14b.'& <plug>\& '
-exe s:pA14b.'imath <plug>\imath '
-exe s:pA14b.'jmath <plug>\jmath '
-exe s:pA14b.'ell <plug>\ell '
-exe s:pA14b.'wp <plug>\wp '
-exe s:pA14b.'Re <plug>\Re '
-exe s:pA14b.'Im <plug>\Im '
-exe s:pA14b.'prime <plug>\prime '
-exe s:pA14b.'backprime <plug>\backprime '
-exe s:pA14b.'nabla <plug>\nabla '
-exe s:pA14b.'surd <plug>\surd '
-exe s:pA14b.'flat <plug>\flat '
-exe s:pA14b.'sharp <plug>\sharp '
-exe s:pA14b.'natural <plug>\natural '
-exe s:pA14b.'eth <plug>\eth '
-exe s:pA14b.'bigstar <plug>\bigstar '
-exe s:pA14b.'circledS <plug>\circledS '
-exe s:pA14b.'Finv <plug>\Finv '
-exe s:pA14b.'dag <plug>\dag '
-exe s:pA14b.'ddag <plug>\ddag '
-" }}}
-" {{{ Symbols3
-let s:pA14c = s:pA."&Symbols3."
-exe s:pA14c.'angle <plug>\angle '
-exe s:pA14c.'measuredangle <plug>\measuredangle '
-exe s:pA14c.'sphericalangle <plug>\sphericalangle '
-exe s:pA14c.'spadesuit <plug>\spadesuit '
-exe s:pA14c.'heartsuit <plug>\heartsuit '
-exe s:pA14c.'diamondsuit <plug>\diamondsuit '
-exe s:pA14c.'clubsuit <plug>\clubsuit '
-exe s:pA14c.'lozenge <plug>\lozenge '
-exe s:pA14c.'blacklozenge <plug>\blacklozenge '
-exe s:pA14c.'Diamond <plug>\Diamond '
-exe s:pA14c.'triangle <plug>\triangle '
-exe s:pA14c.'vartriangle <plug>\vartriangle '
-exe s:pA14c.'blacktriangle <plug>\blacktriangle '
-exe s:pA14c.'triangledown <plug>\triangledown '
-exe s:pA14c.'blacktriangledown <plug>\blacktriangledown '
-exe s:pA14c.'Box <plug>\Box '
-exe s:pA14c.'square <plug>\square '
-exe s:pA14c.'blacksquare <plug>\blacksquare '
-exe s:pA14c.'complement <plug>\complement '
-exe s:pA14c.'mho <plug>\mho '
-exe s:pA14c.'Game <plug>\Game '
-exe s:pA14c.'partial<Tab>`6 <plug>\partial '
-exe s:pA14c.'smallint <plug>\smallint '
-" }}}
-" {{{ Logic
-let s:pA15 = s:pA."&Logic."
-exe s:pA15.'lnot <plug>\lnot '
-exe s:pA15.'lor <plug>\lor '
-exe s:pA15.'land <plug>\land '
-" }}}
-" {{{ Limits1
-let s:pA16 = s:pA."&Limits1."
-exe s:pA16.'left <plug>\left'
-exe s:pA16.'right <plug>\right'
-exe s:pA16.'-sepbigl- :'
-exe s:pA16.'bigl <plug>\bigl'
-exe s:pA16.'Bigl <plug>\Bigl'
-exe s:pA16.'biggl <plug>\biggl'
-exe s:pA16.'Biggl <plug>\Biggl'
-exe s:pA16.'-sepbigr- :'
-exe s:pA16.'bigr <plug>\bigr'
-exe s:pA16.'Bigr <plug>\Bigr'
-exe s:pA16.'biggr <plug>\biggr'
-exe s:pA16.'Biggr <plug>\Biggr'
-exe s:pA16.'-sepbig- :'
-exe s:pA16.'big <plug>\big'
-exe s:pA16.'bigm <plug>\bigm'
-exe s:pA16.'-sepfloor- :'
-exe s:pA16.'lfloor <plug>\lfloor '
-exe s:pA16.'lceil <plug>\lceil '
-exe s:pA16.'rfloor <plug>\rfloor '
-exe s:pA16.'rceil <plug>\rceil '
-exe s:pA16.'-sepangle- :'
-exe s:pA16.'langle <plug>\langle '
-exe s:pA16.'rangle <plug>\rangle '
-" }}}
-" {{{ Limits2
-let s:pA16a = s:pA."&Limits2."
-exe s:pA16a.'ulcorner <plug>\ulcorner '
-exe s:pA16a.'urcorner <plug>\urcorner '
-exe s:pA16a.'llcorner <plug>\llcorner '
-exe s:pA16a.'rlcorner <plug>\rlcorner '
-exe s:pA16a.'-sepcorner- :'
-exe s:pA16a.'vert <plug>\vert '
-exe s:pA16a.'Vert <plug>\Vert '
-exe s:pA16a.'lvert <plug>\lvert '
-exe s:pA16a.'lVert <plug>\lVert '
-exe s:pA16a.'rvert <plug>\rvert '
-exe s:pA16a.'rVert <plug>\rVert '
-exe s:pA16a.'uparrow <plug>\uparrow '
-exe s:pA16a.'Uparrow <plug>\Uparrow '
-exe s:pA16a.'downarrow <plug>\downarrow '
-exe s:pA16a.'Downarrow <plug>\Downarrow '
-exe s:pA16a.'updownarrow <plug>\updownarrow '
-exe s:pA16a.'Updownarrow <plug>\Updownarrow '
-exe s:pA16a.'lgroup <plug>\lgroup '
-exe s:pA16a.'rgroup <plug>\rgroup '
-exe s:pA16a.'lmoustache <plug>\lmoustache '
-exe s:pA16a.'rmoustache <plug>\rmoustache '
-exe s:pA16a.'arrowvert <plug>\arrowvert '
-exe s:pA16a.'Arrowvert <plug>\Arrowvert '
-exe s:pA16a.'bracevert <plug>\bracevert '
-" }}}
-" {{{ Log-likes
-let s:pA17 = s:pA."Lo&g-likes."
-exe s:pA17.'arccos <plug>\arccos '
-exe s:pA17.'arcsin <plug>\arcsin '
-exe s:pA17.'arctan <plug>\arctan '
-exe s:pA17.'arg <plug>\arg '
-exe s:pA17.'cos <plug>\cos '
-exe s:pA17.'cosh <plug>\cosh '
-exe s:pA17.'cot <plug>\cot '
-exe s:pA17.'coth <plug>\coth '
-exe s:pA17.'csc <plug>\csc '
-exe s:pA17.'deg <plug>\deg '
-exe s:pA17.'det <plug>\det '
-exe s:pA17.'dim <plug>\dim '
-exe s:pA17.'exp <plug>\exp '
-exe s:pA17.'gcd <plug>\gcd '
-exe s:pA17.'hom <plug>\hom '
-exe s:pA17.'inf <plug>\inf '
-exe s:pA17.'injlim <plug>\injlim '
-exe s:pA17.'ker <plug>\ker '
-exe s:pA17.'lg <plug>\lg '
-exe s:pA17.'lim <plug>\lim '
-exe s:pA17.'liminf <plug>\liminf '
-exe s:pA17.'limsup <plug>\limsup '
-exe s:pA17.'ln <plug>\ln '
-exe s:pA17.'log <plug>\log '
-exe s:pA17.'max <plug>\max '
-exe s:pA17.'min <plug>\min '
-exe s:pA17.'Pr <plug>\Pr '
-exe s:pA17.'projlim <plug>\projlim '
-exe s:pA17.'sec <plug>\sec '
-exe s:pA17.'sin <plug>\sin '
-exe s:pA17.'sinh <plug>\sinh '
-exe s:pA17.'sup <plug>\sup '
-exe s:pA17.'tan <plug>\tan '
-exe s:pA17.'tanh <plug>\tanh '
-exe s:pA17.'varlimsup <plug>\varlimsup '
-exe s:pA17.'varliminf <plug>\varliminf '
-exe s:pA17.'varinjlim <plug>\varinjlim '
-exe s:pA17.'varprojlim <plug>\varprojlim '
-" }}}
-" {{{ MathSpacing
-let s:pA18 = s:pA."MathSpacing."
-exe s:pA18.', <plug>\, '
-exe s:pA18.': <plug>\: '
-exe s:pA18.'; <plug>\; '
-exe s:pA18.'[space] <plug>\ '
-exe s:pA18.'quad <plug>\quad '
-exe s:pA18.'qquad <plug>\qquad '
-exe s:pA18.'! <plug>\! '
-exe s:pA18.'thinspace <plug>\thinspace '
-exe s:pA18.'medspace <plug>\medspace '
-exe s:pA18.'thickspace <plug>\thickspace '
-exe s:pA18.'negthinspace <plug>\negthinspace '
-exe s:pA18.'negmedspace <plug>\negmedspace '
-exe s:pA18.'negthickspace <plug>\negthickspace '
-" 1}}}
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/multicompile.vim b/ftplugin/latex-suite/multicompile.vim
deleted file mode 100644
index 2e747623..00000000
--- a/ftplugin/latex-suite/multicompile.vim
+++ /dev/null
@@ -1,16 +0,0 @@
-" ============================================================================
-" File: multicompile.vim
-" Author: Srinath Avadhanula
-" Created: Sat Jul 05 03:00 PM 2003
-" Description: compile a .tex file multiple times to get cross references
-" right.
-" License: Vim Charityware License
-" Part of vim-latexSuite: http://vim-latex.sourceforge.net
-" ============================================================================
-
-" The contents of this file have been moved to compiler.vim, the file which
-" contains all functions relevant to compiling and viewing.
-" This file is kept empty on purpose so that it will over-write previous
-" versions of multicompile.vim, therby preventing conflicts.
-
-" vim:fdm=marker:nowrap:noet:ff=unix:ts=4:sw=4
diff --git a/ftplugin/latex-suite/packages.vim b/ftplugin/latex-suite/packages.vim
deleted file mode 100644
index 49b4e489..00000000
--- a/ftplugin/latex-suite/packages.vim
+++ /dev/null
@@ -1,676 +0,0 @@
-"=============================================================================
-" File: packages.vim
-" Author: Mikolaj Machowski
-" Created: Tue Apr 23 06:00 PM 2002 PST
-"
-" Description: handling packages from within vim
-"=============================================================================
-
-" avoid reinclusion.
-if !g:Tex_PackagesMenu || exists('s:doneOnce')
- finish
-endif
-let s:doneOnce = 1
-
-let s:path = fnameescape(expand("<sfile>:p:h"))
-
-let s:menu_div = 20
-
-com! -nargs=0 TPackageUpdate :silent! call Tex_pack_updateall(1)
-com! -nargs=0 TPackageUpdateAll :silent! call Tex_pack_updateall(1)
-
-" Custom command-line completion of Tcommands is very useful but this feature
-" is available only in Vim 6.2 and above. Check number of version and choose
-" proper command and function.
-if v:version >= 602
- com! -complete=custom,Tex_CompletePackageName -nargs=* TPackage let s:retVal = Tex_pack_one(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
-
- " Tex_CompletePackageName: for completing names in TPackage command {{{
- " Description: get list of package names with globpath(), remove full path
- " and return list of names separated with newlines.
- "
- function! Tex_CompletePackageName(A,P,L)
- " Get name of packages from all runtimepath directories
- let packnames = Tex_FindInRtp('', 'packages')
- let packnames = substitute(packnames, '^,', '', 'e')
- " Separate names with \n not ,
- let packnames = substitute(packnames,',','\n','g')
- return packnames
- endfunction
- " }}}
-
-else
- com! -nargs=* TPackage let s:retVal = Tex_pack_one(<f-args>) <bar> normal! i<C-r>=s:retVal<CR>
-
-endif
-
-imap <silent> <plug> <Nop>
-nmap <silent> <plug> i
-
-let g:Tex_package_supported = ''
-let g:Tex_package_detected = ''
-" Remember the defaults because we want g:Tex_PromptedEnvironments to contain
-" in addition to the default, \newenvironments, and the \newenvironments might
-" change...
-let g:Tex_PromptedEnvironmentsDefault = g:Tex_PromptedEnvironments
-let g:Tex_PromptedCommandsDefault = g:Tex_PromptedCommands
-
-
-" Tex_pack_check: creates the package menu and adds to 'dict' setting. {{{
-"
-function! Tex_pack_check(package)
- " Use Tex_FindInRtp() function to get first name from packages list in all
- " rtp directories conforming with latex-suite directories hierarchy
- " Store names in variables to process functions only once.
- let packname = Tex_FindInRtp(a:package, 'packages')
- if packname != ''
- exe 'runtime! ftplugin/latex-suite/packages/' . a:package
- if has("gui_running")
- call Tex_pack(a:package)
- endif
- if g:Tex_package_supported !~ a:package
- let g:Tex_package_supported = g:Tex_package_supported.','.a:package
- endif
- endif
- " Return full list of dictionaries (separated with ,) for package in &rtp
- call Tex_Debug("Tex_pack_check: searching for ".a:package." in dictionaries/ in &rtp", "pack")
- let dictname = Tex_FindInRtp(a:package, 'dictionaries', ':p')
- if dictname != ''
- exe 'setlocal dict^=' . dictname
- call Tex_Debug('Tex_pack_check: setlocal dict^=' . dictname, 'pack')
- if g:Tex_package_supported !~ a:package
- let g:Tex_package_supported = g:Tex_package_supported.','.a:package
- endif
- endif
- if g:Tex_package_detected !~ '\<'.a:package.'\>'
- let g:Tex_package_detected = g:Tex_package_detected.','.a:package
- endif
- let g:Tex_package_detected = substitute(g:Tex_package_detected, '^,', '', '')
- let g:Tex_package_supported = substitute(g:Tex_package_supported, '^,', '', '')
-endfunction
-
-" }}}
-" Tex_pack_uncheck: removes package from menu and 'dict' settings. {{{
-function! Tex_pack_uncheck(package)
- if has("gui_running") && Tex_FindInRtp(a:package, 'packages') != ''
- exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.'-sep'.a:package.'-'
- exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.a:package.'\ Options'
- exe 'silent! aunmenu '.g:Tex_PackagesMenuLocation.a:package.'\ Commands'
- endif
- if Tex_FindInRtp(a:package, 'dictionaries') != ''
- exe 'setlocal dict-='.Tex_FindInRtp(a:package, 'dictionaries')
- endif
-endfunction
-
-" }}}
-" Tex_pack_updateall: updates the TeX-Packages menu {{{
-" Description:
-" This function first calls Tex_pack_all to scan for \usepackage's etc if
-" necessary. After that, it 'supports' and 'unsupports' packages as needed
-" in such a way as to not repeat work.
-function! Tex_pack_updateall(force)
- call Tex_Debug('+Tex_pack_updateall', 'pack')
-
- " Find out which file we need to scan.
- let fname = Tex_GetMainFileName(':p')
-
- " If this is the same as last time, don't repeat.
- if !a:force && exists('s:lastScannedFile') &&
- \ s:lastScannedFile == fname
- return
- endif
- " Remember which file we scanned for next time.
- let s:lastScannedFile = fname
-
- " Remember which packages we detected last time.
- if exists('g:Tex_package_detected')
- let oldpackages = g:Tex_package_detected
- else
- let oldpackages = ''
- endif
-
- " This sets up a global variable of all detected packages.
- let g:Tex_package_detected = ''
- " reset the environments and commands.
- let g:Tex_PromptedEnvironments = g:Tex_PromptedEnvironmentsDefault
- let g:Tex_PromptedCommands = g:Tex_PromptedCommandsDefault
-
- if expand('%:p') != fname
- call Tex_Debug(':Tex_pack_updateall: sview '.Tex_EscapeSpaces(fname), 'pack')
- exe 'sview '.Tex_EscapeSpaces(fname)
- else
- call Tex_Debug(':Tex_pack_updateall: split', 'pack')
- split
- endif
-
- call Tex_ScanForPackages()
- q
-
- call Tex_Debug(':Tex_pack_updateall: detected ['.g:Tex_package_detected.'] in first run', 'pack')
-
- " Now for each package find out if this is a custom package and if so,
- " scan that as well. We will use the ':find' command in vim to let vim
- " search through the file paths for us.
- "
- " NOTE: This while loop will also take into account packages included
- " within packages to any level of recursion as long as
- " g:Tex_package_detected is always padded with new package names
- " from the end.
- "
- " First set the &path setting to the user's TEXINPUTS setting.
- let _path = &path
- let _suffixesadd = &suffixesadd
-
- let &path = '.,'.g:Tex_TEXINPUTS
- let &suffixesadd = '.sty,.tex'
-
- let scannedPackages = ''
-
- let i = 1
- let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
- while packname != ''
-
- call Tex_Debug(':Tex_pack_updateall: scanning package '.packname, 'pack')
-
- " Scan this package only if we have not scanned it before in this
- " run.
- if scannedPackages =~ '\<'.packname.'\>'
- let i = i + 1
-
- call Tex_Debug(':Tex_pack_updateall: '.packname.' already scanned', 'pack')
- let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
- continue
- endif
-
- " Split this window in two. The packages/files being found will open
- " in this new window and we also need not bother with files being
- " modified etc.
- split
-
- call Tex_Debug(':Tex_pack_updateall: silent! find '.Tex_EscapeSpaces(packname).'.sty', 'pack')
- let thisbufnum = bufnr('%')
- exec 'silent! find '.Tex_EscapeSpaces(packname).'.sty'
- call Tex_Debug(':Tex_pack_updateall: present file = '.bufname('%'), 'pack')
-
- " If this file was not found, assume that it means its not a
- " custom package and mark it "scanned".
- " A package is not found if we stay in the same buffer as before and
- " its not the one where we want to go.
- if bufnr('%') == thisbufnum && bufnr('%') != bufnr(packname.'.sty')
- let scannedPackages = scannedPackages.','.packname
- q
-
- call Tex_Debug(':Tex_pack_updateall: '.packname.' not found anywhere', 'pack')
- let i = i + 1
- let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
- continue
- endif
-
- " otherwise we are presently editing a custom package, scan it for
- " more \usepackage lines from the first line to the last.
- let packpath = expand('%:p')
- let &complete = &complete.'s'.packpath
-
- call Tex_Debug(':Tex_pack_updateall: found custom package '.packpath, 'pack')
- call Tex_ScanForPackages(line('$'), line('$'))
- call Tex_Debug(':Tex_pack_updateall: After scanning, g:Tex_package_detected = '.g:Tex_package_detected, 'pack')
-
- let scannedPackages = scannedPackages.','.packname
- " Do not use bwipe, but that leads to excessive buffer number
- " consumption. Besides, its intuitive for a custom package to remain
- " on the buffer list.
- q
-
- let i = i + 1
- let packname = Tex_Strntok(g:Tex_package_detected, ',', i)
- endwhile
-
- let &path = _path
- let &suffixesadd = _suffixesadd
-
- " Now only support packages we didn't last time.
- " First remove packages which were used last time but are no longer used.
- let i = 1
- let oldPackName = Tex_Strntok(oldpackages, ',', i)
- while oldPackName != ''
- if g:Tex_package_detected !~ oldPackName
- call Tex_pack_uncheck(oldPackName)
- endif
- let i = i + 1
- let oldPackName = Tex_Strntok(oldpackages, ',', i)
- endwhile
-
- " Then support packages which are used this time but weren't used last
- " time.
- let i = 1
- let newPackName = Tex_Strntok(g:Tex_package_detected, ',', i)
- while newPackName != ''
- if oldpackages !~ newPackName
- call Tex_pack_one(newPackName)
- endif
- let i = i + 1
- let newPackName = Tex_Strntok(g:Tex_package_detected, ',', i)
- endwhile
-
- " Throw an event that we are done scanning packages. Some packages might
- " use this to change behavior based on which options have been used etc.
- call Tex_Debug(":Tex_pack_updateall: throwing LatexSuiteScannedPackages event", "pack")
- silent! do LatexSuite User LatexSuiteScannedPackages
-
- call Tex_Debug("-Tex_pack_updateall", "pack")
-endfunction
-
-" }}}
-" Tex_pack_one: supports each package in the argument list.{{{
-" Description:
-" If no arguments are supplied, then the user is asked to choose from the
-" packages found in the packages/ directory
-function! Tex_pack_one(...)
- if a:0 == 0 || (a:0 > 0 && a:1 == '')
- let packlist = Tex_FindInRtp('', 'packages')
- let packname = Tex_ChooseFromPrompt(
- \ "Choose a package: \n" .
- \ Tex_CreatePrompt(packlist, '3', ',') .
- \ "\nEnter number or filename :",
- \ packlist, ',')
- if packname != ''
- return Tex_pack_one(packname)
- else
- return ''
- endif
- else
- " Support the packages supplied. This function can be called with
- " multiple arguments in which case, support each of them in turn.
- let retVal = ''
- let omega = 1
- while omega <= a:0
- let packname = a:{omega}
- if Tex_FindInRtp(packname, 'packages') != ''
- call Tex_pack_check(packname)
- if exists('g:TeX_package_option_'.packname)
- \ && g:TeX_package_option_{packname} != ''
- let retVal = retVal.'\usepackage[<++>]{'.packname.'}<++>'
- else
- let retVal = retVal.'\usepackage{'.packname.'}'."\<CR>"
- endif
- else
- let retVal = retVal.'\usepackage{'.packname.'}'."\<CR>"
- endif
- let omega = omega + 1
- endwhile
- return IMAP_PutTextWithMovement(substitute(retVal, "\<CR>$", '', ''), '<+', '+>')
- endif
-endfunction
-" }}}
-" Tex_ScanForPackages: scans the current file for \usepackage{} lines {{{
-" and if supported, loads the options and commands found in the
-" corresponding package file. Also scans for \newenvironment and
-" \newcommand lines and adds names to g:Tex_Prompted variables, they can be
-" easy available through <F5> and <F7> shortcuts
-function! Tex_ScanForPackages(...)
- call Tex_Debug("+Tex_ScanForPackages", "pack")
-
- let pos = Tex_GetPos()
-
- " For package files without \begin and \end{document}, we might be told to
- " search from beginning to end.
- if a:0 < 2
- 0
- let beginline = search('\\begin{document}', 'W')
- let endline = search('\\end{document}', 'W')
- 0
- else
- let beginline = a:1
- let endline = a:2
- endif
-
- call Tex_Debug(":Tex_ScanForPackages: Begining scans in [".bufname('%')."], beginline = ".beginline, "pack")
-
-
- " Scan the file. First open up all the folds, because the command
- " /somepattern
- " issued in a closed fold _always_ goes to the first match.
- let erm = v:errmsg
- silent! normal! ggVGzO
- let v:errmsg = erm
-
- call Tex_Debug(":Tex_ScanForPackages: beginning scan for \\usepackage lines", "pack")
- " The wrap trick enables us to match \usepackage on the first line as
- " well.
- let wrap = 'w'
- while search('^\s*\\usepackage\_.\{-}{\_.\+}', wrap)
- let wrap = 'W'
-
- if line('.') > beginline
- break
- endif
-
- let saveUnnamed = @"
- let saveA = @a
-
- " If there are options, then find those.
- if getline('.') =~ '\\usepackage\[.\{-}\]'
- let options = matchstr(getline('.'), '\\usepackage\[\zs.\{-}\ze\]')
- elseif getline('.') =~ '\\usepackage\['
- " Entering here means that the user has split the \usepackage
- " across newlines. Therefore, use yank.
- exec "normal! /{\<CR>\"ayi}"
- let options = @a
- else
- let options = ''
- endif
-
- " The following statement puts the stuff between the { }'s of a
- " \usepackage{stuff,foo} into @a. Do not use matchstr() and the like
- " because we can have things split across lines and such.
- exec "normal! /{\<CR>\"ay/}\<CR>"
-
- " now remove all whitespace from @a. We need to remove \n and \r
- " because we can encounter stuff like
- " \usepackage{pack1,
- " newpackonanotherline}
- let @a = substitute(@a, "[ \t\n\r]", '', 'g')
-
- " Now we have something like pack1,pack2,pack3 with possibly commas
- " and stuff before the first package and after the last package name.
- " Remove those.
- let @a = substitute(@a, '\(^\W*\|\W*$\)', '', 'g')
-
- " This gets us a string like 'pack1,pack2,pack3'
- " TODO: This will contain duplicates if the user has duplicates.
- " Should we bother taking care of this?
- let g:Tex_package_detected = g:Tex_package_detected.','.@a
-
- " For each package found, form a global variable of the form
- " g:Tex_{packagename}_options
- " which contains a list of the options.
- let j = 1
- while Tex_Strntok(@a, ',', j) != ''
- let g:Tex_{Tex_Strntok(@a, ',', j)}_options = options
- let j = j + 1
- endwhile
-
- " Finally convert @a into something like '"pack1","pack2"'
- let @a = substitute(@a, '^\|$', '"', 'g')
- let @a = substitute(@a, ',', '","', 'g')
-
- call Tex_Debug(":Tex_ScanForPackages: found package(s) [".@a."] on line ".line('.'), "pack")
-
- " restore @a
- let @a = saveA
- let @" = saveUnnamed
- endwhile
- call Tex_Debug(":Tex_ScanForPackages: End scan \\usepackage, detected packages = ".g:Tex_package_detected, "pack")
-
- " TODO: This needs to be changed. In the future, we might have
- " functionality to remember the fold-state before opening up all the folds
- " and then re-creating them. Use mkview.vim.
- let erm = v:errmsg
- silent! normal! ggVGzC
- let v:errmsg = erm
-
- " Because creating list of detected packages gives string
- " ',pack1,pack2,pack3' remove leading ,
- let g:Tex_package_detected = substitute(g:Tex_package_detected, '^,', '', '')
-
- call Tex_Debug(":Tex_ScanForPackages: Beginning scan for \\newcommand's", "pack")
- " Scans whole file (up to \end{document}) for \newcommand and adds this
- " commands to g:Tex_PromptedCommands variable, it is easily available
- " through <F7>
- 0
- while search('^\s*\\newcommand\*\?{.\{-}}', 'W')
-
- if line('.') > endline
- break
- endif
-
- let newcommand = matchstr(getline('.'), '\\newcommand\*\?{\\\zs.\{-}\ze}')
- let g:Tex_PromptedCommands = g:Tex_PromptedCommands . ',' . newcommand
-
- endwhile
-
- " Scans whole file (up to \end{document}) for \newenvironment and adds this
- " environments to g:Tex_PromptedEnvironments variable, it is easily available
- " through <F5>
- 0
- call Tex_Debug(":Tex_ScanForPackages: Beginning scan for \\newenvironment's", 'pack')
-
- while search('^\s*\\newenvironment\*\?{.\{-}}', 'W')
- call Tex_Debug('found newenvironment on '.line('.'), 'pack')
-
- if line('.') > endline
- break
- endif
-
- let newenvironment = matchstr(getline('.'), '\\newenvironment\*\?{\zs.\{-}\ze}')
- let g:Tex_PromptedEnvironments = g:Tex_PromptedEnvironments . ',' . newenvironment
-
- endwhile
-
- call Tex_SetPos(pos)
- " first make a random search so that we push at least one item onto the
- " search history. Since vim puts only one item in the history per function
- " call, this way we make sure that one and only item is put into the
- " search history.
- normal! /^<CR>
- " now delete it...
- call histdel('/', -1)
-
- call Tex_Debug("-Tex_ScanForPackages", "pack")
-endfunction
-
-" }}}
-" Tex_pack_supp_menu: sets up a menu for package files {{{
-" found in the packages directory groups the packages thus found into groups
-" of 20...
-function! Tex_pack_supp_menu()
- let suplist = Tex_FindInRtp('', 'packages')
-
- call Tex_MakeSubmenu(suplist, g:Tex_PackagesMenuLocation.'Supported.',
- \ '<plug><C-r>=Tex_pack_one("', '")<CR>')
-endfunction
-
-" }}}
-" Tex_pack: loads the options (and commands) for the given package {{{
-function! Tex_pack(pack)
- if exists('g:TeX_package_'.a:pack)
-
- let optionList = g:TeX_package_option_{a:pack}.','
- let commandList = g:TeX_package_{a:pack}.','
-
- " Don't create separator if in package file are only Vim commands.
- " Rare but possible.
- if !(commandList == ',' && optionList == ',')
- exec 'amenu '.g:Tex_PackagesMenuLocation.'-sep'.a:pack.'- <Nop>'
- endif
-
- if optionList != ''
-
- let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'\ Options.'
- call s:GroupPackageMenuItems(optionList, mainMenuName,
- \ '<plug><C-r>=IMAP_PutTextWithMovement("', ',")<CR>')
-
- endif
-
- if commandList != ''
-
- let mainMenuName = g:Tex_PackagesMenuLocation.a:pack.'\ Commands.'
- call s:GroupPackageMenuItems(commandList, mainMenuName,
- \ '<plug><C-r>=Tex_ProcessPackageCommand("', '")<CR>',
- \ '<SID>FilterPackageMenuLHS')
- endif
- endif
-endfunction
-
-" }}}
-
-" ==============================================================================
-" Menu Functions
-" Creating menu items for the all the package files found in the packages/
-" directory as well as creating menus for each supported package found in the
-" preamble.
-" ==============================================================================
-" Tex_MakeSubmenu: makes a submenu given a list of items {{{
-" Description:
-" This function takes a comma seperated list of menu items and creates a
-" 'grouped' menu. i.e, it groups the items into s:menu_div items each and
-" puts them in submenus of the given mainMenu.
-" Each menu item is linked to the HandlerFunc.
-" If an additional argument is supplied, then it is used to filter each of
-" the menu items to generate better names for the menu display.
-"
-function! Tex_MakeSubmenu(menuList, mainMenuName,
- \ handlerFuncLHS, handlerFuncRHS, ...)
-
- let extractFunction = (a:0 > 0 ? a:1 : '' )
- let menuList = substitute(a:menuList, '[^,]$', ',', '')
-
- let doneMenuSubmenu = 0
-
- while menuList != ''
-
- " Extract upto s:menu_div menus at once.
- let menuBunch = matchstr(menuList, '\v(.{-},){,'.s:menu_div.'}')
-
- " The remaining menus go into the list.
- let menuList = strpart(menuList, strlen(menuBunch))
-
- let submenu = ''
- " If there is something remaining, then we got s:menu_div items.
- " therefore put these menu items into a submenu.
- if strlen(menuList) || doneMenuSubmenu
- exec 'let firstMenu = '.extractFunction."(matchstr(menuBunch, '\\v^.{-}\\ze,'))"
- exec 'let lastMenu = '.extractFunction."(matchstr(menuBunch, '\\v[^,]{-}\\ze,$'))"
-
- let submenu = firstMenu.'\ \-\ '.lastMenu.'.'
-
- let doneMenuSubmenu = 1
- endif
-
- " Now for each menu create a menu under the submenu
- let i = 1
- let menuName = Tex_Strntok(menuBunch, ',', i)
- while menuName != ''
- exec 'let menuItem = '.extractFunction.'(menuName)'
- execute 'amenu '.a:mainMenuName.submenu.menuItem
- \ ' '.a:handlerFuncLHS.menuName.a:handlerFuncRHS
-
- let i = i + 1
- let menuName = Tex_Strntok(menuBunch, ',', i)
- endwhile
- endwhile
-endfunction
-
-" }}}
-" GroupPackageMenuItems: uses the sbr: to split menus into groups {{{
-" Description:
-" This function first splits up the menuList into groups based on the
-" special sbr: tag and then calls Tex_MakeSubmenu
-"
-function! <SID>GroupPackageMenuItems(menuList, menuName,
- \ handlerFuncLHS, handlerFuncRHS,...)
-
- if a:0 > 0
- let extractFunction = a:1
- else
- let extractFunction = ''
- endif
- let menuList = a:menuList
-
- while matchstr(menuList, 'sbr:') != ''
- let groupName = matchstr(menuList, '\v^sbr:\zs.{-}\ze,')
- let menuList = strpart(menuList, strlen('sbr:'.groupName.','))
- if matchstr(menuList, 'sbr:') != ''
- let menuGroup = matchstr(menuList, '\v^.{-},\zesbr:')
- else
- let menuGroup = menuList
- endif
-
- call Tex_MakeSubmenu(menuGroup, a:menuName.groupName.'.',
- \ a:handlerFuncLHS, a:handlerFuncRHS, extractFunction)
-
- let menuList = strpart(menuList, strlen(menuGroup))
- endwhile
-
- call Tex_MakeSubmenu(menuList, a:menuName,
- \ a:handlerFuncLHS, a:handlerFuncRHS, extractFunction)
-
-endfunction " }}}
-" Definition of what to do for various package commands {{{
-let s:CommandSpec_brs = '\<+replace+><++>'
-let s:CommandSpec_bra = '\<+replace+>{<++>}<++>'
-let s:CommandSpec_brd = '\<+replace+>{<++>}{<++>}<++>'
-
-let s:CommandSpec_nor = '\<+replace+>'
-let s:CommandSpec_noo = '\<+replace+>[<++>]'
-let s:CommandSpec_nob = '\<+replace+>[<++>]{<++>}{<++>}<++>'
-
-let s:CommandSpec_env = '\begin{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}<++>'
-let s:CommandSpec_ens = '\begin{<+replace+>}<+extra+>'."\<CR><++>\<CR>".'\end{<+replace+>}<++>'
-let s:CommandSpec_eno = '\begin[<++>]{<+replace+>}'."\<CR><++>\<CR>".'\end{<+replace+>}'
-
-let s:CommandSpec_spe = '<+replace+>'
-let s:CommandSpec_ = '\<+replace+>'
-
-let s:MenuLHS_bra = '\\&<+replace+>{}'
-let s:MenuLHS_brs = '\\&<+replace+>{}'
-let s:MenuLHS_brd = '\\&<+replace+>{}{}'
-let s:MenuLHS_env = '&<+replace+>\ (E)'
-let s:MenuLHS_ens = '&<+replace+>\ (E)'
-let s:MenuLHS_eno = '&<+replace+>\ (E)'
-let s:MenuLHS_nor = '\\&<+replace+>'
-let s:MenuLHS_noo = '\\&<+replace+>[]'
-let s:MenuLHS_nob = '\\&<+replace+>[]{}{}'
-let s:MenuLHS_spe = '&<+replace+>'
-let s:MenuLHS_sep = '-sep<+replace+>-'
-let s:MenuLHS_ = '\\&<+replace+>'
-" }}}
-" Tex_ProcessPackageCommand: processes a command from the package menu {{{
-" Description:
-function! Tex_ProcessPackageCommand(command)
- if a:command =~ ':'
- let commandType = matchstr(a:command, '^\w\+\ze:')
- let commandName = matchstr(a:command, '^\w\+:\zs[^:]\+\ze:\?')
- let extrapart = strpart(a:command, strlen(commandType.':'.commandName.':'))
- else
- let commandType = ''
- let commandName = a:command
- let extrapart = ''
- endif
-
- let command = s:CommandSpec_{commandType}
- let command = substitute(command, '<+replace+>', commandName, 'g')
- let command = substitute(command, '<+extra+>', extrapart, 'g')
- return IMAP_PutTextWithMovement(command)
-endfunction
-" }}}
-" FilterPackageMenuLHS: filters the command description to provide a better menu item {{{
-" Description:
-function! <SID>FilterPackageMenuLHS(command)
- let commandType = matchstr(a:command, '^\w\+\ze:')
- if commandType != ''
- let commandName = strpart(a:command, strlen(commandType.':'))
- else
- let commandName = a:command
- endif
-
- return substitute(s:MenuLHS_{commandType}, '<+replace+>', commandName, 'g')
-endfunction " }}}
-
-if g:Tex_Menus
- exe 'amenu '.g:Tex_PackagesMenuLocation.'&UpdatePackage :call Tex_pack(expand("<cword>"))<cr>'
- exe 'amenu '.g:Tex_PackagesMenuLocation.'&UpdateAll :call Tex_pack_updateall(1)<cr>'
-
- call Tex_pack_supp_menu()
-endif
-
-augroup LatexSuite
- au LatexSuite User LatexSuiteFileType
- \ call Tex_Debug('packages.vim: Catching LatexSuiteFileType event', 'pack') |
- \ let s:save_clipboard = &clipboard |
- \ set clipboard= |
- \ call Tex_pack_updateall(0) |
- \ let &clipboard=s:save_clipboard
-augroup END
-
-" vim:fdm=marker:ts=4:sw=4:noet:ff=unix
diff --git a/ftplugin/latex-suite/projecttemplate.vim b/ftplugin/latex-suite/projecttemplate.vim
deleted file mode 100644
index 1ab4be02..00000000
--- a/ftplugin/latex-suite/projecttemplate.vim
+++ /dev/null
@@ -1,11 +0,0 @@
-" Project name
-" let g:projName = ''
-"
-" Project files
-" let g:projFiles = ''
-
-
-" Vim settings/maps/abbrs specific for this project
-
-" Modeline for this file
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:ft=vim
diff --git a/ftplugin/latex-suite/smartspace.vim b/ftplugin/latex-suite/smartspace.vim
deleted file mode 100644
index 07526d8d..00000000
--- a/ftplugin/latex-suite/smartspace.vim
+++ /dev/null
@@ -1,102 +0,0 @@
-"=============================================================================
-" File: smartspace.vim
-" Author: Carl Muller
-" Created: Fri Dec 06 12:00 AM 2002 PST
-"
-" Description:
-" Maps the <space> key in insert mode so that mathematical formulaes are
-" always kept on the same line. i.e, $$'s dont get broken across multiple
-" lines.
-"=============================================================================
-
-" Avoid reinclusion or if the user doesn't want us.
-if exists('b:done_smartspace')
- \ || (exists('g:Tex_SmartKeySpace') && !g:Tex_SmartKeySpace)
- finish
-endif
-let b:done_smartspace = 1
-
-" Smart space relies on taking over vim's insertion of carriage returns in
-" order to keep $$'s on the same line. The only way to get vim not to break
-" lines is to set tw=0.
-"
-" NOTE: setting tw != 0 will break smartspace
-" the user's 'tw' setting is still respected in the insert mode.
-" However, normal mode actions which rely on 'tw' such as gqap will be
-" broken because of the faulty 'tw' setting.
-let b:tw = &l:tw
-setlocal tw=0
-
-inoremap <buffer> <silent> <Space> <Space><Esc>:call <SID>TexFill(b:tw)<CR>a
-
-" Do not redefine the function.
-if exists('*s:TexFill')
- finish
-endif
-
-" TexFormatLine: format line retaining $$'s on the same line. {{{
-function! s:TexFill(width)
- if a:width != 0 && col(".") > a:width
- " For future use, record the current line and the number of the current column
- let current_line = getline(".")
- let current_column = col(".")
- exe "normal! a##\<Esc>"
- call <SID>TexFormatLine(a:width,current_line,current_column)
- exe "normal! ?##\<CR>2s\<Esc>"
- " Remove ## from the search history.
- call histdel("/", -1)|let @/=histget("/", -1)
- endif
-endfunction
-
-" }}}
-function! s:TexFormatLine(width, current_line, current_column) " {{{
- " get the first non-blank character.
- let first = matchstr(getline('.'), '\S')
- normal! $
- let length = col('.')
- let go = 1
- while length > a:width+2 && go
- let between = 0
- let string = strpart(getline('.'), 0, a:width)
- " Count the dollar signs
- let number_of_dollars = 0
- let evendollars = 1
- let counter = 0
- while counter <= a:width-1
- " Pay attention to '$$'.
- if string[counter] == '$' && string[counter-1] != '$'
- let evendollars = 1 - evendollars
- let number_of_dollars = number_of_dollars + 1
- endif
- let counter = counter + 1
- endwhile
- " Get ready to split the line.
- exe 'normal! ' . (a:width + 1) . '|'
- if evendollars
- " Then you are not between dollars.
- exe "normal! ?\\$\\+\\| \<CR>W"
- else
- " Then you are between dollars.
- normal! F$
- if col(".") == 1 || getline('.')[col(".")-1] != "$"
- let go = 0
- endif
- endif
- if first == '$' && number_of_dollars == 1
- let go = 0
- else
- exe "normal! i\<CR>\<Esc>$"
- " get the first non-blank character.
- let first = matchstr(getline('.'), '\S')
- endif
- let length = col(".")
- endwhile
- if go == 0 && strpart(a:current_line, 0, a:current_column) =~ '.*\$.*\$.*'
- exe "normal! ^f$a\<CR>\<Esc>"
- call <SID>TexFormatLine(a:width, a:current_line, a:current_column)
- endif
-endfunction
-
-" }}}
-
-" vim:fdm=marker:ts=4:sw=4:noet
diff --git a/ftplugin/latex-suite/templates.vim b/ftplugin/latex-suite/templates.vim
deleted file mode 100644
index ad1bbecd..00000000
--- a/ftplugin/latex-suite/templates.vim
+++ /dev/null
@@ -1,148 +0,0 @@
-"=============================================================================
-" File: templates.vim
-" Author: Gergely Kontra
-" (minor modifications by Srinath Avadhanula)
-" (plus other modifications by Mikolaj Machowski)
-" Version: 1.0
-" Created: Tue Apr 23 05:00 PM 2002 PST
-"
-" Description: functions for handling templates in latex-suite/templates
-" directory.
-"=============================================================================
-
-let s:path = fnameescape(expand("<sfile>:p:h"))
-
-" SetTemplateMenu: sets up the menu for templates {{{
-function! <SID>SetTemplateMenu()
- let flist = Tex_FindInRtp('', 'templates')
- let i = 1
- while 1
- let fname = Tex_Strntok(flist, ',', i)
- if fname == ''
- break
- endif
- exe "amenu ".g:Tex_TemplatesMenuLocation."&".i.":<Tab>".fname." ".
- \":call <SID>ReadTemplate('".fname."')<CR>"
- let i = i + 1
- endwhile
-endfunction
-
-if g:Tex_Menus
- call <SID>SetTemplateMenu()
-endif
-
-" }}}
-" ReadTemplate: reads in the template file from the template directory. {{{
-function! <SID>ReadTemplate(...)
- if a:0 > 0
- let filename = a:1
- else
- let filelist = Tex_FindInRtp('', 'templates')
- let filename =
- \ Tex_ChooseFromPrompt("Choose a template file:\n" .
- \ Tex_CreatePrompt(filelist, 2, ',') .
- \ "\nEnter number or name of file :",
- \ filelist, ',')
- endif
-
- let fname = Tex_FindInRtp(filename.'.tex', 'templates', ':p')
- call Tex_Debug("0read ".fname, 'templates')
-
- silent! exe "0read ".fname
-
- " The first line of the file contains the specifications of what the
- " placeholder characters and the other special characters are.
- let pattern = '\v(\S+)\t(\S+)\t(\S+)\t(\S+)'
-
- let s:phsTemp = substitute(getline(1), pattern, '\1', '')
- let s:pheTemp = substitute(getline(1), pattern, '\2', '')
- let s:exeTemp = substitute(getline(1), pattern, '\3', '')
- let s:comTemp = substitute(getline(1), pattern, '\4', '')
-
- 0 d_
-
- call s:ProcessTemplate()
- call Tex_pack_updateall(1)
-
- " Do not handle the placeholders here. Let IMAP_PutTextWithMovement do it
- " because it handles UTF-8 character substitutions etc. Therefore delete
- " the text into @a and paste it using IMAP_PutTextWithMovement().
- let _a = @a
- normal! ggVG"ax
-
- let _fo = &fo
- " Since IMAP_PutTextWithMovement simulates the key-presses, leading
- " indendatation can get duplicated in strange ways if ``fo`` is non-empty.
- " NOTE: the indentexpr thingie is still respected with an empty fo so that
- " environments etc are properly indented.
- set fo=
-
- call Tex_Debug("normal! i\<C-r>=IMAP_PutTextWithMovement(@a, '".s:phsTemp."', '".s:pheTemp."')\<CR>", 'templates')
- exec "normal! i\<C-r>=IMAP_PutTextWithMovement(@a, '".s:phsTemp."', '".s:pheTemp."')\<CR>"
-
- let &fo = _fo
- let @a = _a
-
- call Tex_Debug('phs = '.s:phsTemp.', phe = '.s:pheTemp.', exe = '.s:exeTemp.', com = '.s:comTemp, 'templates')
-
-endfunction
-
-" }}}
-" ProcessTemplate: processes the special characters in template file. {{{
-" This implementation follows from Gergely Kontra's
-" mu-template.vim
-" http://vim.sourceforge.net/scripts/script.php?script_id=222
-function! <SID>ProcessTemplate()
- if exists('s:phsTemp') && s:phsTemp != ''
-
- exec 'silent! %s/^'.s:comTemp.'\(\_.\{-}\)'.s:comTemp.'$/\=<SID>Compute(submatch(1))/ge'
- exec 'silent! %s/'.s:exeTemp.'\(.\{-}\)'.s:exeTemp.'/\=<SID>Exec(submatch(1))/ge'
- exec 'silent! g/'.s:comTemp.s:comTemp.'/d'
-
- " A function only puts one item into the search history...
- call Tex_CleanSearchHistory()
- endif
-endfunction
-
-function! <SID>Exec(what)
- exec 'return '.a:what
-endfunction
-
-" Back-Door to trojans !!!
-function! <SID>Compute(what)
- exe a:what
- if exists('s:comTemp')
- return s:comTemp.s:comTemp
- else
- return ''
- endif
-endfunction
-
-" }}}
-" Command definitions {{{
-if v:version >= 602
- com! -complete=custom,Tex_CompleteTemplateName -nargs=? TTemplate :call <SID>ReadTemplate(<f-args>)
- \| :startinsert
-
- " Tex_CompleteTemplateName: for completing names in TTemplate command {{{
- " Description: get list of template names with Tex_FindInRtp(), remove full path
- " and return list of names separated with newlines.
- "
- function! Tex_CompleteTemplateName(A,P,L)
- " Get name of macros from all runtimepath directories
- let tmplnames = Tex_FindInRtp('', 'templates')
- " Separate names with \n not ,
- let tmplnames = substitute(tmplnames,',','\n','g')
- return tmplnames
- endfunction
- " }}}
-
-else
- com! -nargs=? TTemplate :call <SID>ReadTemplate(<f-args>)
- \| :startinsert
-
-endif
-
-" }}}
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/texmenuconf.vim b/ftplugin/latex-suite/texmenuconf.vim
deleted file mode 100644
index d2c42f3c..00000000
--- a/ftplugin/latex-suite/texmenuconf.vim
+++ /dev/null
@@ -1,130 +0,0 @@
-"=============================================================================
-" File: texmenuconf.vim
-" Author: Srinath Avadhanula
-" Copyright: Vim charityware license. :help license
-" Description:
-"
-"=============================================================================
-
-" Paths, crucial for functions
-let s:path = fnameescape(expand("<sfile>:p:h"))
-let s:up_path = fnameescape(expand("<sfile>:p:h:h"))
-let s:mainmenuname = g:Tex_MenuPrefix.'S&uite.'
-let s:mapleader = exists('mapleader') ? mapleader : "\\"
-
-" This glboal variable is incremented each time a top-level latex-suite menu
-" is created. We should always use this variable for setting the locations of
-" newly created top-level menus.
-let g:Tex_NextMenuLocation = g:Tex_MainMenuLocation
-
-" The templates and macros menus are always nested within the main latex-suit
-" menu.
-let g:Tex_TemplatesMenuLocation = g:Tex_MainMenuLocation.'.20 '.s:mainmenuname.'&Templates.'
-let g:Tex_MacrosMenuLocation = g:Tex_MainMenuLocation.'.20 '.s:mainmenuname.'&Macros.'
-
-" The packages menu can either be a child of the main menu or be a top-level
-" menu by itself.
-if g:Tex_NestPackagesMenu
- let g:Tex_PackagesMenuLocation = (g:Tex_MainMenuLocation).'.10 '.s:mainmenuname.'&Packages.'
-else
- let g:Tex_PackagesMenuLocation = (g:Tex_NextMenuLocation).'.10 '.g:Tex_MenuPrefix.'Packages.'
- let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
-endif
-
-" Environments are always a top-level menu.
-let g:Tex_EnvMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix.'E&nvironments.'
-let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
-
-" Elements are always a top-level menu.
-" If we choose to nest elements, then the top-level &TeX-Elements menu
-" contains <Fonts / Counters / Dimensions>
-" otherwise, the Fonts, Counters and Dimensions menus become top-level menus.
-if g:Tex_NestElementMenus
- let g:Tex_ElementsMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix.'E&lements.'
-else
- let g:Tex_ElementsMenuLocation = (g:Tex_NextMenuLocation).'.20 '.g:Tex_MenuPrefix
-endif
-let g:Tex_NextMenuLocation = g:Tex_NextMenuLocation + 1
-
-
-" Set up the compiler/viewer menus. {{{
-"
-if has('gui_running') && g:Tex_Menus
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.25 '. s:mainmenuname.'-sepsuite0- :'
-
- " menus for compiling / viewing etc.
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.30 '.s:mainmenuname.'&Compile<tab>'.s:mapleader.'ll'.
- \' :silent! call Tex_RunLaTeX()<CR>'
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.40 '.s:mainmenuname.'&View<tab>'.s:mapleader.'lv'.
- \' :silent! call Tex_ViewLaTeX()<CR>'
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.50 '.s:mainmenuname.'&Search<tab>'.s:mapleader.'ls'.
- \' :silent! call ForwardSearchLaTeX()<CR>'
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.60 '.s:mainmenuname.'&Target\ Format<tab>:TTarget'.
- \' :call SetTeXTarget()<CR>'
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.70 '.s:mainmenuname.'&Compiler\ Target<tab>:TCTarget'.
- \' :call Tex_SetTeXCompilerTarget("Compile", "")<CR>'
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.80 '.s:mainmenuname.'&Viewer\ Target<tab>:TVTarget'.
- \' :call Tex_SetTeXCompilerTarget("View", "")<CR>'
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.90 '.s:mainmenuname.'Set\ &Ignore\ Level<tab>:TCLevel'.
- \' :TCLevel<CR>'
- exec 'imenu '.g:Tex_MainMenuLocation.'.100 '.s:mainmenuname.'C&omplete\ Ref/Cite'.
- \' <Plug>Tex_Completion'
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.110 '.s:mainmenuname.'-sepsuite1- :'
- " refreshing folds
- if g:Tex_Folding
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.120 '.s:mainmenuname.'&Refresh\ Folds<tab>'.s:mapleader.'rf'.
- \' :call MakeTexFolds(1)<CR>'
- exec 'anoremenu '.g:Tex_MainMenuLocation.'.130 '.s:mainmenuname.'-sepsuite2- :'
- endif
-endif
-
-" }}}
-
-" ==============================================================================
-" MenuConf: configure the menus as compact/extended, with/without math
-" ==============================================================================
-function! Tex_MenuConfigure(type, action) " {{{
- let menuloc = s:mainmenuname.'Configure\ Menu.'
- if a:type == 'math'
- if a:action == 1
- let g:Tex_MathMenus = 1
- exe 'source '.s:path.'/mathmacros.vim'
- exe 'amenu disable '.menuloc.'Add\ Math\ Menu'
- exe 'amenu enable '.menuloc.'Remove\ Math\ Menu'
- elseif a:action == 0
- call Tex_MathMenuRemove()
- exe 'amenu enable '.menuloc.'Add\ Math\ Menu'
- exe 'amenu disable '.menuloc.'Remove\ Math\ Menu'
- endif
- elseif a:type == 'elements'
- if a:action == 'expand'
- let g:Tex_ElementsMenuLocation = '80.20 '.g:Tex_MenuPrefix
- exe 'amenu disable '.menuloc.'Expand\ Elements'
- exe 'amenu enable '.menuloc.'Compress\ Elements'
- elseif a:action == 'nest'
- let g:Tex_ElementsMenuLocation = '80.20 '.g:Tex_MenuPrefix.'Elements.'
- exe 'amenu enable '.menuloc.'Expand\ Elements'
- exe 'amenu disable '.menuloc.'Compress\ Elements'
- endif
- exe 'source '.fnameescape(s:path.'/elementmacros.vim')
- elseif a:type == 'packages'
- if a:action == 1
- let g:Tex_PackagesMenu = 1
- exe 'source '.s:path.'/packages.vim'
- exe 'amenu disable '.menuloc.'Load\ Packages\ Menu'
- endif
- endif
-endfunction
-
-" }}}
-
-" configuration menu.
-if g:Tex_Menus
- exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Add\ Math\ Menu :call Tex_MenuConfigure("math", 1)<cr>'
- exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Remove\ Math\ Menu :call Tex_MenuConfigure("math", 0)<cr>'
- exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Expand\ Elements :call Tex_MenuConfigure("elements", "expand")<cr>'
- exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Compress\ Elements :call Tex_MenuConfigure("elements", "nest")<cr>'
- exe 'amenu '.g:Tex_MainMenuLocation.'.900 '.s:mainmenuname.'Configure\ Menu.Load\ Packages\ Menu :call Tex_MenuConfigure("packages", 1)<cr>'
-endif
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/texproject.vim b/ftplugin/latex-suite/texproject.vim
deleted file mode 100644
index fd1734bc..00000000
--- a/ftplugin/latex-suite/texproject.vim
+++ /dev/null
@@ -1,54 +0,0 @@
-"=============================================================================
-" File: texproject.vim
-" Author: Mikolaj Machowski
-" Version: 1.0
-" Created: Wen Apr 16 05:00 PM 2003
-"
-" Description: Handling tex projects.
-"=============================================================================
-
-let s:path = fnameescape(expand("<sfile>:p:h"))
-
-command! -nargs=0 TProjectEdit :call <SID>Tex_ProjectEdit()
-
-" Tex_ProjectEdit: Edit project file " {{{
-" Description: If project file exists (*.latexmain) open it in window created
-" with ':split', if no create ':new' window and read there
-" project template
-"
-function! s:Tex_ProjectEdit()
-
- let file = expand("%:p")
- let mainfname = Tex_GetMainFileName()
- if glob(mainfname.'.latexmain') != ''
- exec 'split '.fnameescape(mainfname.'.latexmain')
- else
- echohl WarningMsg
- echomsg "Master file not found."
- echomsg " :help latex-master-file"
- echomsg "for more information"
- echohl None
- endif
-
-endfunction " }}}
-" Tex_ProjectLoad: loads the .latexmain file {{{
-" Description: If a *.latexmain file exists, then sources it
-function! Tex_ProjectLoad()
- let s:origdir = fnameescape(getcwd())
- exe 'cd '.fnameescape(expand('%:p:h'))
-
- if glob(Tex_GetMainFileName(':p').'.latexmain') != ''
- call Tex_Debug("Tex_ProjectLoad: sourcing [".Tex_GetMainFileName().".latexmain]", "proj")
- exec 'source '.fnameescape(Tex_GetMainFileName().'.latexmain')
- endif
-
- exe 'cd '.s:origdir
-endfunction " }}}
-
-augroup LatexSuite
- au LatexSuite User LatexSuiteFileType
- \ call Tex_Debug("texproject.vim: catching LatexSuiteFileType event", "proj") |
- \ call Tex_ProjectLoad()
-augroup END
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latex-suite/texviewer.vim b/ftplugin/latex-suite/texviewer.vim
deleted file mode 100644
index 0b511dd1..00000000
--- a/ftplugin/latex-suite/texviewer.vim
+++ /dev/null
@@ -1,1070 +0,0 @@
-" ============================================================================
-" File: texviewer.vim
-" Author: Mikolaj Machowski
-" Created: Sun Jan 26 06:00 PM 2003
-" Description: make a viewer for various purposes: \cite{, \ref{
-" License: Vim Charityware License
-" Part of vim-latexSuite: http://vim-latex.sourceforge.net
-" ============================================================================
-" Tex_SetTexViewerMaps: sets maps for this ftplugin {{{
-function! Tex_SetTexViewerMaps()
- inoremap <silent> <Plug>Tex_Completion <Esc>:call Tex_Complete("default","text")<CR>
- if !hasmapto('<Plug>Tex_Completion', 'i')
- if has('gui_running')
- imap <buffer> <silent> <F9> <Plug>Tex_Completion
- else
- imap <buffer> <F9> <Plug>Tex_Completion
- endif
- endif
-endfunction
-
-augroup LatexSuite
- au LatexSuite User LatexSuiteFileType
- \ call Tex_Debug('texviewer.vim: Catching LatexSuiteFileType event', 'view') |
- \ call Tex_SetTexViewerMaps()
-augroup END
-
-command -nargs=1 TLook call Tex_Complete(<q-args>, 'tex')
-command -nargs=1 TLookAll call Tex_Complete(<q-args>, 'all')
-command -nargs=1 TLookBib call Tex_Complete(<q-args>, 'bib')
-
-" }}}
-
-" ==============================================================================
-" Main completion function
-" ==============================================================================
-" Tex_Complete: main function {{{
-" Description:
-function! Tex_Complete(what, where)
-
- " Get info about current window and position of cursor in file
- let s:winnum = winnr()
- let s:pos = Tex_GetPos()
-
- " Change to the directory of the file being edited before running all the
- " :grep commands. We will change back to the original directory after we
- " finish with the grep.
- let s:origdir = fnameescape(getcwd())
- exe 'cd '.fnameescape(expand('%:p:h'))
-
- unlet! s:type
- unlet! s:typeoption
-
- if Tex_GetVarValue('Tex_WriteBeforeCompletion') == 1
- wall
- endif
-
- if a:where == "text"
- " What to do after <F9> depending on context
- let s:curline = strpart(getline('.'), 0, col('.'))
- let s:prefix = matchstr(s:curline, '.*{\zs.\{-}\(}\|$\)')
- " a command is of the type
- " \psfig[option=value]{figure=}
- " Thus
- " s:curline = '\psfig[option=value]{figure='
- " (with possibly some junk before \psfig)
- " from which we need to extract
- " s:type = 'psfig'
- " s:typeoption = '[option=value]'
- let pattern = '.*\\\(\w\{-}\)\(\[.\{-}\]\)*{\([^ [\]\t]\+\)\?$'
- if s:curline =~ pattern
- let s:type = substitute(s:curline, pattern, '\1', 'e')
- let s:typeoption = substitute(s:curline, pattern, '\2', 'e')
- call Tex_Debug('Tex_Complete: s:type = '.s:type.', typeoption = '.s:typeoption, 'view')
- endif
-
- if exists("s:type") && s:type =~ 'ref'
- if Tex_GetVarValue('Tex_UseOutlineCompletion') == 1
- call Tex_Debug("Tex_Complete: using outline search method", "view")
- call Tex_StartOutlineCompletion()
-
- elseif Tex_GetVarValue('Tex_UseSimpleLabelSearch') == 1
- call Tex_Debug("Tex_Complete: searching for \\labels in all .tex files in the present directory", "view")
- call Tex_Debug("Tex_Complete: silent! grep! ".Tex_EscapeForGrep('\\label{'.s:prefix)." *.tex", 'view')
- call Tex_Grep('\\label{'.s:prefix, '*.tex')
- call <SID>Tex_SetupCWindow()
-
- elseif Tex_GetVarValue('Tex_ProjectSourceFiles') != ''
- call Tex_Debug('Tex_Complete: searching for \\labels in all Tex_ProjectSourceFiles', 'view')
- exec 'cd '.fnameescape(Tex_GetMainFileName(':p:h'))
- call Tex_Grep('\\label{'.s:prefix, Tex_GetVarValue('Tex_ProjectSourceFiles'))
- call <SID>Tex_SetupCWindow()
-
- else
- call Tex_Debug("Tex_Complete: calling Tex_GrepHelper", "view")
- silent! grep! ____HIGHLY_IMPROBABLE___ %
- call Tex_GrepHelper(s:prefix, 'label')
- call <SID>Tex_SetupCWindow()
- endif
-
- redraw!
-
- elseif exists("s:type") && s:type =~ 'cite'
-
- let s:prefix = matchstr(s:prefix, '\([^,]\+,\)*\zs\([^,]\+\)\ze$')
- call Tex_Debug(":Tex_Complete: using s:prefix = ".s:prefix, "view")
-
- if has('python') && Tex_GetVarValue('Tex_UsePython')
- \ && Tex_GetVarValue('Tex_UseCiteCompletionVer2') == 1
-
- exe 'cd '.s:origdir
- silent! call Tex_StartCiteCompletion()
-
- elseif Tex_GetVarValue('Tex_UseJabref') == 1
-
- exe 'cd '.s:origdir
- let g:Remote_WaitingForCite = 1
- let citation = input('Enter citation from jabref (<enter> to leave blank): ')
- let g:Remote_WaitingForCite = 0
- call Tex_CompleteWord(citation, strlen(s:prefix))
-
- else
- " grep! nothing %
- " does _not_ clear the search history contrary to what the
- " help-docs say. This was expected. So use something improbable.
- " TODO: Is there a way to clear the search-history w/o making a
- " useless, inefficient search?
- silent! grep! ____HIGHLY_IMPROBABLE___ %
- if g:Tex_RememberCiteSearch && exists('s:citeSearchHistory')
- call <SID>Tex_SetupCWindow(s:citeSearchHistory)
- else
- call Tex_GrepHelper(s:prefix, 'bib')
- redraw!
- call <SID>Tex_SetupCWindow()
- endif
- if g:Tex_RememberCiteSearch && &ft == 'qf'
- let _a = @a
- silent! normal! ggVG"ay
- let s:citeSearchHistory = @a
- let @a = _a
- endif
- endif
-
- elseif exists("s:type") && (s:type =~ 'includegraphics' || s:type == 'psfig')
- call Tex_SetupFileCompletion(
- \ '',
- \ '^\.\\|\.tex$\\|\.bib$\\|\.bbl$\\|\.zip$\\|\.gz$',
- \ 'noext',
- \ Tex_GetVarValue('Tex_ImageDir', '.'),
- \ Tex_GetVarValue('Tex_ImageDir', ''))
-
- elseif exists("s:type") && s:type == 'bibliography'
- call Tex_SetupFileCompletion(
- \ '\.b..$',
- \ '',
- \ 'noext',
- \ '.',
- \ '')
-
- elseif exists("s:type") && s:type =~ 'include\(only\)\='
- call Tex_SetupFileCompletion(
- \ '\.t..$',
- \ '',
- \ 'noext',
- \ '.',
- \ '')
-
- elseif exists("s:type") && s:type == 'input'
- call Tex_SetupFileCompletion(
- \ '',
- \ '',
- \ 'ext',
- \ '.',
- \ '')
-
- elseif exists('s:type') && exists("g:Tex_completion_".s:type)
- call <SID>Tex_CompleteRefCiteCustom('plugin_'.s:type)
-
- else
- let s:word = expand('<cword>')
- if s:word == ''
- call Tex_SwitchToInsertMode()
- return
- endif
- call Tex_Debug("silent! grep! ".Tex_EscapeForGrep('\<'.s:word.'\>')." *.tex", 'view')
- call Tex_Grep('\<'.s:word.'\>', '*.tex')
-
- call <SID>Tex_SetupCWindow()
- endif
-
- elseif a:where == 'tex'
- " Process :TLook command
- call Tex_Grep(a:what, "*.tex")
- call <SID>Tex_SetupCWindow()
-
- elseif a:where == 'bib'
- " Process :TLookBib command
- call Tex_Grep(a:what, "*.bib")
- call Tex_Grepadd(a:what, "*.bbl")
- call <SID>Tex_SetupCWindow()
-
- elseif a:where == 'all'
- " Process :TLookAll command
- call Tex_Grep(a:what, "*")
- call <SID>Tex_SetupCWindow()
- endif
-
-endfunction
-" }}}
-" Tex_CompleteWord: inserts a word at the chosen location {{{
-" Description: This function is meant to be called when the user press
-" ``<enter>`` in one of the [Error List] windows which shows the list of
-" matches. completeword is the rest of the word which needs to be inserted.
-" prefixlength characters are deleted before completeword is inserted
-function! Tex_CompleteWord(completeword, prefixlength)
- " Set cursor to window and position recorded when completion was invoked.
- exe s:winnum.' wincmd w'
- call Tex_SetPos(s:pos)
-
- " Complete word, check if add closing }
- if a:prefixlength > 0
- if a:prefixlength > 1
- exe 'normal! '.(a:prefixlength-1).'h'
- endif
- exe 'normal! '.a:prefixlength.'s'.a:completeword."\<Esc>"
- else
- exe 'normal! a'.a:completeword."\<Esc>"
- endif
-
- if getline('.')[col('.')-1] !~ '{' && getline('.')[col('.')] !~ '}'
- exe "normal! a}\<Esc>"
- endif
-
- " Return to Insert mode
- call Tex_SwitchToInsertMode()
-endfunction " }}}
-
-" ==============================================================================
-" File name completion helper functons
-" ==============================================================================
-" Tex_SetupFileCompletion: {{{
-" Description:
-function! Tex_SetupFileCompletion(accept, reject, ext, dir, root)
- call FB_SetVar('FB_AllowRegexp', a:accept)
- call FB_SetVar('FB_RejectRegexp', a:reject)
- call FB_SetVar('FB_CallBackFunction', 'Tex_CompleteFileName')
- call FB_SetVar('FB_CallBackFunctionArgs', '"'.a:ext.'", "'.a:root.'"')
-
- call FB_OpenFileBrowser(a:dir)
-endfunction " }}}
-" Tex_CompleteFileName: {{{
-" Description:
-function! Tex_CompleteFileName(filename, ext, root)
- let root = (a:root == '' ? Tex_GetMainFileName(':p:h') : a:root)
-
- call Tex_Debug('+Tex_CompleteFileName: getting filename '.a:filename, 'view')
-
- if a:ext == 'noext'
- let completeword = fnamemodify(a:filename, ':r')
- else
- let completeword = a:filename
- endif
- let completeword = Tex_RelPath(completeword, root)
-
- call Tex_Debug(":Tex_CompleteFileName: completing with ".completeword, "view")
- call Tex_CompleteWord(completeword, strlen(s:prefix))
-endfunction " }}}
-" Tex_Common: common part of strings {{{
-function! s:Tex_Common(path1, path2)
- " Assume the caller handles 'ignorecase'
- if a:path1 == a:path2
- return a:path1
- endif
- let n = 0
- while a:path1[n] == a:path2[n]
- let n = n+1
- endwhile
- return strpart(a:path1, 0, n)
-endfunction " }}}
-" Tex_NormalizePath: {{{
-" Description:
-function! Tex_NormalizePath(path)
- let retpath = a:path
- if has("win32") || has("win16") || has("dos32") || has("dos16")
- let retpath = substitute(retpath, '\\', '/', 'ge')
- endif
- if isdirectory(retpath) && retpath !~ '/$'
- let retpath = retpath.'/'
- endif
- return retpath
-endfunction " }}}
-" Tex_RelPath: ultimate file name {{{
-function! Tex_RelPath(explfilename,texfilename)
- let path1 = Tex_NormalizePath(a:explfilename)
- let path2 = Tex_NormalizePath(a:texfilename)
-
- let n = matchend(<SID>Tex_Common(path1, path2), '.*/')
- let path1 = strpart(path1, n)
- let path2 = strpart(path2, n)
- if path2 !~ '/'
- let subrelpath = ''
- else
- let subrelpath = substitute(path2, '[^/]\{-}/', '../', 'ge')
- let subrelpath = substitute(subrelpath, '[^/]*$', '', 'ge')
- endif
- let relpath = subrelpath.path1
- return escape(Tex_NormalizePath(relpath), ' ')
-endfunction " }}}
-
-" ==============================================================================
-" Helper functions for dealing with the 'quickfix' and 'preview' windows.
-" ==============================================================================
-" Tex_SetupCWindow: set maps and local settings for cwindow {{{
-" Description: Set local maps jkJKq<cr> for cwindow. Also size and basic
-" settings
-"
-function! s:Tex_SetupCWindow(...)
- call Tex_Debug('+Tex_SetupCWindow', 'view')
- cclose
- exe 'copen '. g:Tex_ViewerCwindowHeight
- " If called with an argument, it means we want to re-use some search
- " history from last time. Therefore, just paste it here and proceed.
- if a:0 == 1
- set modifiable
- % d _
- silent! 0put!=a:1
- $ d _
- endif
- setlocal nonumber
- setlocal nowrap
-
- let s:scrollOffVal = &scrolloff
- call <SID>Tex_SyncPreviewWindow()
-
- " If everything went well, then we should be situated in the quickfix
- " window. If there were problems, (no matches etc), then we will not be.
- " Therefore return.
- if &ft != 'qf'
- call Tex_Debug('not in quickfix window, quitting', 'view')
- return
- endif
-
- nnoremap <buffer> <silent> j j:call <SID>Tex_SyncPreviewWindow()<CR>
- nnoremap <buffer> <silent> k k:call <SID>Tex_SyncPreviewWindow()<CR>
- nnoremap <buffer> <silent> <up> <up>:call <SID>Tex_SyncPreviewWindow()<CR>
- nnoremap <buffer> <silent> <down> <down>:call <SID>Tex_SyncPreviewWindow()<CR>
-
- " Change behaviour of <cr> only for 'ref' and 'cite' context.
- if exists("s:type") && s:type =~ 'ref\|cite'
- exec 'nnoremap <buffer> <silent> <cr> '
- \ .':set scrolloff='.s:scrollOffVal.'<CR>'
- \ .':cd '.s:origdir.'<CR>'
- \ .':silent! call <SID>Tex_CompleteRefCiteCustom("'.s:type.'")<CR>'
-
- else
- " In other contexts jump to place described in cwindow and close small
- " windows
- exec 'nnoremap <buffer> <silent> <cr> '
- \ .':set scrolloff='.s:scrollOffVal.'<CR>'
- \ .':cd '.s:origdir.'<CR>'
- \ .':call <SID>Tex_GoToLocation()<cr>'
-
- endif
-
- " Scroll the preview window while in the quickfix window
- nnoremap <buffer> <silent> J :wincmd j<cr><c-e>:wincmd k<cr>
- nnoremap <buffer> <silent> K :wincmd j<cr><c-y>:wincmd k<cr>
-
- " Exit the quickfix window without doing anything.
- exe 'nnoremap <buffer> <silent> q '
- \ .':set scrolloff='.s:scrollOffVal.'<CR>'
- \ .':cd '.s:origdir.'<CR>'
- \ .':call Tex_CloseSmallWindows()<CR>'
-
-endfunction " }}}
-" Tex_CompleteRefCiteCustom: complete/insert name for current item {{{
-" Description: handle completion of items depending on current context
-"
-function! s:Tex_CompleteRefCiteCustom(type)
-
- let prefixlength=strlen(s:prefix)
- if a:type =~ 'cite'
- if getline('.') =~ '\\bibitem\s*{'
- let bibkey = matchstr(getline('.'), '\\bibitem\s*{\zs.\{-}\ze}')
- else
- let bibkey = matchstr(getline('.'), '\\bibitem\s*\[.\{-}\]\s*{\zs.\{-}\ze}')
- endif
- let completeword = bibkey
-
- elseif a:type =~ 'ref'
- let label = matchstr(getline('.'), '\\label{\zs.\{-}\ze}')
- let completeword = label
-
- elseif a:type =~ '^plugin_'
- let type = substitute(a:type, '^plugin_', '', '')
- let completeword = <SID>Tex_DoCompletion(type)
- " use old behaviour for plugins because of backward compatibility
- let prefixlength=0
-
- endif
-
- call Tex_CloseSmallWindows()
- call Tex_Debug(":Tex_CompleteRefCiteCustom: completing with ".completeword, "view")
- call Tex_CompleteWord(completeword, prefixlength)
-endfunction " }}}
-" Tex_SyncPreviewWindow: synchronize quickfix and preview window {{{
-" Description: Usually quickfix engine takes care about most of these things
-" but we discard it for better control of events.
-"
-function! s:Tex_SyncPreviewWindow()
- call Tex_Debug('+Tex_SyncPreviewWindow', 'view')
-
- let viewfile = matchstr(getline('.'), '^\f*\ze|\d')
- let viewline = matchstr(getline('.'), '|\zs\d\+\ze')
-
- " Hilight current line in cwindow
- " Normally hightlighting is done with quickfix engine but we use something
- " different and have to do it separately
- syntax clear
- runtime syntax/qf.vim
- exe 'syn match vTodo /\%'. line('.') .'l.*/'
- hi link vTodo Todo
-
- " Close preview window and open it again in new place
- pclose
- exe 'silent! bot pedit +'.viewline.' '.viewfile
-
- " Vanilla 6.1 has bug. This additional setting of cwindow height prevents
- " resizing of this window
- exe g:Tex_ViewerCwindowHeight.' wincmd _'
-
- " Handle situation if there is no item beginning with s:prefix.
- " Unfortunately, because we know it late we have to close everything and
- " return as in complete process
- if v:errmsg =~ 'E32\>'
- exe s:winnum.' wincmd w'
- call Tex_SetPos(s:pos)
- pclose!
- cclose
- if exists("s:prefix")
- echomsg 'No bibkey, label or word beginning with "'.s:prefix.'"'
- endif
- call Tex_SwitchToInsertMode()
- let v:errmsg = ''
- call Tex_Debug('Tex_SyncPreviewWindow: got error E32, no matches found, quitting', 'view')
- return 0
- endif
-
- " Move to preview window. Really is it under cwindow?
- wincmd j
-
- " Settings of preview window
- exe g:Tex_ViewerPreviewHeight.' wincmd _'
- setlocal nofoldenable
-
- if exists('s:type') && s:type =~ 'cite'
- " In cite context place bibkey at the top of preview window.
- setlocal scrolloff=0
- normal! zt
- else
- " In other contexts in the middle. Highlight this line?
- setlocal scrolloff=100
- normal! z.
- endif
-
- " Return to cwindow
- wincmd p
-
-endfunction " }}}
-" Tex_CloseSmallWindows: {{{
-" Description:
-"
-function! Tex_CloseSmallWindows()
- pclose!
- cclose
- exe s:winnum.' wincmd w'
- call Tex_SetPos(s:pos)
-endfunction " }}}
-" Tex_GoToLocation: Go to chosen location {{{
-" Description: Get number of current line and go to this number
-"
-function! s:Tex_GoToLocation()
- pclose!
- let errmsg = v:errmsg
- let v:errmsg = ''
- exe 'silent! cc ' . line('.')
- " If the current buffer is modified, then split
- if v:errmsg =~ '^E37:'
- split
- exe 'silent! cc ' . line('.')
- endif
- cclose
- let v:errmsg = errmsg
-endfunction " }}}
-
-" ==============================================================================
-" Functions for finding \\label's or \\bibitem's in the main file.
-" ==============================================================================
-" Tex_GrepHelper: grep main filename for \\bibitem's or \\label's {{{
-" Description:
-function! Tex_GrepHelper(prefix, what)
- let _path = &path
- let _suffixesadd = &suffixesadd
- let _hidden = &hidden
-
- let mainfname = Tex_GetMainFileName(':p')
- " If we are already editing the file, then use :split without any
- " arguments so it works even if the file is modified.
- " FIXME: If mainfname is being presently edited in another window and
- " is 'modified', then the second split statement will not work.
- " We will need to travel to that window and back.
- if mainfname == expand('%:p')
- split
- else
- exec 'split '.fnameescape(mainfname)
- endif
-
- let pos = Tex_GetPos()
- if a:what =~ 'bib'
- call Tex_ScanFileForCite(a:prefix)
- else
- call Tex_ScanFileForLabels(a:prefix)
- endif
- call Tex_SetPos(pos)
-
- q
- let &path = _path
- let &suffixesadd = _suffixesadd
-
-endfunction " }}}
-" Tex_ScanFileForCite: search for \bibitem's in .bib or .bbl or tex files {{{
-" Description:
-" Search for bibliographic entries in the presently edited file in the
-" following manner:
-" 1. First see if the file has a \bibliography command.
-" If YES:
-" 1. If a .bib file corresponding to the \bibliography command can be
-" found, then search for '@.*'.a:prefix inside it.
-" 2. Otherwise, if a .bbl file corresponding to the \bibliography command
-" can be found, then search for '\bibitem'.a:prefix inside it.
-" 2. Next see if the file has a \thebibliography environment
-" If YES:
-" 1. Search for '\bibitem'.a:prefix in this file.
-"
-" If neither a \bibliography or \begin{thebibliography} are found, then repeat
-" steps 1 and 2 for every file \input'ed into this file. Abort any searching
-" as soon as the first \bibliography or \begin{thebibliography} is found.
-function! Tex_ScanFileForCite(prefix)
- call Tex_Debug('+Tex_ScanFileForCite: searching for bibkeys in '.bufname('%').' (buffer #'.bufnr('%').')', 'view')
- let presBufNum = bufnr('%')
-
- let foundCiteFile = 0
- " First find out if this file has a \bibliography command in it. If so,
- " assume that this is the only file in the project which defines a
- " bibliography.
- if search('\\\(no\)\?bibliography{', 'w')
- call Tex_Debug('Tex_ScanFileForCite: found bibliography command in '.bufname('%'), 'view')
- " convey that we have found a bibliography command. we do not need to
- " proceed any further.
- let foundCiteFile = 1
-
- " extract the bibliography filenames from the command.
- let bibnames = matchstr(getline('.'), '\\\(no\)\?bibliography{\zs.\{-}\ze}')
- let bibnames = substitute(bibnames, '\s', '', 'g')
-
- call Tex_Debug('trying to search through ['.bibnames.']', 'view')
-
- let &path = '.,'.g:Tex_BIBINPUTS
-
- let i = 1
- while 1
- let bibname = Tex_Strntok(bibnames, ',', i)
- if bibname == ''
- break
- endif
-
- " first try to find if a .bib file exists. If so do not search in
- " the corresponding .bbl file. (because the .bbl file will most
- " probly be generated automatically from the .bib file with
- " bibtex).
-
- let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bib')
- if fname != ''
- call Tex_Debug('finding .bib file ['.bufname('%').']', 'view')
- exec 'split '.Tex_EscapeSpaces(fname)
- call Tex_Grepadd('@.*{'.a:prefix, "%")
- q
- else
- let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bbl')
- if fname != ''
- exec 'split '.Tex_EscapeSpaces(fname)
- call Tex_Debug('finding .bbl file ['.bufname('.').']', 'view')
- call Tex_Grepadd('\\bibitem{'.a:prefix, "%")
- q
- endif
- endif
-
- let i = i + 1
- endwhile
-
- if foundCiteFile
- return 1
- endif
- endif
-
- " If we have a thebibliography environment, then again assume that this is
- " the only file which defines the bib-keys. Aand convey this information
- " upwards by returning 1.
- if search('^\s*\\begin{thebibliography}', 'w')
- call Tex_Debug('got a thebibliography environment in '.bufname('%'), 'view')
-
- let foundCiteFile = 1
-
- split
- exec 'lcd'.fnameescape(expand('%:p:h'))
- call Tex_Debug("silent! grepadd! ".Tex_EscapeForGrep('\\bibitem{'.a:prefix)." %", 'view')
- call Tex_Grepadd('\\bibitem\s*[\[|{]'.a:prefix, "%")
- q
-
- return 1
- endif
-
- " If we have not found any \bibliography or \thebibliography environment
- " in this file, search for these environments in all the files which this
- " file includes.
-
- exec 0
- let wrap = 'w'
- while search('^\s*\\\(input\|include\)', wrap)
- let wrap = 'W'
-
- let filename = matchstr(getline('.'), '\\\(input\|include\){\zs.\{-}\ze}')
-
- let foundfile = Tex_FindFile(filename, '.,'.g:Tex_TEXINPUTS, '.tex')
- if foundfile != ''
- exec 'split '.Tex_EscapeSpaces(foundfile)
- call Tex_Debug('scanning recursively in ['.foundfile.']', 'view')
- let foundCiteFile = Tex_ScanFileForCite(a:prefix)
- q
- endif
-
- if foundCiteFile
- return 1
- endif
- endwhile
-
-
- return 0
-endfunction " }}}
-" Tex_ScanFileForLabels: greps present file and included files for \\label's {{{
-" Description:
-" Grep the presently edited file for \\label's. If the present file \include's
-" or \input's other files, then recursively scan those as well, i.e we support
-" arbitrary levels of \input'ed-ness.
-function! Tex_ScanFileForLabels(prefix)
- call Tex_Debug("+Tex_ScanFileForLabels: grepping in file [".bufname('%')."]", "view")
-
- exec 'lcd'.fnameescape(expand('%:p:h'))
- call Tex_Grepadd('\\label{'.a:prefix, "%")
-
- " Then recursively grep for all \include'd or \input'ed files.
- exec 0
- let wrap = 'w'
- while search('^\s*\\\(input\|include\)', wrap)
- let wrap = 'W'
-
- let filename = matchstr(getline('.'), '\\\(input\|include\){\zs.\{-}\ze}')
- let foundfile = Tex_FindFile(filename, '.,'.Tex_TEXINPUTS, '.tex')
- if foundfile != ''
- exec 'split '.Tex_EscapeSpaces(foundfile)
- call Tex_Debug('Tex_ScanFileForLabels: scanning recursively in ['.foundfile.']', 'view')
- call Tex_ScanFileForLabels(a:prefix)
- q
- endif
- endwhile
-
-endfunction " }}}
-
-" ==============================================================================
-" Functions for custom command completion
-" ==============================================================================
-" Tex_completion_{var}: similar variables can be set in package files {{{
-let g:Tex_completion_bibliographystyle = 'abbr,alpha,plain,unsrt'
-let g:Tex_completion_addtocontents = 'lof}{,lot}{,toc}{'
-let g:Tex_completion_addcontentsline = 'lof}{figure}{,lot}{table}{,toc}{chapter}{,toc}{part}{,'.
- \ 'toc}{section}{,toc}{subsection}{,toc}{paragraph}{,'.
- \ 'toc}{subparagraph}{'
-" }}}
-" Tex_PromptForCompletion: prompts for a completion {{{
-" Description:
-function! s:Tex_PromptForCompletion(texcommand,ask)
-
- let common_completion_prompt =
- \ Tex_CreatePrompt(g:Tex_completion_{a:texcommand}, 2, ',') . "\n" .
- \ 'Enter number or completion: '
-
- let inp = input(a:ask."\n".common_completion_prompt)
- if inp =~ '^[0-9]\+$'
- let completion = Tex_Strntok(g:Tex_completion_{a:texcommand}, ',', inp)
- else
- let completion = inp
- endif
-
- return completion
-endfunction " }}}
-" Tex_DoCompletion: fast insertion of completion {{{
-" Description:
-"
-function! s:Tex_DoCompletion(texcommand)
- let completion = <SID>Tex_PromptForCompletion(a:texcommand, 'Choose a completion to insert: ')
- if completion != ''
- return completion
- else
- return ''
- endif
-endfunction " }}}
-
-" ==============================================================================
-" Functions for presenting an outlined version for completion
-" ==============================================================================
-" Tex_StartOutlineCompletion: sets up an outline window {{{
-
-" get the place where this plugin resides for setting cpt and dict options.
-" these lines need to be outside the function.
-let s:path = expand('<sfile>:p:h')
-if has('python') && Tex_GetVarValue('Tex_UsePython')
- python import sys, re
- exec "python sys.path += [r'". s:path . "']"
- python import outline
-endif
-
-function! Tex_StartOutlineCompletion()
- let mainfname = Tex_GetMainFileName(':p')
-
- " open the buffer
- let _report = &report
- let _cmdheight=&cmdheight
- let _lazyredraw = &lazyredraw
- set report=1000
- set cmdheight=1
- set lazyredraw
-
- if has('python') && Tex_GetVarValue('Tex_UsePython')
- python retval = outline.main(vim.eval("Tex_GetMainFileName(':p')"), vim.eval("s:prefix"))
-
- " transfer variable from python to a local variable.
- python vim.command("""let retval = "%s" """ % re.sub(r'"|\\', r'\\\g<0>', retval))
- else
- let retval = system(shellescape(s:path.'/outline.py').' '.shellescape(mainfname).' '.shellescape(s:prefix))
- endif
-
- bot split __OUTLINE__
- exec Tex_GetVarValue('Tex_OutlineWindowHeight', 15).' wincmd _'
-
- setlocal modifiable
- setlocal noswapfile
- setlocal buftype=nowrite
- setlocal bufhidden=delete
- setlocal nowrap
- setlocal foldmethod=marker
- setlocal foldmarker=<<<,>>>
-
- " delete everything in it to the blackhole
- % d _
- 0put!=retval
-
- 0
-
- call Tex_SetupOutlineSyntax()
-
- exec 'nnoremap <buffer> <cr> '
- \ .':cd '.s:origdir.'<CR>'
- \ .':call Tex_FinishOutlineCompletion()<CR>'
- exec 'nnoremap <buffer> q '
- \ .':cd '.s:origdir.'<CR>'
- \ .':close<CR>'
- \ .':call Tex_SwitchToInsertMode()<CR>'
-
- " once the buffer is initialized, go back to the original settings.
- setlocal nomodifiable
- setlocal nomodified
- let &report = _report
- let &cmdheight = _cmdheight
- let &lazyredraw = _lazyredraw
-
-endfunction " }}}
-" Tex_SetupOutlineSyntax: sets up the syntax items for the outline {{{
-" Description:
-function! Tex_SetupOutlineSyntax()
- syn match outlineFileName "<\f\+>$" contained
- syn match foldMarkers "<<<\d$" contained
- syn match firstSemiColon '^:' contained
- syn match firstAngle '^>' contained
-
- syn match sectionNames '\(\d\.\)\+ .*' contains=foldMarkers
- syn match previousLine '^:.*' contains=firstSemiColon
- syn match labelLine '^>.*' contains=firstAngle,outlineFileName
-
- hi def link outlineFileName Ignore
- hi def link foldMarkers Ignore
- hi def link firstSemiColon Ignore
- hi def link firstAngle Ignore
-
- hi def link sectionNames Type
- hi def link previousLine Special
- hi def link labelLine Comment
-endfunction " }}}
-" Tex_FinishOutlineCompletion: inserts the reference back in the text {{{
-function! Tex_FinishOutlineCompletion()
- if getline('.') !~ '^[>:]'
- return
- endif
-
- if getline('.') =~ '^>'
- let ref_complete = matchstr(getline('.'), '^>\s\+\zs\S\+\ze')
- elseif getline('.') =~ '^:'
- let ref_complete = matchstr(getline(line('.')-1), '^>\s\+\zs\S\+\ze')
- endif
-
- close
- call Tex_CompleteWord(ref_complete, strlen(s:prefix))
-endfunction " }}}
-
-" ==============================================================================
-" Functions for presenting a nicer list of bibtex entries
-" ==============================================================================
-" Tex_FindBibFiles: finds all .bib files used by the main file {{{
-" Description:
-function! Tex_FindBibFiles()
- call Tex_Debug(":Tex_FindBibFiles: ", "view")
-
- let mainfname = Tex_GetMainFileName(':p')
- new
- exec 'e ' . fnameescape(mainfname)
-
- if search('\\\(no\)\?bibliography{', 'w')
-
- call Tex_Debug('Tex_FindBibFiles: found bibliography command in '.bufname('%'), 'view')
-
- " extract the bibliography filenames from the command.
- let bibnames = matchstr(getline('.'), '\\\(no\)\?bibliography{\zs.\{-}\ze}')
- let bibnames = substitute(bibnames, '\s', '', 'g')
-
- call Tex_Debug(':Tex_FindBibFiles: trying to search through ['.bibnames.']', 'view')
-
- let bibfiles = ''
- let i = 1
- while 1
- let bibname = Tex_Strntok(bibnames, ',', i)
- if bibname == ''
- break
- endif
- let fname = Tex_FindFile(bibname, '.,'.g:Tex_BIBINPUTS, '.bib')
- if fname != ''
- let bibfiles = bibfiles.fname."\n"
- endif
- let i = i + 1
- endwhile
-
- call Tex_Debug(":Tex_FindBibFiles: returning [".bibfiles."]", "view")
- q
- return bibfiles
-
- else
- q
- return ''
- endif
-
-endfunction " }}}
-" Tex_StartBibtexOutline: sets up an outline window {{{
-
-" get the place where this plugin resides for setting cpt and dict options.
-" these lines need to be outside the function.
-if has('python') && Tex_GetVarValue('Tex_UsePython')
- python import sys, re
- exec "python sys.path += [r'". s:path . "']"
- python import bibtools
-endif
-
-function! Tex_StartCiteCompletion()
- let bibfiles = Tex_FindBibFiles()
- if bibfiles !~ '\S'
- call Tex_SwitchToInsertMode()
- echohl WarningMsg
- echomsg 'No bibfiles found! Sorry'
- echohl None
- return
- endif
-
- bot split __OUTLINE__
- exec Tex_GetVarValue('Tex_OutlineWindowHeight', 15).' wincmd _'
-
- exec 'python Tex_BibFile = bibtools.BibFile("""'.bibfiles.'""")'
- exec 'python Tex_BibFile.addfilter("key ^'.s:prefix.'")'
- call Tex_DisplayBibList()
-
- nnoremap <buffer> <Plug>Tex_JumpToNextBibEntry :call search('^\S.*\]$', 'W')<CR>:call Tex_EchoBibShortcuts()<CR>z.
- nnoremap <buffer> <Plug>Tex_JumpToPrevBibEntry :call search('^\S.*\]$', 'bW')<CR>:call Tex_EchoBibShortcuts()<CR>z.
- nnoremap <buffer> <Plug>Tex_FilterBibEntries :call Tex_HandleBibShortcuts('filter')<CR>
- nnoremap <buffer> <Plug>Tex_RemoveBibFilters :call Tex_HandleBibShortcuts('remove_filters')<CR>
- nnoremap <buffer> <Plug>Tex_SortBibEntries :call Tex_HandleBibShortcuts('sort')<CR>
- nnoremap <buffer> <Plug>Tex_CompleteCiteEntry :call Tex_CompleteCiteEntry()<CR>
-
- nmap <buffer> <silent> n <Plug>Tex_JumpToNextBibEntry
- nmap <buffer> <silent> p <Plug>Tex_JumpToPrevBibEntry
- nmap <buffer> <silent> f <Plug>Tex_FilterBibEntries
- nmap <buffer> <silent> s <Plug>Tex_SortBibEntries
- nmap <buffer> <silent> a <Plug>Tex_RemoveBibFilters
- nmap <buffer> <silent> q :close<CR>:call Tex_SwitchToInsertMode()<CR>
- nmap <buffer> <silent> <CR> <Plug>Tex_CompleteCiteEntry
-
-endfunction " }}}
-" Tex_DisplayBibList: displays the list of bibtex entries {{{
-" Description:
-function! Tex_DisplayBibList()
- " open the buffer
- let _report = &report
- let _cmdheight=&cmdheight
- let _lazyredraw = &lazyredraw
- set report=1000
- set cmdheight=1
- set lazyredraw
-
- setlocal modifiable
- setlocal noswapfile
- setlocal buftype=nowrite
- setlocal bufhidden=delete
- setlocal nowrap
- setlocal foldmethod=marker
- setlocal foldmarker=<<<,>>>
-
-
- " delete everything in it to the blackhole
- % d _
-
- exec 'python Tex_CurBuf = vim.current.buffer'
- exec 'python Tex_CurBuf[:] = str(Tex_BibFile).splitlines()'
-
- call Tex_SetupBibSyntax()
-
- 0
- call Tex_EchoBibShortcuts()
-
- " once the buffer is initialized, go back to the original settings.
- setlocal nomodifiable
- setlocal nomodified
- let &report = _report
- let &cmdheight = _cmdheight
- let &lazyredraw = _lazyredraw
-
-endfunction " }}}
-" Tex_EchoBibShortcuts: echos all the shortcuts in the status line {{{
-" Description:
-function! Tex_EchoBibShortcuts()
- echomsg '(a) all (f) filter (s) sort (n) next (p) previous (q) quit (<CR>) choose'
-endfunction " }}}
-" Tex_SetupBibSyntax: sets up the syntax items for the outline {{{
-" Description:
-function! Tex_SetupBibSyntax()
- syn match BibTitleHeader "^TI" contained
- syn match BibAuthorHeader "^AU" contained
- syn match BibLocationHeader "^IN" contained
- syn match BibMiscHeader "^MI" contained
-
- syn match BibKeyLine '^\S.*\]$' contains=BibKey
- syn match BibTitle "^TI .*" contains=BibTitleHeader
- syn match BibAuthor "^AU .*" contains=BibAuthorHeader
- syn match BibLocation "^IN .*" contains=BibLocationHeader
- syn match BibMisc "^MI .*" contains=BibMiscHeader
-
- hi def link BibTitleHeader Ignore
- hi def link BibAuthorHeader Ignore
- hi def link BibLocationHeader Ignore
- hi def link BibMiscHeader Ignore
-
- hi def link BibKeyLine Visual
- hi def link BibTitle Type
- hi def link BibAuthor Special
- hi def link BibLocation Comment
- hi def link BibMisc Comment
-endfunction " }}}
-" Tex_HandleBibShortcuts: handles user keypresses {{{
-" Description:
-function! Tex_HandleBibShortcuts(command)
-
- if a:command == 'filter' || a:command == 'sort'
-
- let fieldprompt =
- \ "Field acronyms: (`:let g:Tex_EchoBibFields = 0` to avoid this message)\n" .
- \ " [t] title [a] author [b] booktitle \n" .
- \ " [j] journal [y] year [p] bibtype \n" .
- \ " (you can also enter the complete field name) \n"
-
- let fieldprompt = Tex_GetVarValue('Tex_BibFieldPrompt', fieldprompt)
-
- if Tex_GetVarValue('Tex_EchoBibFields', 1) == 1
- echo fieldprompt
- endif
-
- let inp = input('Enter '.a:command.' criterion [field<space>value]: ')
- if inp !~ '\v^\S+\s+\S.*'
- echohl WarningMsg
- echomsg 'Invalid filter specification. Use "field<space>value"'
- echohl None
- return
- endif
-
- if inp != ''
- " If the field is specified as a single character, then replace
- " it with the corresponding 'full form'.
- if inp =~ '^[a-z]\>'
- if Tex_GetVarValue('Tex_BibAcronym_'.inp[0]) != ''
- let inp = substitute(inp, '.', Tex_GetVarValue('Tex_BibAcronym_'.inp[0]), '')
- elseif fieldprompt =~ '\['.inp[0].'\]'
- let full = matchstr(fieldprompt, '\['.inp[0].'\] \zs\w\+\ze')
- let inp = substitute(inp, '.', full, '')
- endif
- endif
- call Tex_Debug(":Tex_HandleBibShortcuts: using inp = [".inp."]", "view")
- if a:command == 'filter'
- exec 'python Tex_BibFile.addfilter("'.inp.'")'
- elseif a:command == 'sort'
- exec "python Tex_BibFile.addsortfield(\"".inp."\")"
- exec 'python Tex_BibFile.sort()'
- endif
- silent! call Tex_DisplayBibList()
- endif
-
- elseif a:command == 'remove_filters'
-
- exec 'python Tex_BibFile.rmfilters()'
- exec 'python Tex_BibFile.addfilter("key ^'.s:prefix.'")'
- call Tex_DisplayBibList()
-
- endif
-
-endfunction " }}}
-" Tex_CompleteCiteEntry: completes cite entry {{{
-" Description:
-function! Tex_CompleteCiteEntry()
- normal! 0
- call search('\[\S\+\]$', 'W')
- if getline('.') !~ '\[\S\+\]$'
- call search('\[\S\+\]$', 'bW')
- endif
-
- if getline('.') !~ '\[\S\+\]$'
- return
- endif
-
- let ref = matchstr(getline('.'), '\[\zs\S\+\ze\]$')
- close
- call Tex_Debug(":Tex_CompleteCiteEntry: completing with ".ref, "view")
- call Tex_CompleteWord(ref, strlen(s:prefix))
-endfunction " }}}
-
-" Tex_SwitchToInsertMode: Switch to insert mode {{{
-" Description: This is usually called when completion is finished
-function! Tex_SwitchToInsertMode()
- call Tex_Debug(":Tex_SwitchToInsertMode: ", "view")
- if col('.') == strlen(getline('.'))
- startinsert!
- else
- normal! l
- startinsert
- endif
-endfunction " }}}
-
-com! -nargs=0 TClearCiteHist unlet! s:citeSearchHistory
-
-" vim:fdm=marker:nowrap:noet:ff=unix:ts=4:sw=4
diff --git a/ftplugin/latex-suite/version.vim b/ftplugin/latex-suite/version.vim
deleted file mode 100644
index 3da5ef42..00000000
--- a/ftplugin/latex-suite/version.vim
+++ /dev/null
@@ -1,30 +0,0 @@
-" Tex_Version: returns a string which gives the current version number of latex-suite
-" Description:
-" Each time a bug fix/addition is done in any source file in latex-suite,
-" not just this file, the number below has to be incremented by the author.
-" This will ensure that there is a single 'global' version number for all of
-" latex-suite.
-"
-" If a change is done in the doc/ directory, i.e an addition/change in the
-" documentation, then this number should NOT be incremented.
-"
-" Latex-suite will follow a 3-tier system of versioning just as Vim. A
-" version number will be of the form:
-"
-" X.Y.ZZ
-"
-" 'X' will only be incremented for a major over-haul or feature addition.
-" 'Y' will be incremented for significant changes which do not qualify
-" as major.
-" 'ZZ' will be incremented for bug-fixes and very trivial additions such
-" as adding an option etc. Once ZZ reaches 50, then Y will be
-" incremented and ZZ will be reset to 01. Each time we have a
-" version number of the form X.Y.01, then we'll make a release on
-" vim.sf.net and also create a cvs tag at that point. We'll try to
-" "stabilize" that version by releasing a few pre-releases and then
-" keep that as a stable point.
-function! Tex_Version()
- return "Latex-Suite: version 1.8.23"
-endfunction
-
-com! -nargs=0 TVersion echo Tex_Version()
diff --git a/ftplugin/latex-suite/wizardfuncs.vim b/ftplugin/latex-suite/wizardfuncs.vim
deleted file mode 100644
index 4a290698..00000000
--- a/ftplugin/latex-suite/wizardfuncs.vim
+++ /dev/null
@@ -1,376 +0,0 @@
-" File: wizardfuncs.vim
-" Author: Mikolaj Machowski <mikmach@wp.pl>
-" Description:
-"
-" Installation:
-" History: pluginized by Srinath Avadhanula
-"=============================================================================
-
-if exists('s:doneOnce')
- finish
-endif
-let s:doneOnce = 1
-
-let s:mapleader = exists('mapleader') ? mapleader : "\\"
-" ==============================================================================
-" Specialized functions for handling sections from command line
-" ==============================================================================
-
-com! -nargs=? TSection call Tex_section(<f-args>)
-com! -nargs=? TSectionAdvanced call Tex_section_adv(<f-args>)
-
-" Tex_VisSecAdv: handles visual selection for sections {{{
-function! Tex_VisSecAdv(section)
- let shorttitle = input("Short title? ")
- let toc = input("Include in table of contents [y]/n ? ")
- let sstructure = "\\".a:section
- if ( toc == "" || toc == "y" )
- let toc = ""
- else
- let toc = "*"
- endif
- if shorttitle != ""
- let shorttitle = '['.shorttitle.']'
- endif
- exe "normal `>a}\<cr>\<esc>`<i".sstructure.toc.shorttitle."{"
-endfunction
-
-" }}}
-" Tex_InsSecAdv: section wizard in insert mode {{{
-function! Tex_InsSecAdv(structure)
- let ttitle = input("Title? ")
- let shorttitle = input("Short title? ")
- let toc = input("Include in table of contents [y]/n ? ")
- "Structure
- let sstructure = "\\".a:structure
- "TOC
- if ( toc == "" || toc == "y" )
- let toc = ""
- else
- let toc = "*"
- endif
- "Shorttitle
- if shorttitle != ""
- let shorttitle = '['.shorttitle.']'
- endif
- "Title
- let ttitle = '{'.ttitle.'}'
- "Happy end?
- return sstructure.toc.shorttitle.ttitle
-endfunction
-
-" }}}
-function! Tex_section(...) "{{{
- silent let pos = Tex_GetPos()
- silent let last_section_value = s:Tex_section_detection()
- if a:0 == 0
- silent let last_section_name = s:Tex_section_name(last_section_value)
- silent call s:Tex_section_call(last_section_name)
- elseif a:1 =~ "[+=\-]"
- silent let sec_arg = a:1
- silent let curr_section_value = s:Tex_section_curr_rel_value(sec_arg, last_section_value)
- silent let curr_section_name = s:Tex_section_name(curr_section_value)
- silent call s:Tex_section_call(curr_section_name)
- elseif a:1 == "?"
- echo s:last_section_line
- else
- silent let curr_section_value = s:Tex_section_curr_value(a:1)
- silent let curr_section_name = s:Tex_section_name(curr_section_value)
- silent call s:Tex_section_call(curr_section_name)
- endif
- silent call Tex_SetPos(pos)
-endfunction "}}}
-function! Tex_section_adv(...) "{{{
- let pos = Tex_GetPos()
- silent let last_section_value = s:Tex_section_detection()
- if a:0 == 0
- silent let last_section_name = s:Tex_section_name(last_section_value)
- let section = Tex_InsSecAdv(last_section_name)
- elseif a:1 =~ "[+=\-]"
- silent let sec_arg = a:1
- silent let curr_section_value = s:Tex_section_curr_rel_value(sec_arg, last_section_value)
- silent let curr_section_name = s:Tex_section_name(curr_section_value)
- let section = Tex_InsSecAdv(curr_section_name)
- else
- silent let curr_section_value = s:Tex_section_curr_value(a:1)
- silent let curr_section_name = s:Tex_section_name(curr_section_value)
- silent call s:Tex_section_call(curr_section_name)
- let section = Tex_InsSecAdv(curr_section_name)
- endif
- exe "normal i".section
- call Tex_SetPos(pos)
-endfunction "}}}
-function! s:Tex_section_detection() "{{{
- let pos = Tex_GetPos()
- let last_section1 = search("\\\\\subparagraph\\|\\\\paragraph\\|\\\\subsubsection\\|\\\\subsection\\|\\\\section\\|\\\\chapter\\|\\\part\)", "b")
- call Tex_SetPos(pos)
- let last_section2 = search("\\\\\part\\|\\\\chapter\\|\\\\section\\|\\\\subsection\\|\\\\subsubsection\\|\\\\paragraph\\|\\\subparagraph\)", "b")
- if last_section1 > last_section2
- let last_section = last_section1
- else
- let last_section = last_section2
- endif
- if last_section != 0
- exe last_section
- if getline(".") =~ "\\\\part"
- let last_section_value = 0
- elseif getline(".") =~ "\\\\chapter"
- let last_section_value = 1
- elseif getline(".") =~ "\\\\section"
- let last_section_value = 2
- elseif getline(".") =~ "\\\\subsection"
- let last_section_value = 3
- elseif getline(".") =~ "\\\\subsubsection"
- let last_section_value = 4
- elseif getline(".") =~ "\\\\paragraph"
- let last_section_value = 5
- elseif getline(".") =~ "\\\\subparagraph"
- let last_section_value = 6
- endif
- let s:last_section_line = getline(".")
- else
- let last_section_value = 0
- endif
- call Tex_SetPos(pos)
- return last_section_value
-endfunction "}}}
-function! s:Tex_section_curr_value(sec_arg) "{{{
- if a:sec_arg == "pa" || a:sec_arg == "0" || a:sec_arg == "part"
- let curr_section_value = 0
- elseif a:sec_arg == "ch" || a:sec_arg == "1" || a:sec_arg == "chapter"
- let curr_section_value = 1
- elseif a:sec_arg == "se" || a:sec_arg == "2" || a:sec_arg == "section"
- let curr_section_value = 2
- elseif a:sec_arg == "ss" || a:sec_arg == "3" || a:sec_arg == "subsection"
- let curr_section_value = 3
- elseif a:sec_arg == "s2" || a:sec_arg == "4" || a:sec_arg == "subsubsection"
- let curr_section_value = 4
- elseif a:sec_arg == "pr" || a:sec_arg == "5" || a:sec_arg == "paragraph"
- let curr_section_value = 5
- elseif a:sec_arg == "sp" || a:sec_arg == "6" || a:sec_arg == "subparagraph"
- let curr_section_value = 6
- endif
- return curr_section_value
-endfunction "}}}
-function! s:Tex_section_curr_rel_value(sec_arg, last_section_value) "{{{
- let last_section_value = a:last_section_value
- if a:sec_arg == "+" || a:sec_arg == "+1"
- let curr_section_value = last_section_value + 1
- elseif a:sec_arg == "++" || a:sec_arg == "+2"
- let curr_section_value = last_section_value + 2
- elseif a:sec_arg == "-" || a:sec_arg == "-1"
- let curr_section_value = last_section_value - 1
- elseif a:sec_arg == "--" || a:sec_arg == "-2"
- let curr_section_value = last_section_value - 2
- elseif a:sec_arg == "="
- let curr_section_value = last_section_value
- else
- exe "let curr_section_value = last_section_value".a:sec_arg
- endif
- if curr_section_value < 0
- let curr_section_value = 0
- elseif curr_section_value > 6
- let curr_section_value = 6
- endif
- return curr_section_value
-endfunction "}}}
-function! s:Tex_section_name(section_value) "{{{
- if a:section_value == 0
- let section_name = "part"
- elseif a:section_value == 1
- let section_name = "chapter"
- elseif a:section_value == 2
- let section_name = "section"
- elseif a:section_value == 3
- let section_name = "subsection"
- elseif a:section_value == 4
- let section_name = "subsubsection"
- elseif a:section_value == 5
- let section_name = "paragraph"
- elseif a:section_value == 6
- let section_name = "subparagraph"
- endif
- return section_name
-endfunction "}}}
-function! s:Tex_section_call(section_name) "{{{
- exe "normal! i\\".a:section_name."{<++>}<++>\<Esc>0\<C-j>"
-" let ret_section = "\\".a:section_name."{<++>}<++>"
-" exe "normal! i\<C-r>=IMAP_PutTextWithMovement(ret_section)\<CR>"
-" normal f}i
-endfunction "}}}
-
-" ==============================================================================
-" Add looking help into latexhelp.txt
-" ==============================================================================
-
-inoremap <silent> <Plug>Tex_Help <C-o>:call <SID>TexHelp()<CR>
-nnoremap <silent> <Plug>Tex_Help :call <SID>TexHelp()<CR>
-command! -nargs=0 THelp call <SID>TexHelp()
-call Tex_MakeMap('<F1>', '<Plug>Tex_Help', 'i', '')
-call Tex_MakeMap('<F1>', '<Plug>Tex_Help', 'n', '')
-
-" TexHelp: Cursor being on LaTeX item check if exists help tag about it " {{{
-function! s:TexHelp()
- let syntax_item = synIDattr(synID(line('.'),col('.')-1,0),"name")
- if syntax_item =~ '^tex'
- setlocal isk+=\
- let curword = expand('<cword>')
- setlocal isk-=\
- let v:errmsg = ''
- if curword =~ "^\\" || syntax_item == 'texSectionName'
- exe 'silent! help '.curword
- if v:errmsg =~ '^E149:'
- echohl ErrorMsg
- exe "echomsg 'Sorry, no help for LaTeX: ".curword."'"
- echohl None
- let v:errmsg = ''
- endif
- else
- help
- endif
- else
- help
- endif
-endfunction " }}}
-
-" ==============================================================================
-" Tables of shortcuts
-" ==============================================================================
-"
-command! -nargs=? Tshortcuts call Tex_shortcuts(<f-args>)<CR>
-
-" Tex_shortcuts: Show shortcuts in terminal after : command {{{
-function! Tex_shortcuts(...)
- if a:0 == 0
- let shorts = input(" Allowed arguments are:"
- \."\n g General"
- \."\n e Environments"
- \."\n f Fonts"
- \."\n s Sections"
- \."\n m Math"
- \."\n a All"
- \."\n Enter your choice (<Enter> quits) : ")
- call Tex_shortcuts(shorts)
- elseif a:1 == 'g'
- echo g:generalshortcuts
- elseif a:1 == 'e'
- echo g:environmentshortcuts
- elseif a:1 == 'f'
- echo g:fontshortcuts
- elseif a:1 == 's'
- echo g:sectionshortcuts
- elseif a:1 == 'm'
- echo g:mathshortcuts
- elseif a:1 == 'a'
- echo g:generalshortcuts
- echo g:environmentshortcuts
- echo g:fontshortcuts
- echo g:sectionshortcuts
- echo g:mathshortcuts
- endif
-
-endfunction
-" }}}
-
-" General shortcuts {{{
-let g:generalshortcuts = ''
-\."\n General shortcuts"
-\."\n <mapleader> is a value of <Leader>"
-\."\n ".s:mapleader.'ll compile whole document'
-\."\n ".s:mapleader.'lv view compiled document'
-\."\n ".s:mapleader.'ls forward searching (if possible)'
-\."\n ".s:mapleader.'rf refresh folds'
-" }}}
-" Environment shortcuts {{{
-let g:environmentshortcuts = ''
-\."\n Environment shortcuts"
-\."\n <mapleader> is a value of g:Tex_Leader2"
-\."\n I v&V I v&V"
-\."\n ELI ".g:Tex_Leader2."li list EQN ".g:Tex_Leader2."qn quotation"
-\."\n EDE ".g:Tex_Leader2."de description ESP ".g:Tex_Leader2."sb sloppypar"
-\."\n EEN ".g:Tex_Leader2."en enumerate ETI ".g:Tex_Leader2."ti theindex"
-\."\n EIT ".g:Tex_Leader2."it itemize ETP ".g:Tex_Leader2."tp titlepage"
-\."\n ETI ".g:Tex_Leader2."ti theindex EVM ".g:Tex_Leader2."vm verbatim"
-\."\n ETL ".g:Tex_Leader2."tl trivlist EVE ".g:Tex_Leader2."ve verse"
-\."\n ETE ".g:Tex_Leader2."te table ETB ".g:Tex_Leader2."tb thebibliography"
-\."\n ETG ".g:Tex_Leader2."tg tabbing ENO ".g:Tex_Leader2."no note"
-\."\n ETR ".g:Tex_Leader2."tr tabular EOV ".g:Tex_Leader2."ov overlay"
-\."\n EAR ".g:Tex_Leader2."ar array ESL ".g:Tex_Leader2."sl slide"
-\."\n EDM ".g:Tex_Leader2."dm displaymath EAB ".g:Tex_Leader2."ab abstract"
-\."\n EEA ".g:Tex_Leader2."ea eqnarray EAP ".g:Tex_Leader2."ap appendix"
-\."\n EEQ ".g:Tex_Leader2."eq equation ECE ".g:Tex_Leader2."ce center"
-\."\n EDO ".g:Tex_Leader2."do document EFI ".g:Tex_Leader2."fi figure"
-\."\n EFC ".g:Tex_Leader2."fc filecontents ELR ".g:Tex_Leader2."lr lrbox"
-\."\n EFL ".g:Tex_Leader2."fl flushleft EMP ".g:Tex_Leader2."mp minipage"
-\."\n EFR ".g:Tex_Leader2."fr flushright EPI ".g:Tex_Leader2."pi picture"
-\."\n EMA ".g:Tex_Leader2."ma math EQE ".g:Tex_Leader2."qe quote"
-" }}}
-" Font shortcuts {{{
-let g:fontshortcuts = ''
-\."\n Font shortcuts"
-\."\n <mapleader> is a value of g:Tex_Leader"
-\."\n Shortcuts Effects"
-\."\n I v&V I&v V"
-\."\n FBF ".g:Tex_Leader."bf \\textbf{} {\\bfseries }"
-\."\n FMD ".g:Tex_Leader."md \\textmd{} {\\mdseries }"
-\."\n"
-\."\n FTT ".g:Tex_Leader."tt \\texttt{} {\\ttfamily }"
-\."\n FSF ".g:Tex_Leader."sf \\textsf{} {\\sffamily }"
-\."\n FRM ".g:Tex_Leader."rm \\textrm{} {\\rmfamily }"
-\."\n"
-\."\n FUP ".g:Tex_Leader."up \\textup{} {\\upshape }"
-\."\n FSL ".g:Tex_Leader."sl \\textsl{} {\\slshape }"
-\."\n FSC ".g:Tex_Leader."sc \\textsc{} {\\scshape }"
-\."\n FIT ".g:Tex_Leader."it \\textit{} {\\itshape }"
-" }}}
-" Section shortcuts {{{
-let g:sectionshortcuts = ''
-\."\n Section shortcuts"
-\."\n <mapleader> is a value of g:Tex_Leader2"
-\."\n I v&V"
-\."\n SPA ".g:Tex_Leader2."pa part"
-\."\n SCH ".g:Tex_Leader2."ch chapter"
-\."\n SSE ".g:Tex_Leader2."se section"
-\."\n SSS ".g:Tex_Leader2."ss subsection"
-\."\n SS2 ".g:Tex_Leader2."s2 subsubsection"
-\."\n SPG ".g:Tex_Leader2."pg paragraph"
-\."\n SSP ".g:Tex_Leader2."sp subparagraph"
-" }}}
-" Math shortcuts {{{
-let g:mathshortcuts = ''
-\."\n Math shortcuts - Insert mode"
-\."\n `a \\alpha `b \\beta"
-\."\n `g \\gamma `d \\delta"
-\."\n `e \\varepsilon `z \\zeta"
-\."\n `h \\eta `q \\theta"
-\."\n `i \\iota `k \\kappa"
-\."\n `l \\lambda `m \\mu"
-\."\n `n \\nu `x \\xi"
-\."\n `p \\pi `r \\rho"
-\."\n `s \\sigma `v \\varsigma"
-\."\n `t \\tau `u \\upsilon"
-\."\n `f \\varphi `c \\chi"
-\."\n `y \\psi `w \\omega"
-\."\n `A \\Alpha `B \\Beta"
-\."\n `G \\Gamma `D \\Delta"
-\."\n `E \\Epsilon `Z \\mathrm{Z}"
-\."\n `H \\Eta `K \\Kappa"
-\."\n `L \\Lambda `M \\Mu"
-\."\n `N \\Nu `X \\Xi"
-\."\n `P \\Pi `R \\Rho"
-\."\n `S \\Sigma `T \\Tau"
-\."\n `U \\Upsilon `C \\Chi"
-\."\n `Y \\Psi `W \\Omega"
-\."\n `( \\subset `) \\Subset"
-\."\n `= \\equiv =~ \\approx"
-\."\n `- \\bigcap `+ \\bigcup"
-\."\n `. \\cdot `* \\times"
-\."\n `\\ \\setminus `@ \\circ"
-\."\n `& \\wedge `, \\nonumber"
-\."\n `8 \\infty `_ \\bar{}"
-\."\n `: \\ddot{} `; \\dot{}"
-\."\n `^ \\hat{} `~ \\tilde{}"
-\."\n `6 \\partial"
-" }}}
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/latextoc.vim b/ftplugin/latextoc.vim
new file mode 100644
index 00000000..f753cea8
--- /dev/null
+++ b/ftplugin/latextoc.vim
@@ -0,0 +1,166 @@
+" {{{1 Settings
+setlocal buftype=nofile
+setlocal bufhidden=wipe
+setlocal nobuflisted
+setlocal noswapfile
+setlocal nowrap
+setlocal nospell
+setlocal cursorline
+setlocal nonumber
+setlocal nolist
+setlocal tabstop=8
+setlocal cole=0
+setlocal cocu=nvic
+if g:LatexBox_fold_toc
+ setlocal foldmethod=expr
+ setlocal foldexpr=TOCFoldLevel(v:lnum)
+ setlocal foldtext=TOCFoldText()
+endif
+" }}}1
+
+" {{{1 Functions
+" {{{2 TOCClose
+function! s:TOCClose()
+ if g:LatexBox_split_resize
+ silent exe "set columns-=" . g:LatexBox_split_width
+ endif
+ bwipeout
+endfunction
+
+" {{{2 TOCToggleNumbers
+function! s:TOCToggleNumbers()
+ if b:toc_numbers
+ setlocal conceallevel=3
+ let b:toc_numbers = 0
+ else
+ setlocal conceallevel=0
+ let b:toc_numbers = 1
+ endif
+endfunction
+
+" {{{2 EscapeTitle
+function! s:EscapeTitle(titlestr)
+ " Credit goes to Marcin Szamotulski for the following fix. It allows to
+ " match through commands added by TeX.
+ let titlestr = substitute(a:titlestr, '\\\w*\>\s*\%({[^}]*}\)\?', '.*', 'g')
+
+ let titlestr = escape(titlestr, '\')
+ let titlestr = substitute(titlestr, ' ', '\\_\\s\\+', 'g')
+
+ return titlestr
+endfunction
+
+" {{{2 TOCActivate
+function! s:TOCActivate(close)
+ let n = getpos('.')[1] - 1
+
+ if n >= len(b:toc)
+ return
+ endif
+
+ let entry = b:toc[n]
+
+ let titlestr = s:EscapeTitle(entry['text'])
+
+ " Search for duplicates
+ "
+ let i=0
+ let entry_hash = entry['level'].titlestr
+ let duplicates = 0
+ while i<n
+ let i_entry = b:toc[n]
+ let i_hash = b:toc[i]['level'].s:EscapeTitle(b:toc[i]['text'])
+ if i_hash == entry_hash
+ let duplicates += 1
+ endif
+ let i += 1
+ endwhile
+ let toc_bnr = bufnr('%')
+ let toc_wnr = winnr()
+
+ execute b:calling_win . 'wincmd w'
+
+ let bnr = bufnr(entry['file'])
+ if bnr == -1
+ execute 'badd ' . entry['file']
+ let bnr = bufnr(entry['file'])
+ endif
+
+ execute 'buffer! ' . bnr
+
+ " skip duplicates
+ while duplicates > 0
+ if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
+ let duplicates -= 1
+ endif
+ endwhile
+
+ if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
+ normal zv
+ endif
+
+ if a:close
+ if g:LatexBox_split_resize
+ silent exe "set columns-=" . g:LatexBox_split_width
+ endif
+ execute 'bwipeout ' . toc_bnr
+ else
+ execute toc_wnr . 'wincmd w'
+ endif
+endfunction
+
+" {{{2 TOCFoldLevel
+function! TOCFoldLevel(lnum)
+ let line = getline(a:lnum)
+ let match_s1 = line =~# '^\w\+\s'
+ let match_s2 = line =~# '^\w\+\.\w\+\s'
+ let match_s3 = line =~# '^\w\+\.\w\+\.\w\+\s'
+
+ if g:LatexBox_fold_toc_levels >= 3
+ if match_s3
+ return ">3"
+ endif
+ endif
+
+ if g:LatexBox_fold_toc_levels >= 2
+ if match_s2
+ return ">2"
+ endif
+ endif
+
+ if match_s1
+ return ">1"
+ endif
+
+ " Don't fold options
+ if line =~# '^\s*$'
+ return 0
+ endif
+
+ " Return previous fold level
+ return "="
+endfunction
+" {{{2 TOCFoldText
+function! TOCFoldText()
+ let parts = matchlist(getline(v:foldstart), '^\(.*\)\t\(.*\)$')
+ return printf('%-8s%-72s', parts[1], parts[2])
+endfunction
+
+" }}}1
+
+" {{{1 Mappings
+nnoremap <buffer> <silent> s :call <SID>TOCToggleNumbers()<CR>
+nnoremap <buffer> <silent> q :call <SID>TOCClose()<CR>
+nnoremap <buffer> <silent> <Esc> :call <SID>TOCClose()<CR>
+nnoremap <buffer> <silent> <Space> :call <SID>TOCActivate(0)<CR>
+nnoremap <buffer> <silent> <CR> :call <SID>TOCActivate(1)<CR>
+nnoremap <buffer> <silent> <leftrelease> :call <SID>TOCActivate(0)<cr>
+nnoremap <buffer> <silent> <2-leftmouse> :call <SID>TOCActivate(1)<cr>
+nnoremap <buffer> <silent> G G4k
+nnoremap <buffer> <silent> <Esc>OA k
+nnoremap <buffer> <silent> <Esc>OB j
+nnoremap <buffer> <silent> <Esc>OC l
+nnoremap <buffer> <silent> <Esc>OD h
+" }}}1
+
+" vim:fdm=marker:ff=unix:et:ts=4:sw=4
diff --git a/ftplugin/tex_LatexBox.vim b/ftplugin/tex_LatexBox.vim
new file mode 100644
index 00000000..2945851d
--- /dev/null
+++ b/ftplugin/tex_LatexBox.vim
@@ -0,0 +1,33 @@
+" LaTeX Box plugin for Vim
+" Maintainer: David Munger
+" Email: mungerd@gmail.com
+" Version: 0.9.6
+
+if exists('*fnameescape')
+ function! s:FNameEscape(s)
+ return fnameescape(a:s)
+ endfunction
+else
+ function! s:FNameEscape(s)
+ return a:s
+ endfunction
+endif
+
+if !exists('b:LatexBox_loaded')
+
+ let prefix = expand('<sfile>:p:h') . '/latex-box/'
+
+ execute 'source ' . s:FNameEscape(prefix . 'common.vim')
+ execute 'source ' . s:FNameEscape(prefix . 'complete.vim')
+ execute 'source ' . s:FNameEscape(prefix . 'motion.vim')
+ execute 'source ' . s:FNameEscape(prefix . 'latexmk.vim')
+ execute 'source ' . s:FNameEscape(prefix . 'folding.vim')
+ " added by AH to add main.tex file finder
+ execute 'source ' . s:FNameEscape(prefix . 'findmain.vim')
+ execute 'source ' . s:FNameEscape(prefix . 'mappings.vim')
+
+ let b:LatexBox_loaded = 1
+
+endif
+
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/ftplugin/tex_latexSuite.vim b/ftplugin/tex_latexSuite.vim
deleted file mode 100644
index 7ad5acc2..00000000
--- a/ftplugin/tex_latexSuite.vim
+++ /dev/null
@@ -1,13 +0,0 @@
-" LaTeX filetype
-" Language: LaTeX (ft=tex)
-" Maintainer: Srinath Avadhanula
-" Email: srinath@fastmail.fm
-
-if !exists('s:initLatexSuite')
- let s:initLatexSuite = 1
- exec 'so '.fnameescape(expand('<sfile>:p:h').'/latex-suite/main.vim')
-
- silent! do LatexSuite User LatexSuiteInitPost
-endif
-
-silent! do LatexSuite User LatexSuiteFileType
diff --git a/indent/tex.vim b/indent/tex.vim
index 50d1de1a..63453bda 100644
--- a/indent/tex.vim
+++ b/indent/tex.vim
@@ -1,262 +1,90 @@
-" Vim indent file
-" Language: LaTeX
-" Maintainer: Johannes Tanzler <johannes.tanzler@gmail.com>
-" Version: 0.5
-" Created: Sat, 16 Feb 2002 16:50:19 +0100
-" Last Change: Mar, 27 Jun 2011 11:46:35 +0200
-" Last Update: 18th feb 2002, by LH :
-" (*) better support for the option
-" (*) use some regex instead of several '||'.
-" Oct 9th, 2003, by JT:
-" (*) don't change indentation of lines starting with '%'
-" 2005/06/15, Moshe Kaminsky <kaminsky@math.huji.ac.il>
-" (*) New variables:
-" g:tex_items, g:tex_itemize_env, g:tex_noindent_env
-" 2011/3/6, by Zhou Yi Chao <broken.zhou@gmail.com>
-" (*) Don't change indentation of lines starting with '%'
-" I don't see any code with '%' and it doesn't work properly
-" so I add some code.
-" (*) New features: Add smartindent-like indent
-" for "{}" and "[]".
-" (*) New variables: g:tex_indent_brace
-"
-" Options: {{{
-"
-" To set the following options (ok, currently it's just one), add a line like
-" let g:tex_indent_items = 1
-" to your ~/.vimrc.
-"
-" * g:tex_indent_brace
-"
-" If this variable is unset or non-zero, it will use smartindent-like style
-" for "{}" and "[]"
-"
-" * g:tex_indent_items
-"
-" If this variable is set, item-environments are indented like Emacs does
-" it, i.e., continuation lines are indented with a shiftwidth.
-"
-" NOTE: I've already set the variable below; delete the corresponding line
-" if you don't like this behaviour.
-"
-" Per default, it is unset.
-"
-" set unset
-" ----------------------------------------------------------------
-" \begin{itemize} \begin{itemize}
-" \item blablabla \item blablabla
-" bla bla bla bla bla bla
-" \item blablabla \item blablabla
-" bla bla bla bla bla bla
-" \end{itemize} \end{itemize}
-"
-"
-" * g:tex_items
-"
-" A list of tokens to be considered as commands for the beginning of an item
-" command. The tokens should be separated with '\|'. The initial '\' should
-" be escaped. The default is '\\bibitem\|\\item'.
-"
-" * g:tex_itemize_env
-"
-" A list of environment names, separated with '\|', where the items (item
-" commands matching g:tex_items) may appear. The default is
-" 'itemize\|description\|enumerate\|thebibliography'.
-"
-" * g:tex_noindent_env
-"
-" A list of environment names. separated with '\|', where no indentation is
-" required. The default is 'document\|verbatim\|comment\|lstlisting'.
-"
-" }}}
-"
-" License: {{{
-" Copyright (c) 2002-2011 Johannes Tanzler <johannes.tanzler@gmail.com>
-
-" Permission is hereby granted, free of charge, to any person obtaining
-" a copy of this software and associated documentation files (the
-" "Software"), to deal in the Software without restriction, including
-" without limitation the rights to use, copy, modify, merge, publish,
-" distribute, sublicense, and/or sell copies of the Software, and to
-" permit persons to whom the Software is furnished to do so, subject to
-" the following conditions:
-"
-" The above copyright notice and this permission notice shall be included
-" in all copies or substantial portions of the Software.
-"
-" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-" EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
-" IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
-" CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
-" TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
-" SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-" }}}
+" LaTeX indent file (part of LaTeX Box)
+" Maintainer: David Munger (mungerd@gmail.com)
if exists("b:did_indent")
- finish
-endif
-let b:did_indent = 1
-
-" Delete the next line to avoid the special indention of items
-if !exists("g:tex_indent_items")
- let g:tex_indent_items = 1
-endif
-if !exists("g:tex_indent_brace")
- let g:tex_indent_brace = 1
-endif
-if g:tex_indent_items
- if !exists("g:tex_itemize_env")
- let g:tex_itemize_env = 'itemize\|description\|enumerate\|thebibliography'
- endif
- if !exists('g:tex_items')
- let g:tex_items = '\\bibitem\|\\item'
- endif
-else
- let g:tex_items = ''
-endif
-
-if !exists("g:tex_noindent_env")
- let g:tex_noindent_env = 'document\|verbatim\|comment\|lstlisting'
-endif
-
-setlocal autoindent
-setlocal nosmartindent
-setlocal indentexpr=GetTeXIndent()
-exec 'setlocal indentkeys+=},]' . substitute(g:tex_items, '^\|\(\\|\)', ',=', 'g')
-let g:tex_items = '^\s*' . g:tex_items
-
-
-" Only define the function once
-if exists("*GetTeXIndent") | finish
+ finish
endif
+let b:did_indent = 1
+setlocal indentexpr=LatexBox_TexIndent()
+setlocal indentkeys=0=\\end,0=\\end{enumerate},0=\\end{itemize},0=\\end{description},0=\\right,0=\\item,0=\\),0=\\],0},o,O,0\\
-function GetTeXIndent()
-
- " Find a non-blank line above the current line.
- let lnum = prevnonblank(v:lnum - 1)
-
- " New code for comments: Comments is not what we need.
- while lnum != 0
- if getline(lnum) !~ '^\s*%'
- break
- endif
- let lnum = prevnonblank(lnum - 1)
- endwhile
-
- " At the start of the file use zero indent.
- if lnum == 0 | return 0
- endif
-
- let ind = indent(lnum)
- let line = getline(lnum) " last line
- let cline = getline(v:lnum) " current line
-
- " New code for comment: retain the indent of current line
- if cline =~ '^\s*%'
- return indent(v:lnum)
- endif
+let s:list_envs = ['itemize', 'enumerate', 'description']
+" indent on \left( and on \(, but not on (
+" indent on \left[ and on \[, but not on [
+" indent on \left\{ and on {, but not on \{
+let s:open_pat = '\\\@<!\%(\\begin\|\\left\|\\(\|\\\[\|{\)'
+let s:close_pat = '\\\@<!\%(\\end\|\\right\|\\)\|\\\]\|}\)'
+let s:list_open_pat = '\\\@<!\\begin{\%(' . join(s:list_envs, '\|') . '\)}'
+let s:list_close_pat = '\\\@<!\\end{\%(' . join(s:list_envs, '\|') . '\)}'
- " Add a 'shiftwidth' after beginning of environments.
- " Don't add it for environments identified by
- " g:tex_noindent_env
- " LH modification : \begin does not always start a line
- let current_regexp = '\\begin'
- while 1
- let match_list = matchlist(line, current_regexp.'\s*{\(.*\)}')
- if (empty(match_list))
- break
- endif
- let environment_type = get(match_list, 1)
- if environment_type !~ g:tex_noindent_env
- let ind = ind + &sw
+function! s:CountMatches(str, pat)
+ return len(substitute(substitute(a:str, a:pat, "\n", 'g'), "[^\n]", '', 'g'))
+endfunction
- if g:tex_indent_items == 1
- " Add another sw for item-environments
- if line =~ g:tex_itemize_env
- let ind = ind + &sw
- endif
- endif
- endif
- " Make the regexp match the following begin
- let current_regexp = current_regexp.'.*\\begin'
- endwhile
- " Subtract a 'shiftwidth' when an environment ends
- if cline =~ '^\s*\\end' && cline !~ g:tex_noindent_env
+" TexIndent {{{
+function! LatexBox_TexIndent()
- if g:tex_indent_items == 1
- " Remove another sw for item-environments
- if cline =~ g:tex_itemize_env
- let ind = ind - &sw
- endif
- endif
+ let lnum_curr = v:lnum
+ let lnum_prev = prevnonblank(lnum_curr - 1)
- let ind = ind - &sw
- endif
+ if lnum_prev == 0
+ return 0
+ endif
- " Subtract a 'shiftwidth' when an environment ended
- " the previous line but the shiftwidth wasn't
- " applied because it didn't begin the line
- let current_regexp = '\\end'
- while 1
- let match_list = matchlist(line, current_regexp.'\s*{\(.*\)}')
- if (empty(match_list))
- break
- endif
- let environment_type = get(match_list, 1)
- if environment_type !~ g:tex_noindent_env
- \ && (current_regexp != '\\end' || line !~ '^\s*\\end')
- " If the end begin the line, the shift width has already
- " been subtracted at the previous line
+ let line_curr = getline(lnum_curr)
+ let line_prev = getline(lnum_prev)
- let ind = ind - &sw
+ " remove \\
+ let line_curr = substitute(line_curr, '\\\\', '', 'g')
+ let line_prev = substitute(line_prev, '\\\\', '', 'g')
- if g:tex_indent_items == 1
- " Add another sw for item-environments
- if line =~ g:tex_itemize_env
- let ind = ind - &sw
- endif
- endif
- endif
- " Make the regexp match the following end
- let current_regexp = current_regexp.'.*\\end'
- endwhile
+ " strip comments
+ let line_curr = substitute(line_curr, '\\\@<!%.*$', '', 'g')
+ let line_prev = substitute(line_prev, '\\\@<!%.*$', '', 'g')
- if g:tex_indent_brace
- " Add a 'shiftwidth' after a "{" or "[" while there are not "}" and "]"
- " after them. \m for magic
- if line =~ '\m\(\(\[[^\]]*\)\|\({[^}]*\)\)$'
- let ind = ind + &sw
- endif
- " Remove a 'shiftwidth' after a "}" or "]" while there are not "{" and "["
- " before them. \m for magic
- if cline =~ '\m^\(\([^[]*\]\)\|\([^{]*}\)\)'
- let ind = ind - &sw
- endif
- endif
+ " find unmatched opening patterns on previous line
+ let n = s:CountMatches(line_prev, s:open_pat)-s:CountMatches(line_prev, s:close_pat)
+ let n += s:CountMatches(line_prev, s:list_open_pat)-s:CountMatches(line_prev, s:list_close_pat)
+ " reduce indentation if current line starts with a closing pattern
+ if line_curr =~ '^\s*\%(' . s:close_pat . '\)'
+ let n -= 1
+ endif
- " Special treatment for 'item'
- " ----------------------------
+ " compensate indentation if previous line starts with a closing pattern
+ if line_prev =~ '^\s*\%(' . s:close_pat . '\)'
+ let n += 1
+ endif
- if g:tex_indent_items
+ " reduce indentation if current line starts with a closing list
+ if line_curr =~ '^\s*\%(' . s:list_close_pat . '\)'
+ let n -= 1
+ endif
- " '\item' or '\bibitem' itself:
- if cline =~ g:tex_items
- let ind = ind - &sw
- endif
+ " compensate indentation if previous line starts with a closing list
+ if line_prev =~ '^\s*\%(' . s:list_close_pat . '\)'
+ let n += 1
+ endif
- " lines following to '\item' are intented once again:
- if line =~ g:tex_items
- let ind = ind + &sw
- endif
+ " reduce indentation if previous line is \begin{document}
+ if line_prev =~ '\\begin\s*{document}'
+ let n -= 1
+ endif
- endif
+ " less shift for lines starting with \item
+ let item_here = line_curr =~ '^\s*\\item'
+ let item_above = line_prev =~ '^\s*\\item'
+ if !item_here && item_above
+ let n += 1
+ elseif item_here && !item_above
+ let n -= 1
+ endif
- return ind
+ return indent(lnum_prev) + n * &sw
endfunction
+" }}}
-" vim: set sw=4 textwidth=78:
+" vim:fdm=marker:ff=unix:noet:ts=4:sw=4
diff --git a/syntax/latextoc.vim b/syntax/latextoc.vim
new file mode 100644
index 00000000..5709ed63
--- /dev/null
+++ b/syntax/latextoc.vim
@@ -0,0 +1,9 @@
+syntax match helpText /^.*: .*/
+syntax match secNum /^\S\+\(\.\S\+\)\?\s*/ contained conceal
+syntax match secLine /^\S\+\t.\+/ contains=secNum
+syntax match mainSecLine /^[^\.]\+\t.*/ contains=secNum
+syntax match ssubSecLine /^[^\.]\+\.[^\.]\+\.[^\.]\+\t.*/ contains=secNum
+highlight link helpText PreProc
+highlight link secNum Number
+highlight link mainSecLine Title
+highlight link ssubSecLine Comment