forked from aniani/vim
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim indent file
 | 
						|
" Language:         reStructuredText Documentation Format
 | 
						|
" Maintainer:       Nikolai Weibull <now@bitwi.se>
 | 
						|
" Latest Revision:  2006-12-20
 | 
						|
 | 
						|
if exists("b:did_indent")
 | 
						|
  finish
 | 
						|
endif
 | 
						|
let b:did_indent = 1
 | 
						|
 | 
						|
setlocal indentexpr=GetRSTIndent()
 | 
						|
setlocal indentkeys=!^F,o,O
 | 
						|
setlocal nosmartindent
 | 
						|
 | 
						|
if exists("*GetRSTIndent")
 | 
						|
  finish
 | 
						|
endif
 | 
						|
 | 
						|
function GetRSTIndent()
 | 
						|
  let lnum = prevnonblank(v:lnum - 1)
 | 
						|
  if lnum == 0
 | 
						|
    return 0
 | 
						|
  endif
 | 
						|
 | 
						|
  let ind = indent(lnum)
 | 
						|
  let line = getline(lnum)
 | 
						|
 | 
						|
  if line =~ '^\s*[-*+]\s'
 | 
						|
    let ind = ind + 2
 | 
						|
  elseif line =~ '^\s*\d\+.\s'
 | 
						|
    let ind = ind + matchend(substitute(line, '^\s*', '', ''), '\d\+.\s\+')
 | 
						|
  endif
 | 
						|
 | 
						|
  let line = getline(v:lnum - 1)
 | 
						|
 | 
						|
  if line =~ '^\s*$'
 | 
						|
    execute lnum
 | 
						|
    call search('^\s*\%([-*+]\s\|\d\+.\s\|\.\.\|$\)', 'bW')
 | 
						|
    let line = getline('.')
 | 
						|
    if line =~ '^\s*[-*+]'
 | 
						|
      let ind = ind - 2
 | 
						|
    elseif line =~ '^\s*\d\+\.\s'
 | 
						|
      let ind = ind - matchend(substitute(line, '^\s*', '', ''),
 | 
						|
            \ '\d\+\.\s\+')
 | 
						|
    elseif line =~ '^\s*\.\.'
 | 
						|
      let ind = ind - 3
 | 
						|
    else
 | 
						|
      let ind = ind
 | 
						|
    endif
 | 
						|
  endif
 | 
						|
 | 
						|
  return ind
 | 
						|
endfunction
 |