aboutsummaryrefslogtreecommitdiff
path: root/dot_vim/ftplugin/latex-suite/main.vim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dot_vim/ftplugin/latex-suite/main.vim1024
1 files changed, 0 insertions, 1024 deletions
diff --git a/dot_vim/ftplugin/latex-suite/main.vim b/dot_vim/ftplugin/latex-suite/main.vim
deleted file mode 100644
index 063c6f6..0000000
--- a/dot_vim/ftplugin/latex-suite/main.vim
+++ /dev/null
@@ -1,1024 +0,0 @@
-" LaTeX filetype
-" Language: LaTeX (ft=tex)
-" Maintainer: Srinath Avadhanula
-" CVS: $Id: main.vim 999 2006-03-21 05:32:37Z srinathava $
-" 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 ".s:path.'/texrc'
-
-" }}}
-
-nmap <silent> <script> <plug> i
-imap <silent> <script> <C-o><plug> <Nop>
-
-" ==============================================================================
-" mappings
-" ==============================================================================
-" {{{
-" calculate the mapleader character.
-let s:ml = exists('g:mapleader') ? g:mapleader : '\'
-
-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.'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 curd = getcwd()
-
- let dirmodifier = '%:p:h'
- let dirLast = expand(dirmodifier)
- call Tex_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'
- " break from the loop if we cannot go up any further.
- if expand(dirmodifier) == dirLast
- break
- endif
- let dirLast = expand(dirmodifier)
- call Tex_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
-
- call Tex_CD(curd)
-
- " NOTE: The caller of this function needs to escape spaces in the
- " file name as appropriate. The reason its not done here is that
- " escaping spaces 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 " }}}
-
-" ==============================================================================
-" 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\>'
- 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 '.s:path.'/texproject.vim'
-
-" source all the relevant files.
-exe 'source '.s:path.'/texmenuconf.vim'
-exe 'source '.s:path.'/envmacros.vim'
-exe 'source '.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 '.s:path.'/mathmacros-utf.vim'
-else
- exe 'source '.s:path.'/mathmacros.vim'
-endif
-
-exe 'source '.s:path.'/multicompile.vim'
-exe 'source '.s:path.'/compiler.vim'
-exe 'source '.s:path.'/folding.vim'
-exe 'source '.s:path.'/templates.vim'
-exe 'source '.s:path.'/custommacros.vim'
-exe 'source '.s:path.'/bibtex.vim'
-
-" source advanced math functions
-if g:Tex_AdvancedMath == 1
- exe 'source '.s:path.'/brackets.vim'
- exe 'source '.s:path.'/smartspace.vim'
-endif
-
-if g:Tex_Diacritics != 0
- exe 'source '.s:path.'/diacritics.vim'
-endif
-
-exe 'source '.s:path.'/texviewer.vim'
-exe 'source '.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^='.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 '.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 '.expand('<sfile>:p:h').'/pytools.py'
-
-" vim:fdm=marker:ff=unix:noet:ts=4:sw=4:nowrap