1" Vim indent file 2" Language: Tera Term Language (TTL) 3" Based on Tera Term Version 4.100 4" Maintainer: Ken Takata 5" URL: https://github.com/k-takata/vim-teraterm 6" Last Change: 2018-08-31 7" Filenames: *.ttl 8" License: VIM License 9 10if exists("b:did_indent") 11 finish 12endif 13let b:did_indent = 1 14 15setlocal nosmartindent 16setlocal noautoindent 17setlocal indentexpr=GetTeraTermIndent(v:lnum) 18setlocal indentkeys=!^F,o,O,e 19setlocal indentkeys+==elseif,=endif,=loop,=next,=enduntil,=endwhile 20 21if exists("*GetTeraTermIndent") 22 finish 23endif 24 25function! GetTeraTermIndent(lnum) 26 let l:prevlnum = prevnonblank(a:lnum-1) 27 if l:prevlnum == 0 28 " top of file 29 return 0 30 endif 31 32 " grab the previous and current line, stripping comments. 33 let l:prevl = substitute(getline(l:prevlnum), ';.*$', '', '') 34 let l:thisl = substitute(getline(a:lnum), ';.*$', '', '') 35 let l:previ = indent(l:prevlnum) 36 37 let l:ind = l:previ 38 39 if l:prevl =~ '^\s*if\>.*\<then\>' 40 " previous line opened a block 41 let l:ind += shiftwidth() 42 endif 43 if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>' 44 " previous line opened a block 45 let l:ind += shiftwidth() 46 endif 47 if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>' 48 " this line closed a block 49 let l:ind -= shiftwidth() 50 endif 51 52 return l:ind 53endfunction 54 55" vim: ts=8 sw=2 sts=2 56