diff runtime/indent/rmd.vim @ 6051:0efec12f52ac

Updated runtime files.
author Bram Moolenaar <bram@vim.org>
date Thu, 10 Jul 2014 22:01:47 +0200
parents
children 37828f7503c7
line wrap: on
line diff
new file mode 100644
--- /dev/null
+++ b/runtime/indent/rmd.vim
@@ -0,0 +1,46 @@
+" Vim indent file
+" Language:	Rmd
+" Author:	Jakson Alves de Aquino <jalvesaq@gmail.com>
+" Last Change:	Wed Jul 09, 2014  07:33PM
+
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+  finish
+endif
+runtime indent/r.vim
+let s:RIndent = function(substitute(&indentexpr, "()", "", ""))
+let b:did_indent = 1
+
+setlocal indentkeys=0{,0},:,!^F,o,O,e
+setlocal indentexpr=GetRmdIndent()
+
+if exists("*GetRmdIndent")
+  finish
+endif
+
+function GetMdIndent()
+  let pline = getline(v:lnum - 1)
+  let cline = getline(v:lnum)
+  if prevnonblank(v:lnum - 1) < v:lnum - 1 || cline =~ '^\s*[-\+\*]\s' || cline =~ '^\s*\d\+\.\s\+'
+    return indent(v:lnum)
+  elseif pline =~ '^\s*[-\+\*]\s'
+    return indent(v:lnum - 1) + 2
+  elseif pline =~ '^\s*\d\+\.\s\+'
+    return indent(v:lnum - 1) + 3
+  endif
+  return indent(prevnonblank(v:lnum - 1))
+endfunction
+
+function GetRmdIndent()
+  if getline(".") =~ '^```{r .*}$' || getline(".") =~ '^```$'
+    return 0
+  endif
+  if search('^```{r', "bncW") > search('^```$', "bncW")
+    return s:RIndent()
+  else
+    return GetMdIndent()
+  endif
+endfunction
+
+" vim: sw=2