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