1 " See http://www.vim.org/scripts/script.php?script_id=1318
2 " Written by Sartak and doy, feel free to add your own!
4 if !exists('loaded_snippet') || &cp
8 function! RemoveEmptySuperClass()
9 s/^extends '<{}>';\n//e
13 function! RemoveEmptyLine()
18 function! Snippet(abbr, str)
19 if type(a:str) == type([])
20 return Snippet(a:abbr, join(a:str, "\n"))
22 let st = g:snip_start_tag
23 let et = g:snip_end_tag
24 let cd = g:snip_elem_delim
25 let str = substitute(a:str, '<{.\{-}\zs:\ze.\{-}}>', cd, "")
26 let str = substitute(str, '<{', st, "")
27 let str = substitute(str, '}>', et, "")
28 exec 'Snippet '.a:abbr.' '.str
31 function! SnippetFile(filename)
32 let abbr = fnamemodify(a:filename, ':t:r')
33 let str = readfile(a:filename)
34 return Snippet(abbr, str)
37 call Snippet('class', [
38 \"package <{ClassName}>;",
41 \"extends '<{SuperClass:RemoveEmptySuperClass()}>;",
45 \"__PACKAGE__->meta->make_immutable;",
49 call Snippet('role', [
50 \"package <{RoleName}>;",
61 \ "isa => '<{Str}>',",
62 \ "<{options:RemoveEmptyLine()}>",
64 call Snippet('hasl', [
67 \ "isa => '<{Str}>',",
69 \ "<{options:RemoveEmptyLine()}>",
72 \"sub _build_<{attr}> {",
73 \ "my $self = shift;",
78 \ "my $self = shift;",
81 call Snippet('around', [
82 \"around <{name}> => sub {",
83 \ "my $<{next}> = shift;",
84 \ "my $self = shift;",
87 call Snippet('before', [
88 \"before <{name}> => sub {",
89 \ "my $self = shift;",
92 call Snippet('after', [
93 \"after <{name}> => sub {",
94 \ "my $self = shift;",
99 call Snippet('prole', [
100 \"package <{RoleName}>;",
101 \"use MooseX::Role::Parameterized;",
111 \"no MooseX::Role::Parameterized;",
115 "for file in globpath(&rtp, 'snippets/*')
116 "call SnippetFile(file)