1" Vim indent file 2" Language: reStructuredText Documentation Format 3" Maintainer: Nikolai Weibull <now@bitwi.se> 4" Latest Revision: 2006-12-20 5 6if exists("b:did_indent") 7 finish 8endif 9let b:did_indent = 1 10 11setlocal indentexpr=GetRSTIndent() 12setlocal indentkeys=!^F,o,O 13setlocal nosmartindent 14 15if exists("*GetRSTIndent") 16 finish 17endif 18 19function 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 53endfunction 54