@@ -1576,15 +1576,21 @@ function! s:Complete_script(ArgLead,CmdLine,P)
15761576 elseif cmd = ~# ' ^\%(generate\|destroy\)\s\+' .a: ArgLead .' $'
15771577 return s: completion_filter (rails#app ().generators (),a: ArgLead )
15781578 elseif cmd = ~# ' ^\%(generate\|destroy\)\s\+\w\+\s\+' .a: ArgLead .' $'
1579- let target = matchstr (cmd,' ^\w\+\s\+\zs\w\+\ze\s\+' )
1580- if target = ~# ' ^\%(\w*_\)\= controller$'
1579+ let target = matchstr (cmd,' ^\w\+\s\+\%(\w\+:\)\=\ zs\w\+\ze\s\+' )
1580+ if target = ~# ' ^\w* controller$'
15811581 return filter (s: controllerList (a: ArgLead ," " ," " ),' v:val !=# "application"' )
1582- elseif target = ~# ' ^\%(\w*_\)\=model$ ' || target = ~ # ' ^scaffold\%(_resource\)\=$ ' || target == # ' mailer '
1583- return s: modelList ( a: ArgLead , " " ," " )
1584- elseif target == # ' migration ' || target == # ' session_migration '
1585- return s: migrationList (a: ArgLead ," " ," " )
1582+ elseif target == # ' generator '
1583+ return s: completion_filter ( map ( rails#app (). relglob ( ' lib/generators/ ' , ' * ' ), ' s:sub(v:val,"/$ ","") ' ) )
1584+ elseif target == # ' helper '
1585+ return s: helperList (a: ArgLead ," " ," " )
15861586 elseif target == # ' integration_test' || target == # ' integration_spec' || target == # ' feature'
15871587 return s: integrationtestList (a: ArgLead ," " ," " )
1588+ elseif target == # ' metal'
1589+ return s: metalList (a: ArgLead ," " ," " )
1590+ elseif target == # ' migration' || target == # ' session_migration'
1591+ return s: migrationList (a: ArgLead ," " ," " )
1592+ elseif target = ~# ' ^\w*\%(model\|resource\)$' || target = ~# ' \w*scaffold\%(_controller\)\=$' || target == # ' mailer'
1593+ return s: modelList (a: ArgLead ," " ," " )
15881594 elseif target == # ' observer'
15891595 let observers = s: observerList (" " ," " ," " )
15901596 let models = s: modelList (" " ," " ," " )
@@ -1593,8 +1599,6 @@ function! s:Complete_script(ArgLead,CmdLine,P)
15931599 endif
15941600 call filter (models,' index(observers,v:val) < 0' )
15951601 return s: completion_filter (observers + models,a: ArgLead )
1596- elseif target == # ' web_service'
1597- return s: apiList (a: ArgLead ," " ," " )
15981602 else
15991603 return []
16001604 endif
0 commit comments