Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
eruby.vim111 linesDownload Raw Back to indent
1" Vim indent file2" Language:		eRuby3" Maintainer:		Tim Pope <vimNOSPAM@tpope.org>4" URL:			https://github.com/vim-ruby/vim-ruby5" Last Change:		2019 Jan 066 7if exists("b:did_indent")8  finish9endif10 11runtime! indent/ruby.vim12unlet! b:did_indent13setlocal indentexpr=14 15if exists("b:eruby_subtype") && b:eruby_subtype != '' && b:eruby_subtype !=# 'eruby'16  exe "runtime! indent/".b:eruby_subtype.".vim"17else18  runtime! indent/html.vim19endif20unlet! b:did_indent21 22" Force HTML indent to not keep state.23let b:html_indent_usestate = 024 25if &l:indentexpr == ''26  if &l:cindent27    let &l:indentexpr = 'cindent(v:lnum)'28  else29    let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))'30  endif31endif32let b:eruby_subtype_indentexpr = &l:indentexpr33 34let b:did_indent = 135 36setlocal indentexpr=GetErubyIndent()37setlocal indentkeys=o,O,*<Return>,<>>,{,},0),0],o,O,!^F,=end,=else,=elsif,=rescue,=ensure,=when38 39" Only define the function once.40if exists("*GetErubyIndent")41  finish42endif43 44" this file uses line continuations45let s:cpo_sav = &cpo46set cpo&vim47 48function! GetErubyIndent(...)49  " The value of a single shift-width50  if exists('*shiftwidth')51    let sw = shiftwidth()52  else53    let sw = &sw54  endif55 56  if a:0 && a:1 == '.'57    let v:lnum = line('.')58  elseif a:0 && a:1 =~ '^\d'59    let v:lnum = a:160  endif61  let vcol = col('.')62  call cursor(v:lnum,1)63  let inruby = searchpair('<%','','%>','W')64  call cursor(v:lnum,vcol)65  if inruby && getline(v:lnum) !~ '^<%\|^\s*[-=]\=%>'66    let ind = GetRubyIndent(v:lnum)67  else68    exe "let ind = ".b:eruby_subtype_indentexpr69 70    " Workaround for Andy Wokula's HTML indent. This should be removed after71    " some time, since the newest version is fixed in a different way.72    if b:eruby_subtype_indentexpr =~# '^HtmlIndent('73	  \ && exists('b:indent')74	  \ && type(b:indent) == type({})75	  \ && has_key(b:indent, 'lnum')76      " Force HTML indent to not keep state77      let b:indent.lnum = -178    endif79  endif80  let lnum = prevnonblank(v:lnum-1)81  let line = getline(lnum)82  let cline = getline(v:lnum)83  if cline =~# '^\s*<%[-=]\=\s*\%(}\|end\|else\|\%(ensure\|rescue\|elsif\|when\).\{-\}\)\s*\%([-=]\=%>\|$\)'84    let ind = ind - sw85  endif86  if line =~# '\S\s*<%[-=]\=\s*\%(}\|end\).\{-\}\s*\%([-=]\=%>\|$\)'87    let ind = ind - sw88  endif89  if line =~# '\%({\|\<do\)\%(\s*|[^|]*|\)\=\s*[-=]\=%>'90    let ind = ind + sw91  elseif line =~# '<%[-=]\=\s*\%(module\|class\|def\|if\|for\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure\|rescue\)\>.*%>'92    let ind = ind + sw93  endif94  if line =~# '^\s*<%[=#-]\=\s*$' && cline !~# '^\s*end\>'95    let ind = ind + sw96  endif97  if line !~# '^\s*<%' && line =~# '%>\s*$' && line !~# '^\s*end\>'98	\ && synID(v:lnum, match(cline, '\S') + 1, 1) != hlID('htmlEndTag')99    let ind = ind - sw100  endif101  if cline =~# '^\s*[-=]\=%>\s*$'102    let ind = ind - sw103  endif104  return ind105endfunction106 107let &cpo = s:cpo_sav108unlet! s:cpo_sav109 110" vim:set sw=2 sts=2 ts=8 noet:111 
codekingpro/portable-devtools · Team Ai