annotate .vim/ftplugin/puppet.vim @ 168:282c9df47923

Long live TomeNET (and the mud)
author Steve Huston <huston@srhuston.net>
date Mon, 29 Oct 2018 10:40:45 -0400
parents 07395fbde025
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
109
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
1 " Vim filetype plugin
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
2 " Language: Puppet
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
3 " Maintainer: Todd Zullinger <tmz@pobox.com>
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
4 " Last Change: 2009 Aug 19
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
5 " vim: set sw=4 sts=4:
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
6
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
7 if exists("b:did_ftplugin")
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
8 finish
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
9 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
10 let b:did_ftplugin = 1
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
11
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
12 if !exists("no_plugin_maps") && !exists("no_puppet_maps")
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
13 if !hasmapto("<Plug>AlignRange")
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
14 map <buffer> <LocalLeader>= <Plug>AlignRange
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
15 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
16 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
17
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
18 noremap <buffer> <unique> <script> <Plug>AlignArrows :call <SID>AlignArrows()<CR>
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
19 noremap <buffer> <unique> <script> <Plug>AlignRange :call <SID>AlignRange()<CR>
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
20
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
21 iabbrev => =><C-R>=<SID>AlignArrows('=>')<CR>
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
22 iabbrev +> +><C-R>=<SID>AlignArrows('+>')<CR>
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
23
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
24 if exists('*s:AlignArrows')
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
25 finish
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
26 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
27
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
28 let s:arrow_re = '[=+]>'
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
29 let s:selector_re = '[=+]>\s*\$.*\s*?\s*{\s*$'
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
30
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
31 function! s:AlignArrows(op)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
32 let cursor_pos = getpos('.')
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
33 let lnum = line('.')
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
34 let line = getline(lnum)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
35 if line !~ s:arrow_re
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
36 return
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
37 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
38 let pos = stridx(line, a:op)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
39 let start = lnum
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
40 let end = lnum
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
41 let pnum = lnum - 1
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
42 while 1
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
43 let pline = getline(pnum)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
44 if pline !~ s:arrow_re || pline =~ s:selector_re
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
45 break
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
46 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
47 let start = pnum
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
48 let pnum -= 1
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
49 endwhile
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
50 let cnum = end
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
51 while 1
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
52 let cline = getline(cnum)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
53 if cline !~ s:arrow_re ||
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
54 \ (indent(cnum) != indent(cnum+1) && getline(cnum+1) !~ '\s*}')
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
55 break
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
56 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
57 let end = cnum
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
58 let cnum += 1
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
59 endwhile
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
60 call s:AlignSection(start, end)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
61 let cursor_pos[2] = stridx(getline('.'), a:op) + strlen(a:op) + 1
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
62 call setpos('.', cursor_pos)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
63 return ''
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
64 endfunction
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
65
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
66 function! s:AlignRange() range
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
67 call s:AlignSection(a:firstline, a:lastline)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
68 endfunction
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
69
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
70 " AlignSection and AlignLine are from the vim wiki:
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
71 " http://vim.wikia.com/wiki/Regex-based_text_alignment
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
72 function! s:AlignSection(start, end)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
73 let extra = 1
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
74 let sep = s:arrow_re
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
75 let maxpos = 0
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
76 let section = getline(a:start, a:end)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
77 for line in section
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
78 let pos = match(line, ' *'.sep)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
79 if maxpos < pos
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
80 let maxpos = pos
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
81 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
82 endfor
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
83 call map(section, 's:AlignLine(v:val, sep, maxpos, extra)')
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
84 call setline(a:start, section)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
85 endfunction
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
86
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
87 function! s:AlignLine(line, sep, maxpos, extra)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
88 let m = matchlist(a:line, '\(.\{-}\) \{-}\('.a:sep.'.*\)')
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
89 if empty(m)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
90 return a:line
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
91 endif
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
92 let spaces = repeat(' ', a:maxpos - strlen(m[1]) + a:extra)
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
93 return m[1] . spaces . m[2]
07395fbde025 Adding puppet plugin:
Steve Huston <huston@astro.princeton.edu>
parents:
diff changeset
94 endfunction