summaryrefslogtreecommitdiffstats
path: root/ftplugin
diff options
context:
space:
mode:
Diffstat (limited to 'ftplugin')
-rw-r--r--ftplugin/puppet.vim143
1 files changed, 6 insertions, 137 deletions
diff --git a/ftplugin/puppet.vim b/ftplugin/puppet.vim
index 1b008682..175ac126 100644
--- a/ftplugin/puppet.vim
+++ b/ftplugin/puppet.vim
@@ -1,137 +1,6 @@
-" Vim filetype plugin
-" Language: Puppet
-" Maintainer: Todd Zullinger <tmz@pobox.com>
-" Last Change: 2009 Aug 19
-" vim: set sw=4 sts=4:
-
-if exists("b:did_ftplugin")
- finish
-endif
-let b:did_ftplugin = 1
-
-if !exists("no_plugin_maps") && !exists("no_puppet_maps")
- if !hasmapto("<Plug>AlignRange")
- map <buffer> <LocalLeader>= <Plug>AlignRange
- endif
-endif
-
-noremap <buffer> <unique> <script> <Plug>AlignArrows :call <SID>AlignArrows()<CR>
-noremap <buffer> <unique> <script> <Plug>AlignRange :call <SID>AlignRange()<CR>
-
-iabbrev => =><C-R>=<SID>AlignArrows('=>')<CR>
-iabbrev +> +><C-R>=<SID>AlignArrows('+>')<CR>
-
-if exists('*s:AlignArrows')
- finish
-endif
-
-let s:arrow_re = '[=+]>'
-let s:selector_re = '[=+]>\s*\$.*\s*?\s*{\s*$'
-
-" set keywordprg to 'pi' (alias for puppet describe)
-" this lets K invoke pi for word under cursor
-setlocal keywordprg=puppet\ describe
-
-function! s:AlignArrows(op)
- let cursor_pos = getpos('.')
- let lnum = line('.')
- let line = getline(lnum)
- if line !~ s:arrow_re
- return
- endif
- let pos = stridx(line, a:op)
- let start = lnum
- let end = lnum
- let pnum = lnum - 1
- while 1
- let pline = getline(pnum)
- if pline !~ s:arrow_re || pline =~ s:selector_re
- break
- endif
- let start = pnum
- let pnum -= 1
- endwhile
- let cnum = end
- while 1
- let cline = getline(cnum)
- if cline !~ s:arrow_re ||
- \ (indent(cnum) != indent(cnum+1) && getline(cnum+1) !~ '\s*}')
- break
- endif
- let end = cnum
- let cnum += 1
- endwhile
- call s:AlignSection(start, end)
- let cursor_pos[2] = stridx(getline('.'), a:op) + strlen(a:op) + 1
- call setpos('.', cursor_pos)
- return ''
-endfunction
-
-function! s:AlignRange() range
- call s:AlignSection(a:firstline, a:lastline)
-endfunction
-
-" AlignSection and AlignLine are from the vim wiki:
-" http://vim.wikia.com/wiki/Regex-based_text_alignment
-function! s:AlignSection(start, end)
- let extra = 1
- let sep = s:arrow_re
- let maxpos = 0
- let section = getline(a:start, a:end)
- for line in section
- let pos = match(line, ' *'.sep)
- if maxpos < pos
- let maxpos = pos
- endif
- endfor
- call map(section, 's:AlignLine(v:val, sep, maxpos, extra)')
- call setline(a:start, section)
-endfunction
-
-function! s:AlignLine(line, sep, maxpos, extra)
- let m = matchlist(a:line, '\(.\{-}\) \{-}\('.a:sep.'.*\)')
- if empty(m)
- return a:line
- endif
- let spaces = repeat(' ', a:maxpos - strlen(m[1]) + a:extra)
- return m[1] . spaces . m[2]
-endfunction
-
-" detect if we are in a module and set variables for classpath (autoloader),
-" modulename, modulepath, and classname
-" useful to use in templates
-function! s:SetModuleVars()
-
- " set these to any dirs you want to stop searching on
- " useful to stop vim from spinning disk looking all over for init.pp
- " probably only a macosx problem with /tmp since it's really /private/tmp
- " but it's here if you find vim spinning on new files in certain places
- if !exists("g:puppet_stop_dirs")
- let g:puppet_stop_dirs = '/tmp;/private/tmp'
- endif
-
- " search path for init.pp
- let b:search_path = './**'
- let b:search_path = b:search_path . ';' . getcwd() . ';' . g:puppet_stop_dirs
-
- " find what we assume to be our module dir
- let b:initpp = findfile("init.pp", b:search_path) " find an init.pp up or down
- let b:module_path = fnamemodify(b:initpp, ":p:h:h") " full path to module name
- let b:module_name = fnamemodify(b:module_path, ":t") " just the module name
-
- " sub out the full path to the module with the name and replace slashes with ::
- let b:classpath = fnamemodify(expand("%:p:r"), ':s#' . b:module_path . '/manifests#' . b:module_name . '#'. ":gs?/?::?")
- let b:classname = expand("%:t:r")
-
- " if we don't start with a word we didn't replace the module_path
- " probably b/c we couldn't find an init.pp / not a module
- " so we assume that root of the filename is the class (sane for throwaway
- " manifests
- if b:classpath =~ '^::'
- let b:classpath = b:classname
- endif
-endfunction
-
-if exists("g:puppet_module_detect")
- call s:SetModuleVars()
-endif
+setl ts=2
+setl sts=2
+setl sw=2
+setl et
+setl keywordprg=puppet\ describe\ --providers
+setl iskeyword=-,:,@,48-57,_,192-255