comparison runtime/indent/rst.vim @ 0:76efa0be13f1

Initial revision
author atsuki
date Sat, 10 Nov 2007 15:07:22 +0900
parents
children 67300faee616
comparison
equal deleted inserted replaced
-1:000000000000 0:76efa0be13f1
1 " Vim indent file
2 " Language: reStructuredText Documentation Format
3 " Maintainer: Nikolai Weibull <now@bitwi.se>
4 " Latest Revision: 2006-12-20
5
6 if exists("b:did_indent")
7 finish
8 endif
9 let b:did_indent = 1
10
11 setlocal indentexpr=GetRSTIndent()
12 setlocal indentkeys=!^F,o,O
13 setlocal nosmartindent
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*', '', ''),
44 \ '\d\+\.\s\+')
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