1" Vim indent file 2" Language: FrameScript 3" Maintainer: Doug Kearns <[email protected]> 4" Previous Maintainer: Nikolai Weibull <[email protected]> 5" Last Change: 24 Sep 2021 6 7if exists("b:did_indent") 8 finish 9endif 10let b:did_indent = 1 11 12setlocal indentexpr=GetFrameScriptIndent() 13setlocal indentkeys=!^F,o,O,0=~Else,0=~EndIf,0=~EndLoop,0=~EndSub 14setlocal nosmartindent 15 16let b:undo_indent = "setl inde< indk< si<" 17 18if exists("*GetFrameScriptIndent") 19 finish 20endif 21 22function GetFrameScriptIndent() 23 let lnum = prevnonblank(v:lnum - 1) 24 25 if lnum == 0 26 return 0 27 endif 28 29 if getline(v:lnum) =~ '^\s*\*' 30 return cindent(v:lnum) 31 endif 32 33 let ind = indent(lnum) 34 35 if getline(lnum) =~? '^\s*\%(If\|Loop\|Sub\)' 36 let ind = ind + shiftwidth() 37 endif 38 39 if getline(v:lnum) =~? '^\s*\%(Else\|End\%(If\|Loop\|Sub\)\)' 40 let ind = ind - shiftwidth() 41 endif 42 43 return ind 44endfunction 45