xref: /vim-8.2.3635/runtime/indent/rrst.vim (revision 2bf24176)
1" Vim indent file
2" Language:	Rrst
3" Author:	Jakson Alves de Aquino <[email protected]>
4" Last Change:	Wed Jul 09, 2014  07:33PM
5
6
7" Only load this indent file when no other was loaded.
8if exists("b:did_indent")
9  finish
10endif
11runtime indent/r.vim
12let s:RIndent = function(substitute(&indentexpr, "()", "", ""))
13let b:did_indent = 1
14
15setlocal indentkeys=0{,0},:,!^F,o,O,e
16setlocal indentexpr=GetRrstIndent()
17
18if exists("*GetRrstIndent")
19  finish
20endif
21
22function GetRstIndent()
23  let pline = getline(v:lnum - 1)
24  let cline = getline(v:lnum)
25  if prevnonblank(v:lnum - 1) < v:lnum - 1 || cline =~ '^\s*[-\+\*]\s' || cline =~ '^\s*\d\+\.\s\+'
26    return indent(v:lnum)
27  elseif pline =~ '^\s*[-\+\*]\s'
28    return indent(v:lnum - 1) + 2
29  elseif pline =~ '^\s*\d\+\.\s\+'
30    return indent(v:lnum - 1) + 3
31  endif
32  return indent(prevnonblank(v:lnum - 1))
33endfunction
34
35function GetRrstIndent()
36  if getline(".") =~ '^\.\. {r .*}$' || getline(".") =~ '^\.\. \.\.$'
37    return 0
38  endif
39  if search('^\.\. {r', "bncW") > search('^\.\. \.\.$', "bncW")
40    return s:RIndent()
41  else
42    return GetRstIndent()
43  endif
44endfunction
45
46" vim: sw=2
47