diff .vim/indent/puppet.vim @ 109:07395fbde025

Adding puppet plugin: * Version cd0c2ed92ba1 from hg clone git+https://github.com/puppetlabs/puppet-syntax-vim.git * Added line to vimrc to load plugin properly
author Steve Huston <huston@astro.princeton.edu>
date Sat, 26 Apr 2014 17:57:50 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.vim/indent/puppet.vim	Sat Apr 26 17:57:50 2014 -0400
@@ -0,0 +1,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