Mercurial > index.cgi > dotfiles
annotate .vim/ftplugin/puppet.vim @ 176:5025fe31c359
csesbh -> csesbh2 for screenrc
author | Steve Huston <huston@astro.princeton.edu> |
---|---|
date | Tue, 03 Mar 2020 10:45:16 -0500 |
parents | 07395fbde025 |
children |
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 |