codekingpro/portable-devtools
114k
1" Vim indent file2" Language: Tera Term Language (TTL)3" Based on Tera Term Version 4.1004" Maintainer: Ken Takata5" URL: https://github.com/k-takata/vim-teraterm6" Last Change: 2021-10-187" Filenames: *.ttl8" License: VIM License9 10if exists("b:did_indent")11 finish12endif13let b:did_indent = 114 15setlocal nosmartindent16setlocal noautoindent17setlocal indentexpr=GetTeraTermIndent(v:lnum)18setlocal indentkeys=!^F,o,O,e19setlocal indentkeys+==elseif,=endif,=loop,=next,=enduntil,=endwhile20 21let b:undo_indent = "setl ai< inde< indk< si<"22 23if exists("*GetTeraTermIndent")24 finish25endif26 27function! GetTeraTermIndent(lnum)28 let l:prevlnum = prevnonblank(a:lnum-1)29 if l:prevlnum == 030 " top of file31 return 032 endif33 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:previ40 41 if l:prevl =~ '^\s*if\>.*\<then\>'42 " previous line opened a block43 let l:ind += shiftwidth()44 endif45 if l:prevl =~ '^\s*\%(elseif\|else\|do\|until\|while\|for\)\>'46 " previous line opened a block47 let l:ind += shiftwidth()48 endif49 if l:thisl =~ '^\s*\%(elseif\|else\|endif\|enduntil\|endwhile\|loop\|next\)\>'50 " this line closed a block51 let l:ind -= shiftwidth()52 endif53 54 return l:ind55endfunction56 57" vim: ts=8 sw=2 sts=258 