diff --git a/autoload/rails.vim b/autoload/rails.vim index ca360759..51a2bc21 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -676,7 +676,7 @@ function! s:readable_calculate_file_type() dict abort let r = "metal" elseif f =~ '\') if class == "ActiveResource::Base" @@ -694,12 +694,14 @@ function! s:readable_calculate_file_type() dict abort else let r = "model" endif - elseif f =~ '\.*\.' - let r = "view-layout-" . e - elseif f =~ '\<\%(app/views\|components\)/.*/_\k\+\.\k\+\%(\.\k\+\)\=$' - let r = "view-partial-" . e - elseif f =~ '\.*\.' || f =~ '\.*\.' + let r = "view-layout-" . e + elseif f =~ '\<\%(app/views\|components\)/.*/_\k\+\.\k\+\%(\.\k\+\)\=$' + let r = "view-partial-" . e + elseif f =~ '\.*\.' || f =~ '\!\@!' if !buffer.type_name('spec-model') syn match rubyRailsTestControllerMethod '\.\@' - syn keyword rubyRailsTestControllerMethod integrate_views + syn keyword rubyRailsTestControllerMethod integrate_views render_views syn keyword rubyRailsMethod params request response session flash syn keyword rubyRailsMethod polymorphic_path polymorphic_url endif @@ -3699,6 +3738,9 @@ function! s:BufSyntax() set isk+=$ exe "syn keyword javascriptRailsFunction ".s:javascript_functions + elseif &syntax == "scss" || &syntax == "sass" + syn match sassFunction "\<\%(\%(asset\|image\|font\|video\|audio\|javascript\|stylesheet\)-\%(url\|path\)\)\>(\@=" contained + syn match sassFunction "\<\asset-data-url\>(\@=" contained endif endif call s:HiDefaults() @@ -4536,9 +4578,7 @@ augroup railsPluginAuto autocmd BufWritePost */tasks/**.rake call rails#cache_clear("rake_tasks") autocmd BufWritePost */generators/** call rails#cache_clear("generators") autocmd FileType * if exists("b:rails_root") | call s:BufSettings() | endif - autocmd Syntax ruby,eruby,yaml,haml,javascript,coffee,railslog if exists("b:rails_root") | call s:BufSyntax() | endif - autocmd QuickFixCmdPre *make* call s:push_chdir() - autocmd QuickFixCmdPost *make* call s:pop_command() + autocmd Syntax ruby,eruby,yaml,haml,javascript,coffee,railslog,sass,scss if exists("b:rails_root") | call s:BufSyntax() | endif augroup END " }}}1 diff --git a/doc/rails.txt b/doc/rails.txt index 6dbbb1e2..57013161 100644 --- a/doc/rails.txt +++ b/doc/rails.txt @@ -271,6 +271,7 @@ itself!). :Rmodel |rails-:Rmodel| :Robserver |rails-:Robserver| :Rplugin |rails-:Rplugin| +:Rschema |rails-:Rschema| :Rspec |rails-:Rspec| :Rstylesheet |rails-:Rstylesheet| :Rtask |rails-:Rtask| @@ -378,6 +379,10 @@ itself!). command is only defined if there is a spec folder in the root of the application. + *rails-:Rschema* +:Rschema [{table}] Edit the schema and optionally jump to the specified + table. + *rails-:Rstylesheet* :Rstylesheet [{name}] Edit the stylesheet for the specified name or current controller. Also supports Sass and SCSS. diff --git a/plugin/rails.vim b/plugin/rails.vim index 2dd17f76..15e183ab 100644 --- a/plugin/rails.vim +++ b/plugin/rails.vim @@ -79,6 +79,9 @@ function! s:escvar(r) endfunction function! s:Detect(filename) + if exists('b:rails_root') + return s:BufInit(b:rails_root) + endif let fn = substitute(fnamemodify(a:filename,":p"),'\c^file://','','') let sep = matchstr(fn,'^[^\\/]\{3,\}\zs[\\/]') if sep != "" @@ -107,7 +110,7 @@ function! s:Detect(filename) return s:BufInit(fn) endif let ofn = fn - let fn = fnamemodify(ofn,':s?\(.*\)[\/]\(app\|config\|db\|doc\|features\|lib\|log\|public\|script\|spec\|stories\|test\|tmp\|vendor\)\($\|[\/].*$\)?\1?') + let fn = fnamemodify(ofn,':s?\(.*\)[\/]\(app\|config\|db\|doc\|extras\|features\|lib\|log\|public\|script\|spec\|stories\|test\|tmp\|vendor\)\($\|[\/].*$\)?\1?') endwhile return 0 endfunction