1" Vim indent file 2" Language: Rmd 3" Author: Jakson Alves de Aquino <[email protected]> 4" Last Change: Thu Jul 10, 2014 07:11PM 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=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() 36 if getline(".") =~ '^[ \t]*```{r .*}$' || getline(".") =~ '^[ \t]*```$' 37 return 0 38 endif 39 if search('^[ \t]*```{r', "bncW") > search('^[ \t]*```$', "bncW") 40 return s:RIndent() 41 else 42 return GetMdIndent() 43 endif 44endfunction 45 46" vim: sw=2 47