/usr/share/vim/vim80/indent/config.vim is in vim-runtime 2:8.0.1453-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | " Vim indent file
" Language: Autoconf configure.{ac,in} file
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
" Latest Revision: 2006-12-20
" TODO: how about nested [()]'s in one line
" what's wrong with '\\\@!'?
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
runtime! indent/sh.vim " will set b:did_indent
setlocal indentexpr=GetConfigIndent()
setlocal indentkeys=!^F,o,O,=then,=do,=else,=elif,=esac,=fi,=fin,=fil,=done
setlocal nosmartindent
" Only define the function once.
if exists("*GetConfigIndent")
finish
endif
" get the offset (indent) of the end of the match of 'regexp' in 'line'
function s:GetOffsetOf(line, regexp)
let end = matchend(a:line, a:regexp)
let width = 0
let i = 0
while i < end
if a:line[i] != "\t"
let width = width + 1
else
let width = width + &ts - (width % &ts)
endif
let i = i + 1
endwhile
return width
endfunction
function GetConfigIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
" Hit the start of the file, use zero indent.
if lnum == 0
return 0
endif
" where to put this
let ind = GetShIndent()
let line = getline(lnum)
" if previous line has unmatched, unescaped opening parentheses,
" indent to its position. TODO: not failsafe if multiple ('s
if line =~ '\\\@<!([^)]*$'
let ind = s:GetOffsetOf(line, '\\\@!(')
endif
" if previous line has unmatched opening bracket,
" indent to its position. TODO: same as above
if line =~ '\[[^]]*$'
let ind = s:GetOffsetOf(line, '\[')
endif
" if previous line had an unmatched closing parantheses,
" indent to the matching opening parantheses
if line =~ '[^(]\+\\\@<!)$'
call search(')', 'bW')
let lnum = searchpair('\\\@<!(', '', ')', 'bWn')
let ind = indent(lnum)
endif
" if previous line had an unmatched closing bracket,
" indent to the matching opening bracket
if line =~ '[^[]\+]$'
call search(']', 'bW')
let lnum = searchpair('\[', '', ']', 'bWn')
let ind = indent(lnum)
endif
return ind
endfunction
|