codekingpro/portable-devtools
114k
1" Vim indent file2" Language: Kotlin3" Maintainer: Alexander Udalov4" URL: https://github.com/udalov/kotlin-vim5" Last Change: 7 November 20216" 2023 Sep 17 by Vim Project (undo_indent)7 8if exists('b:did_indent')9 finish10endif11let b:did_indent = 112 13setlocal cinoptions& cinoptions+=j1,L014setlocal indentexpr=GetKotlinIndent()15setlocal indentkeys=0},0),!^F,o,O,e,<CR>16setlocal autoindent " TODO ?17 18let b:undo_indent = "setlocal autoindent< cinoptions< indentexpr< indentkeys<"19 20" TODO teach it to count bracket balance, etc.21function! GetKotlinIndent()22 if v:lnum == 023 return 024 endif25 26 let prev_num = prevnonblank(v:lnum - 1)27 let prev = getline(prev_num)28 let prev_indent = indent(prev_num)29 let cur = getline(v:lnum)30 31 if cur =~ '^\s*\*'32 return cindent(v:lnum)33 endif34 35 if prev =~ '^\s*\*/'36 let st = prev37 while st > 138 if getline(st) =~ '^\s*/\*'39 break40 endif41 let st = st - 142 endwhile43 return indent(st)44 endif45 46 let prev_open_paren = prev =~ '^.*(\s*$'47 let cur_close_paren = cur =~ '^\s*).*$'48 let prev_open_brace = prev =~ '^.*\({\|->\)\s*$'49 let cur_close_brace = cur =~ '^\s*}.*$'50 51 if prev_open_paren && !cur_close_paren || prev_open_brace && !cur_close_brace52 return prev_indent + shiftwidth()53 endif54 55 if cur_close_paren && !prev_open_paren || cur_close_brace && !prev_open_brace56 return prev_indent - shiftwidth()57 endif58 59 return prev_indent60endfunction61 