/usr/share/vim/addons/indent/puppet.vim is in vim-puppet 3.8.5-2.
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 | " Vim indent file
" Language: Puppet
" Maintainer: Todd Zullinger <tmz@pobox.com>
" Last Change: 2009 Aug 19
" vim: set sw=4 sts=4:
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal autoindent smartindent
setlocal indentexpr=GetPuppetIndent()
setlocal indentkeys+=0],0)
if exists("*GetPuppetIndent")
finish
endif
" Check if a line is part of an include 'block', e.g.:
" include foo,
" bar,
" baz
function! s:PartOfInclude(lnum)
let lnum = a:lnum
while lnum
let lnum = lnum - 1
let line = getline(lnum)
if line !~ ',$'
break
endif
if line =~ '^\s*include\s\+[^,]\+,$'
return 1
endif
endwhile
return 0
endfunction
function! s:OpenBrace(lnum)
call cursor(a:lnum, 1)
return searchpair('{\|\[\|(', '', '}\|\]\|)', 'nbW')
endfunction
function! GetPuppetIndent()
let pnum = prevnonblank(v:lnum - 1)
if pnum == 0
return 0
endif
let line = getline(v:lnum)
let pline = getline(pnum)
let ind = indent(pnum)
if pline =~ '^\s*#'
return ind
endif
if pline =~ '\({\|\[\|(\|:\)$'
let ind += &sw
elseif pline =~ ';$' && pline !~ '[^:]\+:.*[=+]>.*'
let ind -= &sw
elseif pline =~ '^\s*include\s\+.*,$'
let ind += &sw
endif
if pline !~ ',$' && s:PartOfInclude(pnum)
let ind -= &sw
endif
" Match } }, }; ] ]: )
if line =~ '^\s*\(}\(,\|;\)\?$\|]:\?$\|)\)'
let ind = indent(s:OpenBrace(v:lnum))
endif
return ind
endfunction
|