blob: 9a8a3cb719a44a72a3098c0d16775684718940a1 [file] [log] [blame]
Bram Moolenaardb6ea062014-07-10 22:01:47 +02001" Vim indent file
2" Language: Rmd
3" Author: Jakson Alves de Aquino <jalvesaq@gmail.com>
Bram Moolenaar541f92d2015-06-19 13:27:23 +02004" Last Change: Thu Jul 10, 2014 07:11PM
Bram Moolenaardb6ea062014-07-10 22:01:47 +02005
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=GetRmdIndent()
17
18if exists("*GetRmdIndent")
19 finish
20endif
21
22function GetMdIndent()
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 GetRmdIndent()
Bram Moolenaar541f92d2015-06-19 13:27:23 +020036 if getline(".") =~ '^[ \t]*```{r .*}$' || getline(".") =~ '^[ \t]*```$'
Bram Moolenaardb6ea062014-07-10 22:01:47 +020037 return 0
38 endif
Bram Moolenaar541f92d2015-06-19 13:27:23 +020039 if search('^[ \t]*```{r', "bncW") > search('^[ \t]*```$', "bncW")
Bram Moolenaardb6ea062014-07-10 22:01:47 +020040 return s:RIndent()
41 else
42 return GetMdIndent()
43 endif
44endfunction
45
46" vim: sw=2