[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.144.227.187: ~ $
" Vim indent file
" Language:     LaTeX
" Maintainer:   YiChao Zhou <broken.zhou AT gmail.com>
" Created:      Sat, 16 Feb 2002 16:50:19 +0100
" Last Change:	2012 Mar 18 19:19:50
" Version: 0.7
"   Please email me if you found something we can do.  Bug report and
"   feature request is welcome.

" Last Update:  {{{
"               25th Sep 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 AT math.huji.ac.il>
"               (*) New variables:
"                   g:tex_items, g:tex_itemize_env, g:tex_noindent_env
"               2011/3/6, by Zhou YiChao <broken.zhou AT 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
"               2011/9/25, by Zhou Yichao <broken.zhou AT gmail.com>
"               (*) Bug fix: smartindent-like indent for "[]"
"               (*) New features: Align with "&".
"               (*) New variable: g:tex_indent_and.
"               2011/10/23 by Zhou Yichao <broken.zhou AT gmail.com>
"               (*) Bug fix: improve the smartindent-like indent for "{}" and
"               "[]".
"               2012/02/27 by Zhou Yichao <broken.zhou AT gmail.com>
"               (*) Bug fix: support default folding marker.
"               (*) Indent with "&" is not very handy.  Make it not enable by
"               default.
"               2012/03/06 by Zhou Yichao <broken.zhou AT gmail.com>
"               (*) Modify "&" behavior and make it default again.  Now "&"
"               won't align when there are more then one "&" in the previous
"               line.
"               (*) Add indent "\left(" and "\right)"
"               (*) Trust user when in "verbatim" and "lstlisting"
"               2012/03/11 by Zhou Yichao <broken.zhou AT gmail.com>
"               (*) Modify "&" so that only indent when current line start with
"               "&".
"               2012/03/12 by Zhou Yichao <broken.zhou AT gmail.com>
"               (*) Modify indentkeys.
"               2012/03/18 by Zhou Yichao <broken.zhou AT gmail.com>
"               (*) Add &cpo
"               2013/05/02 by Zhou Yichao <broken.zhou AT gmail.com>
"               (*) Fix problem about GetTeXIndent checker. Thank Albert Netymk
"                   for reporting this.
" }}}

" Document: {{{
"
" 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'.
"
" * g:tex_indent_and
"
"   If this variable is unset or zero, vim will try to align the line with first
"   "&". This is pretty useful when you use environment like table or align.
"   Note that this feature need to search back some line, so vim may become
"   a little slow.
"
" }}} 

" Only define the function once
if exists("b:did_indent")
    finish
endif

let s:cpo_save = &cpo
set cpo&vim

" Define global variable {{{

let b:did_indent = 1

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 !exists("g:tex_indent_and")
    let g:tex_indent_and = 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_indent_paretheses")
    let g:tex_indent_paretheses = 1
endif

if !exists("g:tex_noindent_env")
    let g:tex_noindent_env = 'document\|verbatim\|lstlisting'
endif "}}}

" VIM Setting " {{{
setlocal autoindent
setlocal nosmartindent
setlocal indentexpr=GetTeXIndent()
setlocal indentkeys&
exec 'setlocal indentkeys+=[,(,{,),},],\&' . substitute(g:tex_items, '^\|\(\\|\)', ',=', 'g')
let g:tex_items = '^\s*' . substitute(g:tex_items, '^\(\^\\s\*\)*', '', '')
" }}}

function! GetTeXIndent() " {{{
    " Find a non-blank line above the current line.
    let lnum = prevnonblank(v:lnum - 1)

    " Comment line is not what we need.
    while lnum != 0 && getline(lnum) =~ '^\s*%'
        let lnum = prevnonblank(lnum - 1)
    endwhile

    " At the start of the file use zero indent.
    if lnum == 0
        return 0 
    endif

    let line = substitute(getline(lnum), '%.*', ' ','g')     " last line
    let cline = substitute(getline(v:lnum), '%.*', ' ', 'g') " current line

    "  We are in verbatim, so do what our user what.
    if synIDattr(synID(v:lnum, indent(v:lnum), 1), "name") == "texZone"
        if empty(cline)
            return indent(lnum)
        else
            return indent(v:lnum)
        end
    endif
    
    " You want to align with "&"
    if g:tex_indent_and
        " Align only when current line start with "&"
        if line =~ '&.*\\\\' && cline =~ '^\s*&'
            return indent(v:lnum) + stridx(line, "&") - stridx(cline, "&")
        endif

        " set line & lnum to the line which doesn't contain "&"
        while lnum != 0 && (stridx(line, "&") != -1 || line =~ '^\s*%')
            let lnum = prevnonblank(lnum - 1)
            let line = getline(lnum)
        endwhile
    endif


    if lnum == 0
        return 0 
    endif

    let ind = indent(lnum)

    " New code for comment: retain the indent of current line
    if cline =~ '^\s*%'
        return indent(v:lnum)
    endif

    " Add a 'shiftwidth' after beginning of environments.
    " Don't add it for \begin{document} and \begin{verbatim}
    ""if line =~ '^\s*\\begin{\(.*\)}'  && line !~ 'verbatim' 
    " LH modification : \begin does not always start a line
    " ZYC modification : \end after \begin won't cause wrong indent anymore
    if line =~ '\\begin{.*}' && line !~ g:tex_noindent_env
        let ind = ind + &sw

        if g:tex_indent_items
            " Add another sw for item-environments
            if line =~ g:tex_itemize_env
                let ind = ind + &sw
            endif
        endif
    endif

    " Subtract a 'shiftwidth' when an environment ends
    if cline =~ '\\end{.*}' && cline !~ g:tex_noindent_env

        if g:tex_indent_items
            " Remove another sw for item-environments
            if cline =~ g:tex_itemize_env
                let ind = ind - &sw
            endif
        endif

        let ind = ind - &sw
    endif

    if g:tex_indent_brace
        let sum1 = 0
        for i in range(0, strlen(line)-1)
            if line[i] == "}" || line[i] == "]" ||
                        \ strpart(line, i, 7) == '\right)'
                let sum1 = max([0, sum1-1])
            endif
            if line[i] == "{" || line[i] == "[" ||
                        \ strpart(line, i, 6) == '\left('
                let sum1 += 1
            endif
        endfor

        let sum2 = 0
        for i in reverse(range(0, strlen(cline)-1))
            if cline[i] == "{" || cline[i] == "[" ||
                        \ strpart(cline, i, 6) == '\left('
                let sum2 = max([0, sum2-1])
            endif
            if cline[i] == "}" || cline[i] == "]" ||
                        \ strpart(cline, i, 7) == '\right)'
                let sum2 += 1
            endif
        endfor

        let ind += (sum1 - sum2) * &sw
    endif

    if g:tex_indent_paretheses
    endif

    " Special treatment for 'item'
    " ----------------------------

    if g:tex_indent_items

        " '\item' or '\bibitem' itself:
        if cline =~ g:tex_items
            let ind = ind - &sw
        endif

        " lines following to '\item' are intented once again:
        if line =~ g:tex_items
            let ind = ind + &sw
        endif

    endif

    return ind
endfunction "}}}

let &cpo = s:cpo_save
unlet s:cpo_save

" vim: set sw=4 textwidth=80:

Filemanager

Name Type Size Permission Actions
README.txt File 1.6 KB 0644
aap.vim File 265 B 0644
ada.vim File 10.89 KB 0644
ant.vim File 290 B 0644
automake.vim File 231 B 0644
awk.vim File 7.57 KB 0644
bib.vim File 346 B 0644
bst.vim File 1.87 KB 0644
c.vim File 325 B 0644
cdl.vim File 4.07 KB 0644
ch.vim File 470 B 0644
chaiscript.vim File 1.11 KB 0644
changelog.vim File 264 B 0644
clojure.vim File 11.85 KB 0644
cmake.vim File 2.69 KB 0644
cobol.vim File 8 KB 0644
config.vim File 2.12 KB 0644
cpp.vim File 329 B 0644
cs.vim File 327 B 0644
css.vim File 1.68 KB 0644
cucumber.vim File 2.56 KB 0644
cuda.vim File 305 B 0644
d.vim File 510 B 0644
dictconf.vim File 325 B 0644
dictdconf.vim File 326 B 0644
docbk.vim File 324 B 0644
dtd.vim File 11.39 KB 0644
dtrace.vim File 451 B 0644
dylan.vim File 2.6 KB 0644
eiffel.vim File 3.13 KB 0644
erlang.vim File 45.15 KB 0644
eruby.vim File 2.11 KB 0644
eterm.vim File 638 B 0644
falcon.vim File 13.65 KB 0644
fortran.vim File 6.41 KB 0644
framescript.vim File 786 B 0644
gitconfig.vim File 817 B 0644
gitolite.vim File 996 B 0644
haml.vim File 2.14 KB 0644
hamster.vim File 1.37 KB 0644
html.vim File 14.46 KB 0644
htmldjango.vim File 273 B 0644
idlang.vim File 1.53 KB 0644
ishd.vim File 1.8 KB 0644
java.vim File 4.02 KB 0644
javascript.vim File 336 B 0644
jsp.vim File 462 B 0644
ld.vim File 1.71 KB 0644
lifelines.vim File 637 B 0644
liquid.vim File 1.83 KB 0644
lisp.vim File 353 B 0644
logtalk.vim File 1.65 KB 0644
lua.vim File 1.87 KB 0644
mail.vim File 308 B 0644
make.vim File 3.35 KB 0644
matlab.vim File 1.88 KB 0644
mma.vim File 2.17 KB 0644
mp.vim File 6.37 KB 0644
objc.vim File 1.61 KB 0644
ocaml.vim File 8.9 KB 0644
occam.vim File 4.53 KB 0644
pascal.vim File 5.52 KB 0644
perl.vim File 5.67 KB 0644
perl6.vim File 3.42 KB 0644
php.vim File 18.97 KB 0644
postscr.vim File 1.58 KB 0644
pov.vim File 2.58 KB 0644
prolog.vim File 1.42 KB 0644
pyrex.vim File 326 B 0644
python.vim File 5.61 KB 0644
r.vim File 14.44 KB 0644
readline.vim File 681 B 0644
rpl.vim File 1.79 KB 0644
rst.vim File 1.35 KB 0644
ruby.vim File 17.13 KB 0644
sass.vim File 1018 B 0644
scheme.vim File 241 B 0644
scss.vim File 191 B 0644
sdl.vim File 2.7 KB 0644
sh.vim File 3.95 KB 0644
sml.vim File 6.27 KB 0644
sql.vim File 1.18 KB 0644
sqlanywhere.vim File 12.77 KB 0644
tcl.vim File 1.56 KB 0644
tcsh.vim File 1.21 KB 0644
tex.vim File 9.47 KB 0644
tf.vim File 1.46 KB 0644
tilde.vim File 994 B 0644
treetop.vim File 677 B 0644
vb.vim File 2 KB 0644
verilog.vim File 7.44 KB 0644
vhdl.vim File 13.48 KB 0644
vim.vim File 2.76 KB 0644
xf86conf.vim File 679 B 0644
xhtml.vim File 269 B 0644
xinetd.vim File 1.17 KB 0644
xml.vim File 2.77 KB 0644
xsd.vim File 253 B 0644
xslt.vim File 297 B 0644
yacc.vim File 769 B 0644
yaml.vim File 4.02 KB 0644
zimbu.vim File 3.8 KB 0644
zsh.vim File 231 B 0644