From 65c8d1a52c2bebfae872bea85f9a71aaeabdf0e6 Mon Sep 17 00:00:00 2001 From: Samantha John Date: Fri, 29 Jul 2011 15:04:37 +0000 Subject: [PATCH 01/12] Make :AV work with javascript in public/javascript and spec/javascript --- autoload/rails.vim | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/autoload/rails.vim b/autoload/rails.vim index ca360759..328e0dcd 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -740,6 +740,10 @@ function! s:readable_calculate_file_type() dict abort let r = "log" elseif e == "css" || e =~ "s[ac]ss" || e == "less" let r = "stylesheet-".e + elseif e == "js" && !(f =~ 'spec') + let r = "javascript" + elseif e == "js" && f =~ 'spec' + let r = "javascript_spec" elseif e == "js" let r = "javascript" elseif e == "coffee" @@ -3073,10 +3077,10 @@ function! s:readable_related(...) dict abort let migration = "db/migrate/".get(candidates,0,migrations[0]).".rb" endif return migration . (exists('l:lastmethod') && lastmethod != '' ? '#'.lastmethod : '') - elseif f =~ '\ Date: Fri, 9 Dec 2011 12:39:58 -0500 Subject: [PATCH 02/12] Add support for cucumber alternate files. --- autoload/rails.vim | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/autoload/rails.vim b/autoload/rails.vim index 328e0dcd..41a4f010 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -3081,6 +3081,13 @@ function! s:readable_related(...) dict abort return s:sub(s:sub(f, 'spec/javascripts', 'public/javascripts'), '_spec.js', '.js')."\n" elseif self.type_name('javascript') return s:sub(s:sub(f, 'public/javascripts', 'spec/javascripts'), '.js', '_spec.js')."\n" + + " Adds support for cucumber alternate files + elseif self.type_name('cucumber-feature') + return s:sub(s:sub(f, 'features', 'features/step_definitions'), '.feature', '_steps.rb')."\n" + elseif self.type_name('cucumber-steps') + return s:sub(s:sub(f, 'features/step_definitions', 'features'), '_steps.rb', '.feature')."\n" + elseif self.type_name('db/schema') return self.app().migration('') elseif self.type_name('view') From 236b562d4694414df789dd210103dd86eb7ed2ba Mon Sep 17 00:00:00 2001 From: Adam Berlin & Jon Berger Date: Fri, 9 Dec 2011 13:36:32 -0500 Subject: [PATCH 03/12] Ensure that app/models matches ruby files. - allows public/javascripts/app/models/* to match alternate files. --- autoload/rails.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/rails.vim b/autoload/rails.vim index 41a4f010..33f5ee77 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" From 2c27cb3095d8ed604b979fa8ccab7e1f8b952b26 Mon Sep 17 00:00:00 2001 From: Adam Berlin & Jon Berger Date: Fri, 9 Dec 2011 13:37:16 -0500 Subject: [PATCH 04/12] Ensure that app/views match template files in the rails root. - allows public/javascripts/app/views/* to match alternate files. --- autoload/rails.vim | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/autoload/rails.vim b/autoload/rails.vim index 33f5ee77..d21af4f5 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -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 =~ '\ Date: Tue, 4 Oct 2011 20:38:27 -0400 Subject: [PATCH 05/12] Short circuit detection if b:rails_root is set --- plugin/rails.vim | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugin/rails.vim b/plugin/rails.vim index 2dd17f76..a108a4d2 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 != "" From 0944b92f292bedf06f457202c21eb5849d0470ef Mon Sep 17 00:00:00 2001 From: Jonathan del Strother Date: Fri, 14 Oct 2011 10:32:27 +0100 Subject: [PATCH 06/12] Add SASS syntax highlighting for asset pipeline helper methods --- autoload/rails.vim | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/autoload/rails.vim b/autoload/rails.vim index d21af4f5..a2541cbf 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -3712,6 +3712,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() @@ -4549,7 +4552,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 Syntax ruby,eruby,yaml,haml,javascript,coffee,railslog,sass,scss if exists("b:rails_root") | call s:BufSyntax() | endif autocmd QuickFixCmdPre *make* call s:push_chdir() autocmd QuickFixCmdPost *make* call s:pop_command() augroup END From 29927ad531b2b267516cef706ee0cb1d7da154d5 Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Tue, 1 Nov 2011 18:07:29 -0400 Subject: [PATCH 07/12] Highlight render_views from RSpec Closes #127. --- autoload/rails.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/autoload/rails.vim b/autoload/rails.vim index a2541cbf..1a71e0f3 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -3613,7 +3613,7 @@ function! s:BufSyntax() syn match rubyRailsTestMethod '\.\@!\@!' 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 From 031b66d50c6b90cb1bbadb5f7099a8357aa97302 Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Mon, 7 Nov 2011 01:02:51 -0500 Subject: [PATCH 08/12] Kill QuickFix autocmd magic This dated back to the days when :make was an interface to :Rake. No more! Closes #124. --- autoload/rails.vim | 2 -- 1 file changed, 2 deletions(-) diff --git a/autoload/rails.vim b/autoload/rails.vim index 1a71e0f3..9f98ff69 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -4553,8 +4553,6 @@ augroup railsPluginAuto 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,sass,scss if exists("b:rails_root") | call s:BufSyntax() | endif - autocmd QuickFixCmdPre *make* call s:push_chdir() - autocmd QuickFixCmdPost *make* call s:pop_command() augroup END " }}}1 From 7e5c5a12bf64ac52265cb097aa9d80e025bc5a50 Mon Sep 17 00:00:00 2001 From: Tim Pope Date: Sun, 13 Nov 2011 02:49:31 -0500 Subject: [PATCH 09/12] Detect extras/ for Igor Vinokurov --- plugin/rails.vim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin/rails.vim b/plugin/rails.vim index a108a4d2..15e183ab 100644 --- a/plugin/rails.vim +++ b/plugin/rails.vim @@ -110,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 From bd9ebbe9865c2881ff8dbc841d34b64858cd7262 Mon Sep 17 00:00:00 2001 From: Travis Jeffery Date: Tue, 22 Nov 2011 00:22:14 -0500 Subject: [PATCH 10/12] Add :Rschema navigation command --- autoload/rails.vim | 18 ++++++++++++++++++ doc/rails.txt | 5 +++++ 2 files changed, 23 insertions(+) diff --git a/autoload/rails.vim b/autoload/rails.vim index 9f98ff69..60468030 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -2138,6 +2138,7 @@ function! s:BufFinderCommands() call s:addfilecmds("controller") call s:addfilecmds("mailer") call s:addfilecmds("migration") + call s:addfilecmds("schema") call s:addfilecmds("observer") call s:addfilecmds("helper") call s:addfilecmds("layout") @@ -2293,6 +2294,14 @@ function! s:migrationList(A,L,P) endif endfunction +function! s:schemaList(A,L,P) + let tables = s:readfile(rails#app().path('db/schema.rb')) + let table_re = '^\s\+create_table\s["'':]\zs[^"'',]*\ze' + call map(tables,'matchstr(v:val, table_re)') + call filter(tables,'strlen(v:val)') + return s:autocamelize(tables, a:A) +endfunction + function! s:unittestList(A,L,P) let found = [] if rails#app().has('test') @@ -2522,6 +2531,15 @@ function! s:migrationEdit(cmd,...) endif endfunction +function! s:schemaEdit(cmd,...) + let cmd = s:findcmdfor(a:cmd) + let schema = 'db/'.s:environment().'_structure.sql' + if rails#app().has_file('db/schema.rb') || !rails#app().has_file(schema) + let schema = 'db/schema.rb' + endif + call s:findedit(cmd,schema.(a:0 ? '#'.a:1 : '')) +endfunction + function! s:fixturesEdit(cmd,...) if a:0 let c = rails#underscore(a: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. From 81f12c418afa7c55c254a5a9fdc2bf3d259e7ddd Mon Sep 17 00:00:00 2001 From: Aldis Berjoza Date: Fri, 25 Nov 2011 23:04:33 +0200 Subject: [PATCH 11/12] Use exctags for ctags on FreeBSD --- autoload/rails.vim | 2 ++ 1 file changed, 2 insertions(+) diff --git a/autoload/rails.vim b/autoload/rails.vim index 60468030..01c731e3 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -1036,6 +1036,8 @@ function! s:app_tags_command() dict let cmd = "exuberant-ctags" elseif executable("ctags-exuberant") let cmd = "ctags-exuberant" + elseif executable("exctags") + let cmd = "exctags" elseif executable("ctags") let cmd = "ctags" elseif executable("ctags.exe") From 283228cd87da524c17b3a27eae458381c165fd1e Mon Sep 17 00:00:00 2001 From: Alex Kwiatkowski Date: Fri, 29 Jun 2012 22:24:37 -0400 Subject: [PATCH 12/12] Fix :AV for javascript in rails 3.1+ --- autoload/rails.vim | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/autoload/rails.vim b/autoload/rails.vim index 01c731e3..51a2bc21 100644 --- a/autoload/rails.vim +++ b/autoload/rails.vim @@ -3100,9 +3100,15 @@ function! s:readable_related(...) dict abort endif return migration . (exists('l:lastmethod') && lastmethod != '' ? '#'.lastmethod : '') elseif self.type_name('javascript_spec') - return s:sub(s:sub(f, 'spec/javascripts', 'public/javascripts'), '_spec.js', '.js')."\n" + return s:sub(s:sub(f, 'spec/javascripts', 'app/assets/javascripts'), '_spec.js', '.js')."\n" elseif self.type_name('javascript') - return s:sub(s:sub(f, 'public/javascripts', 'spec/javascripts'), '.js', '_spec.js')."\n" + if f =~ 'public/javascripts' + let to_replace = 'public/javascripts' + else + let to_replace = 'app/assets/javascripts' + endif + let replace_with = 'spec/javascripts' + return s:sub(s:sub(f, to_replace, replace_with), '.js', '_spec.js')."\n" " Adds support for cucumber alternate files elseif self.type_name('cucumber-feature')