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