X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=vim%2Fmoose_snippets.vim;h=ae377a6f00ce935f45c85c163919310c1bddd4ba;hb=f26587a1d7f605819399d2eb5bd3cfec0a048a2e;hp=d551e7cf44cd2d2b1857f78ac5cf0ae4ff6407cd;hpb=9f4e6b22ee0f124f702e81f49591b02d62f0c1e2;p=gitmo%2Fmoose-dev-utils.git diff --git a/vim/moose_snippets.vim b/vim/moose_snippets.vim index d551e7c..ae377a6 100644 --- a/vim/moose_snippets.vim +++ b/vim/moose_snippets.vim @@ -6,7 +6,11 @@ if !exists('loaded_snippet') || &cp endif function! RemoveEmptySuperClass() - s/^extends '<{}>';\n//e + if @z == "SuperClass" + s/extends '<{}>';\n\n//e + return "" + endif + return @z endfun @@ -34,11 +38,24 @@ function! SnippetFile(filename) return Snippet(abbr, str) endfunction +function! ParameterizedModule() + let current_file = expand("%") + let t = substitute(current_file, '\.pm', '', '') + let t = substitute(t, 'lib/', '', '') + + " Sadly, this does not work because : is a special character in snippet + " tag names. Any ideas? + "let module = substitute(t, '/', '::', 'g') + let module = substitute(t, '/.*', '', '') + + return '<{' . module . '}>' +endfun + call Snippet('class', [ - \"package <{ClassName}>;", + \"package ".ParameterizedModule().";", \"use Moose;", \"", - \"extends '<{SuperClass:RemoveEmptySuperClass()}>;", + \"extends '<{SuperClass:RemoveEmptySuperClass()}>';", \"", \"<{}>", \"", @@ -46,6 +63,15 @@ call Snippet('class', [ \"no Moose;", \"", \"1;"]) +call Snippet('role', [ + \"package ".ParameterizedModule().";", + \"use Moose::Role;", + \"", + \"<{}>", + \"", + \"no Moose::Role;", + \"", + \"1;"]) call Snippet('has', [ \"has <{attr}> => (", \ "is => '<{rw}>',", @@ -71,7 +97,7 @@ call Snippet('sub', [ \"}"]) call Snippet('around', [ \"around <{name}> => sub {", - \ "my $orig = shift;", + \ "my $<{next}> = shift;", \ "my $self = shift;", \ "<{}>", \"};"]) @@ -86,6 +112,23 @@ call Snippet('after', [ \ "<{}>", \"};"]) +" MooseX support +call Snippet('prole', [ + \"package ".ParameterizedModule().";", + \"use MooseX::Role::Parameterized;", + \"", + \"<{}>", + \"", + \"role {", + \"my $p = shift;", + \"", + \"<{}>", + \"};", + \"", + \"no MooseX::Role::Parameterized;", + \"", + \"1;"]) + "for file in globpath(&rtp, 'snippets/*') "call SnippetFile(file) "endfor