source: issm/trunk/externalpackages/vim/vim.AddOns/issm.vim/indent/tex.vim@ 4251

Last change on this file since 4251 was 4230, checked in by Mathieu Morlighem, 15 years ago

Added ISSM's settings and plugins

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