X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=vim%2Fmoose_snippets.vim;h=a7484cedca4d11fbffb0e471e4c504a13c048d55;hb=bf6996ff2a1bd65a412d13cdd477a0e52b4642cb;hp=ae377a6f00ce935f45c85c163919310c1bddd4ba;hpb=f26587a1d7f605819399d2eb5bd3cfec0a048a2e;p=gitmo%2Fmoose-dev-utils.git diff --git a/vim/moose_snippets.vim b/vim/moose_snippets.vim index ae377a6..a7484ce 100644 --- a/vim/moose_snippets.vim +++ b/vim/moose_snippets.vim @@ -5,18 +5,25 @@ if !exists('loaded_snippet') || &cp finish endif -function! RemoveEmptySuperClass() - if @z == "SuperClass" - s/extends '<{}>';\n\n//e - return "" +function! RemoveUnchangedLine() + if match(getline('.'), "<{}>") >= 0 + normal! dd + return '' + else + return @z endif - - return @z endfun -function! RemoveEmptyLine() - s/^\s*<{}>\s*\n//e - return @z +function! RemoveUnchangedLineSemicolon() + if match(getline('.'), "<{}>") >= 0 + normal! ddkA; + normal! o + return '' + else + normal! A; + "normal! o " we can't actually change what line we're on :/ + return @z + endif endfun function! Snippet(abbr, str) @@ -55,7 +62,7 @@ call Snippet('class', [ \"package ".ParameterizedModule().";", \"use Moose;", \"", - \"extends '<{SuperClass:RemoveEmptySuperClass()}>';", + \"extends '<{SuperClass:RemoveUnchangedLine()}>';", \"", \"<{}>", \"", @@ -76,14 +83,14 @@ call Snippet('has', [ \"has <{attr}> => (", \ "is => '<{rw}>',", \ "isa => '<{Str}>',", - \ "<{options:RemoveEmptyLine()}>", + \ "<{options:RemoveUnchangedLine()}>", \");"]) call Snippet('hasl', [ \"has <{attr}> => (", \ "is => '<{rw}>',", \ "isa => '<{Str}>',", \ "lazy_build => 1,", - \ "<{options:RemoveEmptyLine()}>", + \ "<{options:RemoveUnchangedLine()}>", \");", \"", \"sub _build_<{attr}> {", @@ -93,6 +100,7 @@ call Snippet('hasl', [ call Snippet('sub', [ \"sub <{name}> {", \ "my $self = shift;", + \ "my (<{arg:RemoveUnchangedLine()}>) = @_;", \ "<{}>", \"}"]) call Snippet('around', [ @@ -111,6 +119,12 @@ call Snippet('after', [ \ "my $self = shift;", \ "<{}>", \"};"]) +call Snippet('subtype', [ + \"subtype '<{name}>'", + \ "=> as '<{supertype}>'", + \ "=> where { <{predicate:RemoveUnchangedLine()}> }", + \ "=> message { \"<{message:RemoveUnchangedLineSemicolon()}>\" }", + \""]) " MooseX support call Snippet('prole', [