@@ -2800,7 +2800,7 @@ endfunc
2800
2800
2801
2801
let s: view_types = split (' rhtml,erb,rxml,builder,rjs,haml' ,' ,' )
2802
2802
2803
- function ! s: readable_resolve_view (name,... ) dict abort
2803
+ function ! s: readable_resolve_view (name, ... ) dict abort
2804
2804
let name = a: name
2805
2805
let pre = ' app/views/'
2806
2806
if name !~# ' /'
@@ -2809,7 +2809,9 @@ function! s:readable_resolve_view(name,...) dict abort
2809
2809
let name = controller.' /' .name
2810
2810
endif
2811
2811
endif
2812
- if name = ~# ' \.\w\+\.\w\+$' || name = ~# ' \.\%(' .join (s: view_types ,' \|' ).' \)$'
2812
+ if name = ~# ' /' && ! self .app ().has_path (fnamemodify (' app/views/' .name, ' :h' ))
2813
+ return ' '
2814
+ elseif name = ~# ' \.\w\+\.\w\+$' || name = ~# ' \.\%(' .join (s: view_types ,' \|' ).' \)$'
2813
2815
return pre .name
2814
2816
else
2815
2817
for format in [' .' .self .format (a: 0 ? a: 1 : 0 ), ' ' ]
@@ -2846,7 +2848,7 @@ function! s:findlayout(name)
2846
2848
return rails#buffer ().resolve_layout (a: name , line (' .' ))
2847
2849
endfunction
2848
2850
2849
- function ! s: viewEdit (cmd,... )
2851
+ function ! s: viewEdit (cmd, ... ) abort
2850
2852
if a: 0 && a: 1 = ~ ' ^[^!#:]'
2851
2853
let view = matchstr (a: 1 ,' [^!#:]*' )
2852
2854
elseif rails#buffer ().type_name (' controller' ,' mailer' )
@@ -2866,12 +2868,16 @@ function! s:viewEdit(cmd,...)
2866
2868
endif
2867
2869
let found = rails#buffer ().resolve_view (view , line (' .' ))
2868
2870
let djump = a: 0 ? matchstr (a: 1 ,' !.*\|#\zs.*\|:\zs\d*\ze\%(:in\)\=$' ) : ' '
2869
- if found != ' '
2871
+ if ! empty (found)
2870
2872
call s: edit (a: cmd ,found)
2871
2873
call s: djump (djump )
2872
2874
return ' '
2873
2875
elseif a: 0 && a: 1 = ~# ' !'
2874
- call s: edit (a: cmd ,' app/views/' .view )
2876
+ let file = ' app/views/' .view
2877
+ if ! rails#app ().has_path (fnamemodify (file , ' :h' ))
2878
+ call mkdir (rails#app ().path (fnamemodify (file , ' :h' )), ' p' )
2879
+ endif
2880
+ call s: edit (a: cmd , file )
2875
2881
call s: djump (djump )
2876
2882
return ' '
2877
2883
else
0 commit comments