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: 2021-10-18 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 21let b:undo_indent = "setl ai< inde< indk< si<" 22 23if exists("*GetTeraTermIndent") 24 finish 25endif 26 27function! GetTeraTermIndent(lnum) 28 let l:prevlnum = prevnonblank(a:lnum-1) 29 if l:prevlnum == 0 30 " top of file 31 return 0 32 endif 33 34 " grab the previous and current line, stripping comments. 35 let l:prevl = substitute(getline(l:prevlnum), ';.*$', '', '') 36 let l:thisl = substitute(getline(a:lnum), ';.*$', '', '') 37 let l:previ = indent(l:prevlnum) 38 39 let l:ind = l:previ 40 41 if l:prevl =~ '^\s*if\>.*\<then\>' 42 " previous line opened a block 43 let l:ind += shiftwidth() 44 endif 45 if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>' 46 " previous line opened a block 47 let l:ind += shiftwidth() 48 endif 49 if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>' 50 " this line closed a block 51 let l:ind -= shiftwidth() 52 endif 53 54 return l:ind 55endfunction 56 57" vim: ts=8 sw=2 sts=2 58