1" Vim indent file 2" Language: git config file 3" Maintainer: Tim Pope <[email protected]> 4" Last Change: 2017 Jun 13 5 6if exists("b:did_indent") 7 finish 8endif 9let b:did_indent = 1 10 11setlocal autoindent 12setlocal indentexpr=GetGitconfigIndent() 13setlocal indentkeys=o,O,*<Return>,0[,],0;,0#,=,!^F 14 15let b:undo_indent = 'setl ai< inde< indk<' 16 17" Only define the function once. 18if exists("*GetGitconfigIndent") 19 finish 20endif 21 22function! GetGitconfigIndent() 23 let sw = shiftwidth() 24 let line = getline(prevnonblank(v:lnum-1)) 25 let cline = getline(v:lnum) 26 if line =~ '\\\@<!\%(\\\\\)*\\$' 27 " odd number of slashes, in a line continuation 28 return 2 * sw 29 elseif cline =~ '^\s*\[' 30 return 0 31 elseif cline =~ '^\s*\a' 32 return sw 33 elseif cline == '' && line =~ '^\[' 34 return sw 35 else 36 return -1 37 endif 38endfunction 39