55 lines · 1.4 KB · Text
RawDownload
" Vim indent file" Language:    Hamster Script " Version:     2.0.6.0" Last Change: Wed Nov 08 2006 12:02:42 PM" Maintainer:  David Fishburn <fishburn@ianywhere.com> " Only load this indent file when no other was loaded.if exists("b:did_indent")  finishendiflet b:did_indent = 1 setlocal indentkeys+==~if,=~else,=~endif,=~endfor,=~endwhilesetlocal indentkeys+==~do,=~until,=~while,=~repeat,=~for,=~loopsetlocal indentkeys+==~sub,=~endsub " Define the appropriate indent function but only oncesetlocal indentexpr=HamGetFreeIndent()if exists("*HamGetFreeIndent")  finishendif function HamGetIndent(lnum)  let ind = indent(a:lnum)  let prevline=getline(a:lnum)   " Add a shiftwidth to statements following if,  else, elseif,  " case, select, default, do, until, while, for, start  if prevline =~? '^\s*\<\(if\|else\%(if\)\?\|for\|repeat\|do\|while\|sub\)\>'     let ind = ind + &sw  endif   " Subtract a shiftwidth from else, elseif, end(if|while|for), until  let line = getline(v:lnum)  if line =~? '^\s*\(else\|elseif\|loop\|until\|end\%(if\|while\|for\|sub\)\)\>'    let ind = ind - &sw  endif   return indendfunction function HamGetFreeIndent()  " Find the previous non-blank line  let lnum = prevnonblank(v:lnum - 1)   " Use zero indent at the top of the file  if lnum == 0    return 0  endif   let ind=HamGetIndent(lnum)  return indendfunction " vim:sw=2 tw=80