1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
" Vim indent file
" Language: LaTeX
" Maintainer: Johannes Tanzler <jtanzler@yline.com>
" Created: Sat, 16 Feb 2002 16:50:19 +0100
" Last Change: Sun, 17 Feb 2002 00:09:11 +0100
" Last Update: 18th feb 2002, by LH :
" (*) better support for the option
" (*) use some regex instead of several '||'.
" Version: 0.02
" URL: comming soon: http://www.unet.univie.ac.at/~a9925098/vim/indent/tex.vim
" --> If you're a Vim guru & and you find something that could be done in a
" better (perhaps in a more Vim-ish or Vi-ish) way, please let me know!
" 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_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}
"
"
" This option applies to itemize, description, enumerate, and
" thebibliography.
"
" }}}
" 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("b:did_indent") | finish
endif
let b:did_indent = 1
setlocal indentexpr=GetTeXIndent()
setlocal nolisp
setlocal nosmartindent
setlocal autoindent
setlocal indentkeys+=},=\\item,=\\bibitem
" Only define the function once
if exists("*GetTeXIndent") | finish
endif
function GetTeXIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
" 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
" Do not change indentation of commented lines.
if line =~ '^\s*%'
return ind
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
if line =~ '\\begin{\(.*\)}' && line !~ 'verbatim'
\ && line !~ 'document'
let ind = ind + &sw
if g:tex_indent_items == 1
" Add another sw for item-environments
if line =~ 'itemize\|description\|enumerate\|thebibliography'
let ind = ind + &sw
endif
endif
endif
" Subtract a 'shiftwidth' when an environment ends
if cline =~ '^\s*\\end' && cline !~ 'verbatim'
\&& cline !~ 'document'
if g:tex_indent_items == 1
" Remove another sw for item-environments
if cline =~ 'itemize\|description\|enumerate\|thebibliography'
let ind = ind - &sw
endif
endif
let ind = ind - &sw
endif
" Special treatment for 'item'
" ----------------------------
if g:tex_indent_items == 1
" '\item' or '\bibitem' itself:
if cline =~ '^\s*\\\(bib\)\=item'
let ind = ind - &sw
endif
" lines following to '\item' are intented once again:
if line =~ '^\s*\\\(bib\)\=item'
let ind = ind + &sw
endif
endif
return ind
endfunction
|