7
|
1 " Vim indent file
|
1216
|
2 " Language: reStructuredText Documentation Format
|
839
|
3 " Maintainer: Nikolai Weibull <now@bitwi.se>
|
1216
|
4 " Latest Revision: 2006-12-20
|
7
|
5
|
|
6 if exists("b:did_indent")
|
|
7 finish
|
|
8 endif
|
|
9 let b:did_indent = 1
|
|
10
|
|
11 setlocal indentexpr=GetRSTIndent()
|
375
|
12 setlocal indentkeys=!^F,o,O
|
1216
|
13 setlocal nosmartindent
|
7
|
14
|
|
15 if exists("*GetRSTIndent")
|
|
16 finish
|
|
17 endif
|
|
18
|
|
19 function GetRSTIndent()
|
|
20 let lnum = prevnonblank(v:lnum - 1)
|
|
21 if lnum == 0
|
|
22 return 0
|
|
23 endif
|
|
24
|
|
25 let ind = indent(lnum)
|
|
26 let line = getline(lnum)
|
|
27
|
|
28 if line =~ '^\s*[-*+]\s'
|
|
29 let ind = ind + 2
|
|
30 elseif line =~ '^\s*\d\+.\s'
|
|
31 let ind = ind + matchend(substitute(line, '^\s*', '', ''), '\d\+.\s\+')
|
|
32 endif
|
|
33
|
|
34 let line = getline(v:lnum - 1)
|
|
35
|
|
36 if line =~ '^\s*$'
|
|
37 execute lnum
|
|
38 call search('^\s*\%([-*+]\s\|\d\+.\s\|\.\.\|$\)', 'bW')
|
|
39 let line = getline('.')
|
|
40 if line =~ '^\s*[-*+]'
|
|
41 let ind = ind - 2
|
|
42 elseif line =~ '^\s*\d\+\.\s'
|
|
43 let ind = ind - matchend(substitute(line, '^\s*', '', ''),
|
1216
|
44 \ '\d\+\.\s\+')
|
7
|
45 elseif line =~ '^\s*\.\.'
|
|
46 let ind = ind - 3
|
|
47 else
|
|
48 let ind = ind
|
|
49 endif
|
|
50 endif
|
|
51
|
|
52 return ind
|
|
53 endfunction
|