utils 0.0.37 → 0.0.38
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/probe +12 -7
- data/lib/utils/config/vim/autoload/rails.vim +201 -364
- data/lib/utils/config/vim/plugin/rails.vim +6 -4
- data/lib/utils/editor.rb +8 -8
- data/lib/utils/version.rb +1 -1
- data/utils.gemspec +3 -3
- metadata +38 -24
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.38
|
data/bin/probe
CHANGED
@@ -29,36 +29,41 @@ end
|
|
29
29
|
|
30
30
|
$config = Utils::Config::ConfigFile.new
|
31
31
|
$config.parse_config_file File.expand_path('~/.utilsrc')
|
32
|
-
|
32
|
+
testrunner_args = []
|
33
|
+
if i = ARGV.index('--')
|
34
|
+
testrunner_args.concat ARGV[(i + 1)..-1]
|
35
|
+
ARGV[i..-1] = []
|
36
|
+
end
|
37
|
+
$opt = go 't:n:h-'
|
33
38
|
filename = ARGV.shift or fail "require filename or filename:line_number as first argument"
|
34
39
|
$opt['h'] and usage
|
35
40
|
case ($opt['t'] || $config.probe.test_framework).to_sym
|
36
41
|
when :rspec
|
37
42
|
if line_number = $opt['n']
|
38
|
-
cmd "rspec", '-I', $config.probe.include_dirs_argument, '-l', line_number ,
|
43
|
+
cmd "rspec", '-I', $config.probe.include_dirs_argument, '-l', line_number, filename, *testrunner_args
|
39
44
|
elsif filename =~ /^\s*([^:]+):(\d+)/
|
40
45
|
filename, line_number = $1, $2
|
41
46
|
puts "Running test at #{filename}:#{line_number}"
|
42
|
-
cmd "rspec", '-I', $config.probe.include_dirs_argument, '-l', line_number ,
|
47
|
+
cmd "rspec", '-I', $config.probe.include_dirs_argument, '-l', line_number, filename, *testrunner_args
|
43
48
|
else
|
44
49
|
puts "Running ALL tests in #{filename}"
|
45
|
-
cmd "rspec", '-I', $config.probe.include_dirs_argument, filename
|
50
|
+
cmd "rspec", '-I', $config.probe.include_dirs_argument, filename, *testrunner_args
|
46
51
|
end
|
47
52
|
when :'test-unit'
|
48
53
|
if testname = $opt['n']
|
49
|
-
cmd "testrb", '-I', $config.probe.include_dirs_argument, '-n', testname ,
|
54
|
+
cmd "testrb", '-I', $config.probe.include_dirs_argument, '-n', testname, filename, *testrunner_args
|
50
55
|
elsif filename =~ /^\s*([^:]+):(\d+)/
|
51
56
|
filename, line_number = $1, $2
|
52
57
|
lf = Tins::LinesFile.for_filename filename, line_number.to_i
|
53
58
|
if testname = lf.match_backward(/def\s+(\S+?)(?:\(|\s*$)/).full?(:first)
|
54
59
|
puts "Running test #{testname.inspect} at #{filename}:#{lf.line_number}"
|
55
|
-
cmd "testrb", '-I', $config.probe.include_dirs_argument, '-n', testname ,
|
60
|
+
cmd "testrb", '-I', $config.probe.include_dirs_argument, '-n', testname, filename, *testrunner_args
|
56
61
|
else
|
57
62
|
warn "no test found before line #{line_number}"
|
58
63
|
exit 1
|
59
64
|
end
|
60
65
|
else
|
61
66
|
puts "Running ALL tests in #{filename}"
|
62
|
-
cmd "testrb", '-I', $config.probe.include_dirs_argument, filename
|
67
|
+
cmd "testrb", '-I', $config.probe.include_dirs_argument, filename, *testrunner_args
|
63
68
|
end
|
64
69
|
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
" autoload/rails.vim
|
2
|
-
" Author: Tim Pope <
|
2
|
+
" Author: Tim Pope <http://tpo.pe/>
|
3
3
|
|
4
4
|
" Install this file as autoload/rails.vim.
|
5
5
|
|
6
6
|
if exists('g:autoloaded_rails') || &cp
|
7
7
|
finish
|
8
8
|
endif
|
9
|
-
let g:autoloaded_rails = '4.
|
9
|
+
let g:autoloaded_rails = '4.4'
|
10
10
|
|
11
11
|
let s:cpo_save = &cpo
|
12
12
|
set cpo&vim
|
@@ -44,6 +44,20 @@ function! s:compact(ary)
|
|
44
44
|
return s:sub(s:sub(s:gsub(a:ary,'\n\n+','\n'),'\n$',''),'^\n','')
|
45
45
|
endfunction
|
46
46
|
|
47
|
+
function! s:uniq(list)
|
48
|
+
let seen = {}
|
49
|
+
let i = 0
|
50
|
+
while i < len(a:list)
|
51
|
+
if has_key(seen,a:list[i])
|
52
|
+
call remove(a:list, i)
|
53
|
+
else
|
54
|
+
let seen[a:list[i]] = 1
|
55
|
+
let i += 1
|
56
|
+
endif
|
57
|
+
endwhile
|
58
|
+
return a:list
|
59
|
+
endfunction
|
60
|
+
|
47
61
|
function! s:scrub(collection,item)
|
48
62
|
" Removes item from a newline separated collection
|
49
63
|
let col = "\n" . a:collection
|
@@ -302,10 +316,10 @@ endfunction
|
|
302
316
|
|
303
317
|
call s:add_methods('readable',['end_of','last_opening_line','last_method_line','last_method','last_format','define_pattern'])
|
304
318
|
|
305
|
-
let s:view_types = 'rhtml,erb,rxml,builder,rjs,mab,liquid,haml,dryml,mn'
|
319
|
+
let s:view_types = split('rhtml,erb,rxml,builder,rjs,mab,liquid,haml,dryml,mn,slim',',')
|
306
320
|
|
307
321
|
function! s:viewspattern()
|
308
|
-
return '\%('.
|
322
|
+
return '\%('.join(s:view_types,'\|').'\)'
|
309
323
|
endfunction
|
310
324
|
|
311
325
|
function! s:controller(...)
|
@@ -344,8 +358,10 @@ function! s:readable_controller_name(...) dict abort
|
|
344
358
|
return s:sub(f,'.*<components/(.{-})/\k+\.\k+$','\1')
|
345
359
|
elseif f =~ '\<app/models/.*\.rb$' && self.type_name('mailer')
|
346
360
|
return s:sub(f,'.*<app/models/(.{-})\.rb$','\1')
|
347
|
-
elseif f =~ '
|
348
|
-
return s:sub(f,'
|
361
|
+
elseif f =~ '\<\%(public\|app/assets\)/stylesheets/.*\.css\%(\.\w\+\)\=$'
|
362
|
+
return s:sub(f,'.*<%(public|app/assets)/stylesheets/(.{-})\.css%(\.\w+)=$','\1')
|
363
|
+
elseif f =~ '\<\%(public\|app/assets\)/javascripts/.*\.js\%(\.\w\+\)\=$'
|
364
|
+
return s:sub(f,'.*<%(public|app/assets)/javascripts/(.{-})\.js%(\.\w+)=$','\1')
|
349
365
|
elseif a:0 && a:1
|
350
366
|
return rails#pluralize(self.model_name())
|
351
367
|
endif
|
@@ -510,7 +526,7 @@ function! rails#singularize(word)
|
|
510
526
|
return word
|
511
527
|
endif
|
512
528
|
let word = s:sub(word,'eople$','ersons')
|
513
|
-
let word = s:sub(word,'[aeio]@<!ies$','ys')
|
529
|
+
let word = s:sub(word,'%([Mm]ov|[aeio])@<!ies$','ys')
|
514
530
|
let word = s:sub(word,'xe[ns]$','xs')
|
515
531
|
let word = s:sub(word,'ves$','fs')
|
516
532
|
let word = s:sub(word,'ss%(es)=$','sss')
|
@@ -592,7 +608,7 @@ endfunction
|
|
592
608
|
|
593
609
|
function! s:buffer_name() dict abort
|
594
610
|
let app = self.app()
|
595
|
-
let f = s:gsub(fnamemodify(bufname(self.number()),':p'),'\\ @!','/')
|
611
|
+
let f = s:gsub(resolve(fnamemodify(bufname(self.number()),':p')),'\\ @!','/')
|
596
612
|
let f = s:sub(f,'/$','')
|
597
613
|
let sep = matchstr(f,'^[^\\/]\{3,\}\zs[\\/]')
|
598
614
|
if sep != ""
|
@@ -921,10 +937,7 @@ function! s:BufCommands()
|
|
921
937
|
command! -buffer -bar -nargs=0 -bang Rrefresh :if <bang>0|unlet! g:autoloaded_rails|source `=s:file`|endif|call s:Refresh(<bang>0)
|
922
938
|
if exists(":NERDTree")
|
923
939
|
command! -buffer -bar -nargs=? -complete=customlist,s:Complete_cd Rtree :NERDTree `=rails#app().path(<f-args>)`
|
924
|
-
elseif exists(":Project")
|
925
|
-
command! -buffer -bar -nargs=? Rtree :call s:Project(<bang>0,<q-args>)
|
926
940
|
endif
|
927
|
-
command! -buffer -bar -nargs=? Rproject :call s:warn("Warning: :Rproject has been deprecated in favor of :Rtree") | Rtree<bang> <args>
|
928
941
|
if exists("g:loaded_dbext")
|
929
942
|
command! -buffer -bar -nargs=? -complete=customlist,s:Complete_environments Rdbext :call s:BufDatabase(2,<q-args>)|let b:dbext_buffer_defaulted = 1
|
930
943
|
endif
|
@@ -997,29 +1010,17 @@ function! rails#new_app_command(bang,...)
|
|
997
1010
|
endif
|
998
1011
|
return
|
999
1012
|
endif
|
1000
|
-
let
|
1001
|
-
if a:1 !~ '^-' && a:1 !=# 'new'
|
1002
|
-
let dir = a:1
|
1003
|
-
elseif a:{a:0} =~ '[\/]'
|
1004
|
-
let dir = a:{a:0}
|
1005
|
-
else
|
1006
|
-
let dir = a:1
|
1007
|
-
endif
|
1008
|
-
let str = ""
|
1009
|
-
let c = 1
|
1010
|
-
while c <= a:0
|
1011
|
-
let str .= " " . s:rquote(expand(a:{c}))
|
1012
|
-
let c += 1
|
1013
|
-
endwhile
|
1014
|
-
let dir = expand(dir)
|
1015
|
-
let append = ""
|
1013
|
+
let args = map(copy(a:000),'expand(v:val)')
|
1016
1014
|
if a:bang
|
1017
|
-
let
|
1018
|
-
endif
|
1019
|
-
exe "!rails".append.str
|
1020
|
-
if filereadable(dir."/".g:rails_default_file)
|
1021
|
-
edit `=dir.'/'.g:rails_default_file`
|
1015
|
+
let args = ['--force'] + args
|
1022
1016
|
endif
|
1017
|
+
exe '!rails '.join(map(copy(args),'s:rquote(v:val)'),' ')
|
1018
|
+
for dir in args
|
1019
|
+
if dir !~# '^-' && filereadable(dir.'/'.g:rails_default_file)
|
1020
|
+
edit `=dir.'/'.g:rails_default_file`
|
1021
|
+
return
|
1022
|
+
endif
|
1023
|
+
endfor
|
1023
1024
|
endfunction
|
1024
1025
|
|
1025
1026
|
function! s:app_tags_command() dict
|
@@ -1029,6 +1030,8 @@ function! s:app_tags_command() dict
|
|
1029
1030
|
let cmd = "exuberant-ctags"
|
1030
1031
|
elseif executable("ctags-exuberant")
|
1031
1032
|
let cmd = "ctags-exuberant"
|
1033
|
+
elseif executable("exctags")
|
1034
|
+
let cmd = "exctags"
|
1032
1035
|
elseif executable("ctags")
|
1033
1036
|
let cmd = "ctags"
|
1034
1037
|
elseif executable("ctags.exe")
|
@@ -1108,6 +1111,8 @@ let s:efm_backtrace='%D(in\ %f),'
|
|
1108
1111
|
\.'%\\s%#from\ %f:%l:%m,'
|
1109
1112
|
\.'%\\s%#from\ %f:%l:,'
|
1110
1113
|
\.'%\\s#{RAILS_ROOT}/%f:%l:\ %#%m,'
|
1114
|
+
\.'%\\s%##\ %f:%l:%m,'
|
1115
|
+
\.'%\\s%##\ %f:%l,'
|
1111
1116
|
\.'%\\s%#[%f:%l:\ %#%m,'
|
1112
1117
|
\.'%\\s%#%f:%l:\ %#%m,'
|
1113
1118
|
\.'%\\s%#%f:%l:,'
|
@@ -1132,7 +1137,9 @@ function! s:Rake(bang,lnum,arg)
|
|
1132
1137
|
let old_makeprg = &l:makeprg
|
1133
1138
|
let old_errorformat = &l:errorformat
|
1134
1139
|
try
|
1135
|
-
if
|
1140
|
+
if exists('b:bundler_root') && b:bundler_root ==# rails#app().path()
|
1141
|
+
let &l:makeprg = 'bundle exec rake'
|
1142
|
+
else
|
1136
1143
|
let &l:makeprg = 'rake'
|
1137
1144
|
endif
|
1138
1145
|
let &l:errorformat = s:efm_backtrace
|
@@ -1267,9 +1274,9 @@ function! s:readable_default_rake_task(lnum) dict abort
|
|
1267
1274
|
let ver = matchstr(self.name(),'\<db/migrate/0*\zs\d*\ze_')
|
1268
1275
|
if ver != ""
|
1269
1276
|
let method = self.last_method(lnum)
|
1270
|
-
if method == "down"
|
1277
|
+
if method == "down" || lnum == 1
|
1271
1278
|
return "db:migrate:down VERSION=".ver
|
1272
|
-
elseif method == "up"
|
1279
|
+
elseif method == "up" || lnum == line('$')
|
1273
1280
|
return "db:migrate:up VERSION=".ver
|
1274
1281
|
elseif lnum > 0
|
1275
1282
|
return "db:migrate:down db:migrate:up VERSION=".ver
|
@@ -1374,6 +1381,10 @@ function! s:readable_preview_urls(lnum) dict abort
|
|
1374
1381
|
let urls = urls + [s:sub(s:sub(self.name(),'^public/stylesheets/sass/','/stylesheets/'),'\.s[ac]ss$','.css')]
|
1375
1382
|
elseif self.name() =~ '^public/'
|
1376
1383
|
let urls = urls + [s:sub(self.name(),'^public','')]
|
1384
|
+
elseif self.name() =~ '^app/assets/stylesheets/'
|
1385
|
+
let urls = urls + ['/assets/application.css']
|
1386
|
+
elseif self.name() =~ '^app/assets/javascripts/'
|
1387
|
+
let urls = urls + ['/assets/application.js']
|
1377
1388
|
elseif self.name() =~ '^app/stylesheets/'
|
1378
1389
|
let urls = urls + [s:sub(s:sub(self.name(),'^app/stylesheets/','/stylesheets/'),'\.less$','.css')]
|
1379
1390
|
elseif self.name() =~ '^app/scripts/'
|
@@ -1679,19 +1690,19 @@ endfunction
|
|
1679
1690
|
function! s:BufNavCommands()
|
1680
1691
|
command! -buffer -bar -nargs=? -complete=customlist,s:Complete_cd Rcd :cd `=rails#app().path(<q-args>)`
|
1681
1692
|
command! -buffer -bar -nargs=? -complete=customlist,s:Complete_cd Rlcd :lcd `=rails#app().path(<q-args>)`
|
1682
|
-
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find Rfind :call s:Find(<count>,'<bang>' ,<f-args>)
|
1683
|
-
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find REfind :call s:Find(<count>,'E<bang>',<f-args>)
|
1684
|
-
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find RSfind :call s:Find(<count>,'S<bang>',<f-args>)
|
1685
|
-
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find RVfind :call s:Find(<count>,'V<bang>',<f-args>)
|
1686
|
-
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find RTfind :call s:Find(<count>,'T<bang>',<f-args>)
|
1687
|
-
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find Rsfind
|
1688
|
-
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find Rtabfind
|
1689
|
-
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit Redit :call s:Edit(<count>,'<bang>' ,<f-args>)
|
1690
|
-
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit REedit :call s:Edit(<count>,'E<bang>',<f-args>)
|
1691
|
-
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit RSedit :call s:Edit(<count>,'S<bang>',<f-args>)
|
1692
|
-
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit RVedit :call s:Edit(<count>,'V<bang>',<f-args>)
|
1693
|
-
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit RTedit :call s:Edit(<count>,'T<bang>',<f-args>)
|
1694
|
-
command! -buffer -bar -nargs=* -range=0 -complete=customlist,s:Complete_edit RDedit :call s:Edit(<count>,'<line1>D<bang>',<f-args>)
|
1693
|
+
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find Rfind :call s:warn( 'Rfind has been deprecated in favor of :1R or :find' )|call s:Find(<count>,'<bang>' ,<f-args>)
|
1694
|
+
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find REfind :call s:warn('REfind has been deprecated in favor of :1RE or :find')|call s:Find(<count>,'E<bang>',<f-args>)
|
1695
|
+
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find RSfind :call s:warn('RSfind has been deprecated in favor of :1RS or :find')|call s:Find(<count>,'S<bang>',<f-args>)
|
1696
|
+
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find RVfind :call s:warn('RVfind has been deprecated in favor of :1RV or :find')|call s:Find(<count>,'V<bang>',<f-args>)
|
1697
|
+
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find RTfind :call s:warn('RTfind has been deprecated in favor of :1RT or :find')|call s:Find(<count>,'T<bang>',<f-args>)
|
1698
|
+
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find Rsfind :call s:warn('Rsfind has been deprecated in favor of :1RS or :sfind')|<count>RSfind<bang> <args>
|
1699
|
+
command! -buffer -bar -nargs=* -count=1 -complete=customlist,s:Complete_find Rtabfind :call s:warn('Rtabfind has been deprecated in favor of :1RT or :tabfind')|<count>RTfind<bang> <args>
|
1700
|
+
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit Redit :call s:warn( 'Redit has been deprecated in favor of :R')|call s:Edit(<count>,'<bang>' ,<f-args>)
|
1701
|
+
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit REedit :call s:warn('REedit has been deprecated in favor of :RE')|call s:Edit(<count>,'E<bang>',<f-args>)
|
1702
|
+
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit RSedit :call s:warn('RSedit has been deprecated in favor of :RS')|call s:Edit(<count>,'S<bang>',<f-args>)
|
1703
|
+
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit RVedit :call s:warn('RVedit has been deprecated in favor of :RV')|call s:Edit(<count>,'V<bang>',<f-args>)
|
1704
|
+
command! -buffer -bar -nargs=* -bang -complete=customlist,s:Complete_edit RTedit :call s:warn('RTedit has been deprecated in favor of :RT')|call s:Edit(<count>,'T<bang>',<f-args>)
|
1705
|
+
command! -buffer -bar -nargs=* -range=0 -complete=customlist,s:Complete_edit RDedit :call s:warn('RDedit has been deprecated in favor of :RD')|call s:Edit(<count>,'<line1>D<bang>',<f-args>)
|
1695
1706
|
command! -buffer -bar -nargs=* -range=0 -complete=customlist,s:Complete_related A :call s:Alternate('<bang>', <line1>,<line2>,<count>,<f-args>)
|
1696
1707
|
command! -buffer -bar -nargs=* -range=0 -complete=customlist,s:Complete_related AE :call s:Alternate('E<bang>',<line1>,<line2>,<count>,<f-args>)
|
1697
1708
|
command! -buffer -bar -nargs=* -range=0 -complete=customlist,s:Complete_related AS :call s:Alternate('S<bang>',<line1>,<line2>,<count>,<f-args>)
|
@@ -1788,8 +1799,7 @@ function! s:Complete_find(ArgLead, CmdLine, CursorPos)
|
|
1788
1799
|
endfor
|
1789
1800
|
endif
|
1790
1801
|
endfor
|
1791
|
-
|
1792
|
-
return s:autocamelize(results,a:ArgLead)
|
1802
|
+
return s:autocamelize(sort(keys(seen)),a:ArgLead)
|
1793
1803
|
endfunction
|
1794
1804
|
|
1795
1805
|
function! s:Complete_edit(ArgLead, CmdLine, CursorPos)
|
@@ -1846,7 +1856,7 @@ function! s:findamethod(func,repl)
|
|
1846
1856
|
endfunction
|
1847
1857
|
|
1848
1858
|
function! s:findasymbol(sym,repl)
|
1849
|
-
return s:findit('\s
|
1859
|
+
return s:findit('\s*\%(:\%('.a:sym.'\)\s*=>\|\<'.a:sym.':\)\s*(\=\s*[@:'."'".'"]\(\f\+\)\>.\=',a:repl)
|
1850
1860
|
endfunction
|
1851
1861
|
|
1852
1862
|
function! s:findfromview(func,repl)
|
@@ -1901,10 +1911,10 @@ function! s:RailsFind()
|
|
1901
1911
|
let res = s:findasymbol('to','app/controllers/\1')
|
1902
1912
|
if res =~ '#'|return s:sub(res,'#','_controller.rb#')|endif
|
1903
1913
|
|
1904
|
-
let res = s:findamethod('root\s
|
1914
|
+
let res = s:findamethod('root\s*\%(:to\s*=>\|\<to:\)\s*','app/controllers/\1')
|
1905
1915
|
if res =~ '#'|return s:sub(res,'#','_controller.rb#')|endif
|
1906
1916
|
|
1907
|
-
let res = s:findamethod('\%(match\|get\|put\|post\|delete\|redirect\)\s*(\=\s*[:''"][^''"]*[''"]\=\s*\%(,\s*:to\s*\)
|
1917
|
+
let res = s:findamethod('\%(match\|get\|put\|post\|delete\|redirect\)\s*(\=\s*[:''"][^''"]*[''"]\=\s*\%(\%(,\s*:to\s*\)\==>\|,\s*to:\)\s*','app/controllers/\1')
|
1908
1918
|
if res =~ '#'|return s:sub(res,'#','_controller.rb#')|endif
|
1909
1919
|
|
1910
1920
|
let res = s:findamethod('layout','\=s:findlayout(submatch(1))')
|
@@ -1925,20 +1935,20 @@ function! s:RailsFind()
|
|
1925
1935
|
let res = s:findasymbol('template','app/views/\1')
|
1926
1936
|
if res != ""|return res|endif
|
1927
1937
|
|
1928
|
-
let res = s:sub(s:sub(s:findasymbol('partial','\1'),'^/',''),'
|
1938
|
+
let res = s:sub(s:sub(s:findasymbol('partial','\1'),'^/',''),'[^/]+$','_&')
|
1929
1939
|
if res != ""|return res."\n".s:findview(res)|endif
|
1930
1940
|
|
1931
|
-
let res = s:sub(s:sub(s:findfromview('render\s*(\=\s
|
1941
|
+
let res = s:sub(s:sub(s:findfromview('render\s*(\=\s*\%(:partial\s\+=>\|partial:\)\s*','\1'),'^/',''),'[^/]+$','_&')
|
1932
1942
|
if res != ""|return res."\n".s:findview(res)|endif
|
1933
1943
|
|
1934
|
-
let res = s:findamethod('render
|
1944
|
+
let res = s:findamethod('render\>\s*\%(:\%(template\|action\)\s\+=>\|template:\|action:\)\s*','\1.'.format.'\n\1')
|
1935
1945
|
if res != ""|return res|endif
|
1936
1946
|
|
1937
1947
|
let res = s:sub(s:findfromview('render','\1'),'^/','')
|
1938
1948
|
if buffer.type_name('view') | let res = s:sub(res,'[^/]+$','_&') | endif
|
1939
1949
|
if res != ""|return res."\n".s:findview(res)|endif
|
1940
1950
|
|
1941
|
-
let res = s:findamethod('redirect_to\s*(\=\s
|
1951
|
+
let res = s:findamethod('redirect_to\s*(\=\s*\%\(:action\s\+=>\|\<action:\)\s*','\1')
|
1942
1952
|
if res != ""|return res|endif
|
1943
1953
|
|
1944
1954
|
let res = s:findfromview('stylesheet_link_tag','public/stylesheets/\1')
|
@@ -2033,7 +2043,7 @@ function! s:RailsIncludefind(str,...)
|
|
2033
2043
|
" Classes should always be in .rb files
|
2034
2044
|
let str .= '.rb'
|
2035
2045
|
elseif line =~# ':partial\s*=>\s*'
|
2036
|
-
let str = s:sub(str,'
|
2046
|
+
let str = s:sub(str,'[^/]+$','_&')
|
2037
2047
|
let str = s:findview(str)
|
2038
2048
|
elseif line =~# '\<layout\s*(\=\s*' || line =~# ':layout\s*=>\s*'
|
2039
2049
|
let str = s:findview(s:sub(str,'^/=','layouts/'))
|
@@ -2124,6 +2134,7 @@ function! s:BufFinderCommands()
|
|
2124
2134
|
call s:addfilecmds("controller")
|
2125
2135
|
call s:addfilecmds("mailer")
|
2126
2136
|
call s:addfilecmds("migration")
|
2137
|
+
call s:addfilecmds("schema")
|
2127
2138
|
call s:addfilecmds("observer")
|
2128
2139
|
call s:addfilecmds("helper")
|
2129
2140
|
call s:addfilecmds("layout")
|
@@ -2229,11 +2240,21 @@ function! s:layoutList(A,L,P)
|
|
2229
2240
|
endfunction
|
2230
2241
|
|
2231
2242
|
function! s:stylesheetList(A,L,P)
|
2232
|
-
|
2243
|
+
let list = rails#app().relglob('app/assets/stylesheets/','**/*.*','')
|
2244
|
+
call map(list,'s:sub(v:val,"\\..*$","")')
|
2245
|
+
let list += rails#app().relglob('public/stylesheets/','**/*','.css')
|
2246
|
+
if rails#app().has('sass')
|
2247
|
+
call extend(list,rails#app().relglob('public/stylesheets/sass/','**/*','.s?ss'))
|
2248
|
+
call s:uniq(list)
|
2249
|
+
endif
|
2250
|
+
return s:completion_filter(list,a:A)
|
2233
2251
|
endfunction
|
2234
2252
|
|
2235
2253
|
function! s:javascriptList(A,L,P)
|
2236
|
-
|
2254
|
+
let list = rails#app().relglob('app/assets/javascripts/','**/*.*','')
|
2255
|
+
call map(list,'s:sub(v:val,"\\..*$","")')
|
2256
|
+
let list += rails#app().relglob("public/javascripts/","**/*",".js")
|
2257
|
+
return s:completion_filter(list,a:A)
|
2237
2258
|
endfunction
|
2238
2259
|
|
2239
2260
|
function! s:metalList(A,L,P)
|
@@ -2269,6 +2290,14 @@ function! s:migrationList(A,L,P)
|
|
2269
2290
|
endif
|
2270
2291
|
endfunction
|
2271
2292
|
|
2293
|
+
function! s:schemaList(A,L,P)
|
2294
|
+
let tables = s:readfile(rails#app().path('db/schema.rb'))
|
2295
|
+
let table_re = '^\s\+create_table\s["'':]\zs[^"'',]*\ze'
|
2296
|
+
call map(tables,'matchstr(v:val, table_re)')
|
2297
|
+
call filter(tables,'strlen(v:val)')
|
2298
|
+
return s:autocamelize(tables, a:A)
|
2299
|
+
endfunction
|
2300
|
+
|
2272
2301
|
function! s:unittestList(A,L,P)
|
2273
2302
|
let found = []
|
2274
2303
|
if rails#app().has('test')
|
@@ -2471,11 +2500,18 @@ function! s:app_migration(file) dict
|
|
2471
2500
|
else
|
2472
2501
|
let glob = '*'.rails#underscore(arg).'*rb'
|
2473
2502
|
endif
|
2474
|
-
let
|
2475
|
-
if
|
2476
|
-
|
2503
|
+
let files = split(glob(self.path('db/migrate/').glob),"\n")
|
2504
|
+
if arg == ''
|
2505
|
+
return get(files,-1,'')
|
2477
2506
|
endif
|
2478
|
-
|
2507
|
+
call map(files,'strpart(v:val,1+strlen(self.path()))')
|
2508
|
+
let keep = get(files,0,'')
|
2509
|
+
if glob =~# '^\*.*\*rb'
|
2510
|
+
let pattern = glob[1:-4]
|
2511
|
+
call filter(files,'v:val =~# ''db/migrate/\d\+_''.pattern.''\.rb''')
|
2512
|
+
let keep = get(files,0,keep)
|
2513
|
+
endif
|
2514
|
+
return keep
|
2479
2515
|
endfunction
|
2480
2516
|
|
2481
2517
|
call s:add_methods('app', ['migration'])
|
@@ -2491,6 +2527,15 @@ function! s:migrationEdit(cmd,...)
|
|
2491
2527
|
endif
|
2492
2528
|
endfunction
|
2493
2529
|
|
2530
|
+
function! s:schemaEdit(cmd,...)
|
2531
|
+
let cmd = s:findcmdfor(a:cmd)
|
2532
|
+
let schema = 'db/'.s:environment().'_structure.sql'
|
2533
|
+
if rails#app().has_file('db/schema.rb') || !rails#app().has_file(schema)
|
2534
|
+
let schema = 'db/schema.rb'
|
2535
|
+
endif
|
2536
|
+
call s:findedit(cmd,schema.(a:0 ? '#'.a:1 : ''))
|
2537
|
+
endfunction
|
2538
|
+
|
2494
2539
|
function! s:fixturesEdit(cmd,...)
|
2495
2540
|
if a:0
|
2496
2541
|
let c = rails#underscore(a:1)
|
@@ -2591,7 +2636,7 @@ function! s:findview(name)
|
|
2591
2636
|
return pre.name
|
2592
2637
|
else
|
2593
2638
|
for format in ['.'.s:format('html'), '']
|
2594
|
-
for type in
|
2639
|
+
for type in s:view_types
|
2595
2640
|
if self.app().has_file(pre.name.format.'.'.type)
|
2596
2641
|
return pre.name.format.'.'.type
|
2597
2642
|
endif
|
@@ -2652,7 +2697,12 @@ function! s:stylesheetEdit(cmd,...)
|
|
2652
2697
|
elseif rails#app().has('lesscss') && rails#app().has_file('app/stylesheets/'.name.'.less')
|
2653
2698
|
return s:EditSimpleRb(a:cmd,"stylesheet",name,"app/stylesheets/",".less",1)
|
2654
2699
|
else
|
2655
|
-
|
2700
|
+
let types = rails#app().relglob('app/assets/stylesheets/'.name,'.*','')
|
2701
|
+
if !empty(types)
|
2702
|
+
return s:EditSimpleRb(a:cmd,'stylesheet',name,'app/assets/stylesheets/',types[0],1)
|
2703
|
+
else
|
2704
|
+
return s:EditSimpleRb(a:cmd,'stylesheet',name,'public/stylesheets/','.css',1)
|
2705
|
+
endif
|
2656
2706
|
endif
|
2657
2707
|
endfunction
|
2658
2708
|
|
@@ -2663,7 +2713,12 @@ function! s:javascriptEdit(cmd,...)
|
|
2663
2713
|
elseif rails#app().has('coffee') && rails#app().has_file('app/scripts/'.name.'.js')
|
2664
2714
|
return s:EditSimpleRb(a:cmd,'javascript',name,'app/scripts/','.js',1)
|
2665
2715
|
else
|
2666
|
-
|
2716
|
+
let types = rails#app().relglob('app/assets/javascripts/'.name,'.*','')
|
2717
|
+
if !empty(types)
|
2718
|
+
return s:EditSimpleRb(a:cmd,'javascript',name,'app/assets/javascripts/',types[0],1)
|
2719
|
+
else
|
2720
|
+
return s:EditSimpleRb(a:cmd,'javascript',name,'public/javascripts/','.js',1)
|
2721
|
+
endif
|
2667
2722
|
endif
|
2668
2723
|
endfunction
|
2669
2724
|
|
@@ -3023,6 +3078,10 @@ function! s:readable_related(...) dict abort
|
|
3023
3078
|
return "config/application.rb\nconfig/environment.rb"
|
3024
3079
|
elseif f =~ '\<config/\%(application\|environment\)\.rb$'
|
3025
3080
|
return "config/database.yml"
|
3081
|
+
elseif f ==# 'Gemfile'
|
3082
|
+
return 'Gemfile.lock'
|
3083
|
+
elseif f ==# 'Gemfile.lock'
|
3084
|
+
return 'Gemfile'
|
3026
3085
|
elseif f =~ '\<db/migrate/'
|
3027
3086
|
let migrations = sort(self.app().relglob('db/migrate/','*','.rb'))
|
3028
3087
|
let me = matchstr(f,'\<db/migrate/\zs.*\ze\.rb$')
|
@@ -3309,9 +3368,9 @@ function! s:invertrange(beg,end)
|
|
3309
3368
|
endif
|
3310
3369
|
let add .= s:mkeep(line)
|
3311
3370
|
elseif line =~ '\<remove_index\>'
|
3312
|
-
let add = s:sub(s:sub(line,'<remove_index','add_index'),':column\s
|
3313
|
-
elseif line =~ '\<rename_\%(table\|column\)\>'
|
3314
|
-
let add = s:sub(line,'<rename_%(table\s*\(=\s
|
3371
|
+
let add = s:sub(s:sub(line,'<remove_index','add_index'),':column\s*\=\>\s*','')
|
3372
|
+
elseif line =~ '\<rename_\%(table\|column\|index\)\>'
|
3373
|
+
let add = s:sub(line,'<rename_%(table\s*\(=\s*|%(column|index)\s*\(=\s*[^,]*,\s*)\zs([^,]*)(,\s*)([^,]*)','\3\2\1')
|
3315
3374
|
elseif line =~ '\<change_column\>'
|
3316
3375
|
let add = s:migspc(line).'change_column'.s:mextargs(line,2).s:mkeep(line)
|
3317
3376
|
elseif line =~ '\<change_column_default\>'
|
@@ -3435,26 +3494,26 @@ endfunction
|
|
3435
3494
|
|
3436
3495
|
function! s:helpermethods()
|
3437
3496
|
return ""
|
3438
|
-
\."atom_feed audio_path audio_tag auto_discovery_link_tag
|
3439
|
-
\."button_to button_to_function "
|
3440
|
-
\."cache capture cdata_section check_box check_box_tag collection_select concat content_for content_tag content_tag_for csrf_meta_tag current_cycle cycle "
|
3441
|
-
\."date_select datetime_select debug distance_of_time_in_words distance_of_time_in_words_to_now div_for dom_class dom_id
|
3442
|
-
\."email_field email_field_tag
|
3443
|
-
\."favicon_link_tag field_set_tag fields_for file_field file_field_tag
|
3497
|
+
\."action_name atom_feed audio_path audio_tag auto_discovery_link_tag "
|
3498
|
+
\."button_tag button_to button_to_function "
|
3499
|
+
\."cache capture cdata_section check_box check_box_tag collection_select concat content_for content_tag content_tag_for controller controller_name controller_path convert_to_model cookies csrf_meta_tag csrf_meta_tags current_cycle cycle "
|
3500
|
+
\."date_select datetime_select debug distance_of_time_in_words distance_of_time_in_words_to_now div_for dom_class dom_id "
|
3501
|
+
\."email_field email_field_tag escape_javascript escape_once excerpt "
|
3502
|
+
\."favicon_link_tag field_set_tag fields_for file_field file_field_tag flash form_for form_tag "
|
3444
3503
|
\."grouped_collection_select grouped_options_for_select "
|
3445
|
-
\."hidden_field hidden_field_tag highlight "
|
3446
|
-
\."image_path image_submit_tag image_tag
|
3447
|
-
\."javascript_cdata_section javascript_include_tag javascript_path javascript_tag "
|
3448
|
-
\."l label label_tag link_to link_to_function link_to_if link_to_unless link_to_unless_current localize "
|
3504
|
+
\."headers hidden_field hidden_field_tag highlight "
|
3505
|
+
\."image_alt image_path image_submit_tag image_tag "
|
3506
|
+
\."j javascript_cdata_section javascript_include_tag javascript_path javascript_tag "
|
3507
|
+
\."l label label_tag link_to link_to_function link_to_if link_to_unless link_to_unless_current localize logger "
|
3449
3508
|
\."mail_to "
|
3450
3509
|
\."number_field number_field_tag number_to_currency number_to_human number_to_human_size number_to_percentage number_to_phone number_with_delimiter number_with_precision "
|
3451
3510
|
\."option_groups_from_collection_for_select options_for_select options_from_collection_for_select "
|
3452
|
-
\."password_field password_field_tag path_to_audio path_to_image path_to_javascript path_to_stylesheet path_to_video phone_field phone_field_tag pluralize "
|
3453
|
-
\."radio_button radio_button_tag range_field range_field_tag raw
|
3454
|
-
\."safe_concat sanitize sanitize_css search_field search_field_tag select select_date select_datetime select_day select_hour select_minute select_month select_second select_tag select_time select_year simple_format
|
3455
|
-
\."t tag telephone_field telephone_field_tag text_area text_area_tag text_field text_field_tag time_ago_in_words time_select time_zone_options_for_select time_zone_select translate truncate "
|
3456
|
-
\."
|
3457
|
-
\."video_path video_tag
|
3511
|
+
\."params password_field password_field_tag path_to_audio path_to_image path_to_javascript path_to_stylesheet path_to_video phone_field phone_field_tag pluralize provide "
|
3512
|
+
\."radio_button radio_button_tag range_field range_field_tag raw render request request_forgery_protection_token reset_cycle response "
|
3513
|
+
\."safe_concat safe_join sanitize sanitize_css search_field search_field_tag select select_date select_datetime select_day select_hour select_minute select_month select_second select_tag select_time select_year session simple_format strip_links strip_tags stylesheet_link_tag stylesheet_path submit_tag "
|
3514
|
+
\."t tag telephone_field telephone_field_tag text_area text_area_tag text_field text_field_tag time_ago_in_words time_select time_tag time_zone_options_for_select time_zone_select translate truncate "
|
3515
|
+
\."url_field url_field_tag url_for url_options "
|
3516
|
+
\."video_path video_tag "
|
3458
3517
|
\."word_wrap"
|
3459
3518
|
endfunction
|
3460
3519
|
|
@@ -3509,7 +3568,7 @@ function! s:BufSyntax()
|
|
3509
3568
|
syn keyword rubyRailsARCallbackMethod after_create after_destroy after_save after_update after_validation after_validation_on_create after_validation_on_update
|
3510
3569
|
syn keyword rubyRailsARCallbackMethod around_create around_destroy around_save around_update
|
3511
3570
|
syn keyword rubyRailsARCallbackMethod after_commit after_find after_initialize after_rollback after_touch
|
3512
|
-
syn keyword rubyRailsARClassMethod attr_accessible attr_protected establish_connection set_inheritance_column set_locking_column set_primary_key set_sequence_name set_table_name
|
3571
|
+
syn keyword rubyRailsARClassMethod attr_accessible attr_protected attr_readonly establish_connection set_inheritance_column set_locking_column set_primary_key set_sequence_name set_table_name
|
3513
3572
|
syn keyword rubyRailsARValidationMethod validate validates validate_on_create validate_on_update validates_acceptance_of validates_associated validates_confirmation_of validates_each validates_exclusion_of validates_format_of validates_inclusion_of validates_length_of validates_numericality_of validates_presence_of validates_size_of validates_uniqueness_of
|
3514
3573
|
syn keyword rubyRailsMethod logger
|
3515
3574
|
endif
|
@@ -3521,28 +3580,27 @@ function! s:BufSyntax()
|
|
3521
3580
|
syn keyword rubyRailsRenderMethod mail render
|
3522
3581
|
syn keyword rubyRailsControllerMethod attachments default helper helper_attr helper_method
|
3523
3582
|
endif
|
3524
|
-
if buffer.type_name('controller','view','helper')
|
3525
|
-
syn keyword rubyRailsMethod params request response session headers cookies flash
|
3526
|
-
syn keyword rubyRailsRenderMethod render
|
3527
|
-
syn keyword rubyRailsMethod logger polymorphic_path polymorphic_url
|
3528
|
-
endif
|
3529
3583
|
if buffer.type_name('helper','view')
|
3584
|
+
syn keyword rubyRailsViewMethod polymorphic_path polymorphic_url
|
3530
3585
|
exe "syn keyword rubyRailsHelperMethod ".s:gsub(s:helpermethods(),'<%(content_for|select)\s+','')
|
3531
3586
|
syn match rubyRailsHelperMethod '\<select\>\%(\s*{\|\s*do\>\|\s*(\=\s*&\)\@!'
|
3532
3587
|
syn match rubyRailsHelperMethod '\<\%(content_for?\=\|current_page?\)'
|
3533
|
-
syn match rubyRailsViewMethod '\.\@<!\<\(h\|html_escape\|u\|url_encode
|
3588
|
+
syn match rubyRailsViewMethod '\.\@<!\<\(h\|html_escape\|u\|url_encode\)\>'
|
3534
3589
|
if buffer.type_name('view-partial')
|
3535
3590
|
syn keyword rubyRailsMethod local_assigns
|
3536
3591
|
endif
|
3537
3592
|
elseif buffer.type_name('controller')
|
3593
|
+
syn keyword rubyRailsMethod params request response session headers cookies flash
|
3594
|
+
syn keyword rubyRailsRenderMethod render
|
3595
|
+
syn keyword rubyRailsMethod logger polymorphic_path polymorphic_url
|
3538
3596
|
syn keyword rubyRailsControllerMethod helper helper_attr helper_method filter layout url_for serialize exempt_from_layout filter_parameter_logging hide_action cache_sweeper protect_from_forgery caches_page cache_page caches_action expire_page expire_action rescue_from
|
3539
3597
|
syn keyword rubyRailsRenderMethod head redirect_to render_to_string respond_with
|
3540
3598
|
syn match rubyRailsRenderMethod '\<respond_to\>?\@!'
|
3541
|
-
syn keyword rubyRailsFilterMethod before_filter append_before_filter prepend_before_filter after_filter append_after_filter prepend_after_filter around_filter append_around_filter prepend_around_filter skip_before_filter skip_after_filter
|
3599
|
+
syn keyword rubyRailsFilterMethod before_filter append_before_filter prepend_before_filter after_filter append_after_filter prepend_after_filter around_filter append_around_filter prepend_around_filter skip_before_filter skip_after_filter skip_filter
|
3542
3600
|
syn keyword rubyRailsFilterMethod verify
|
3543
3601
|
endif
|
3544
3602
|
if buffer.type_name('db-migration','db-schema')
|
3545
|
-
syn keyword rubyRailsMigrationMethod create_table change_table drop_table rename_table add_column rename_column change_column change_column_default remove_column add_index remove_index
|
3603
|
+
syn keyword rubyRailsMigrationMethod create_table change_table drop_table rename_table add_column rename_column change_column change_column_default remove_column add_index remove_index rename_index execute
|
3546
3604
|
endif
|
3547
3605
|
if buffer.type_name('test')
|
3548
3606
|
if !empty(rails#app().user_assertions())
|
@@ -3556,13 +3614,13 @@ function! s:BufSyntax()
|
|
3556
3614
|
syn keyword rubyRailsTestControllerMethod assert_response assert_redirected_to assert_template assert_recognizes assert_generates assert_routing assert_dom_equal assert_dom_not_equal assert_select assert_select_rjs assert_select_encoded assert_select_email assert_tag assert_no_tag
|
3557
3615
|
endif
|
3558
3616
|
elseif buffer.type_name('spec')
|
3559
|
-
syn keyword rubyRailsTestMethod describe context it its specify shared_examples_for it_should_behave_like before after subject fixtures controller_name helper_name
|
3617
|
+
syn keyword rubyRailsTestMethod describe context it its specify shared_examples_for it_should_behave_like before after around subject fixtures controller_name helper_name scenario feature background
|
3560
3618
|
syn match rubyRailsTestMethod '\<let\>!\='
|
3561
3619
|
syn keyword rubyRailsTestMethod violated pending expect double mock mock_model stub_model
|
3562
3620
|
syn match rubyRailsTestMethod '\.\@<!\<stub\>!\@!'
|
3563
3621
|
if !buffer.type_name('spec-model')
|
3564
3622
|
syn match rubyRailsTestControllerMethod '\.\@<!\<\%(get\|post\|put\|delete\|head\|process\|assigns\)\>'
|
3565
|
-
syn keyword rubyRailsTestControllerMethod integrate_views
|
3623
|
+
syn keyword rubyRailsTestControllerMethod integrate_views render_views
|
3566
3624
|
syn keyword rubyRailsMethod params request response session flash
|
3567
3625
|
syn keyword rubyRailsMethod polymorphic_path polymorphic_url
|
3568
3626
|
endif
|
@@ -3580,7 +3638,7 @@ function! s:BufSyntax()
|
|
3580
3638
|
syn keyword rubyRailsMethod debugger
|
3581
3639
|
syn keyword rubyRailsMethod alias_attribute alias_method_chain attr_accessor_with_default attr_internal attr_internal_accessor attr_internal_reader attr_internal_writer delegate mattr_accessor mattr_reader mattr_writer superclass_delegating_accessor superclass_delegating_reader superclass_delegating_writer
|
3582
3640
|
syn keyword rubyRailsMethod cattr_accessor cattr_reader cattr_writer class_inheritable_accessor class_inheritable_array class_inheritable_array_writer class_inheritable_hash class_inheritable_hash_writer class_inheritable_option class_inheritable_reader class_inheritable_writer inheritable_attributes read_inheritable_attribute reset_inheritable_attributes write_inheritable_array write_inheritable_attribute write_inheritable_hash
|
3583
|
-
syn keyword rubyRailsInclude require_dependency
|
3641
|
+
syn keyword rubyRailsInclude require_dependency
|
3584
3642
|
|
3585
3643
|
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(:order\s*=>\s*\)\@<="+ skip=+\\\\\|\\"+ end=+"+ contains=@rubyStringSpecial,railsOrderSpecial
|
3586
3644
|
syn region rubyString matchgroup=rubyStringDelimiter start=+\%(:order\s*=>\s*\)\@<='+ skip=+\\\\\|\\'+ end=+'+ contains=@rubyStringSpecial,railsOrderSpecial
|
@@ -3610,7 +3668,7 @@ function! s:BufSyntax()
|
|
3610
3668
|
syn cluster htmlArgCluster add=@rubyStringSpecial
|
3611
3669
|
syn cluster htmlPreProc add=@rubyStringSpecial
|
3612
3670
|
|
3613
|
-
elseif &syntax
|
3671
|
+
elseif &syntax =~# '^eruby\>' || &syntax == 'haml'
|
3614
3672
|
syn case match
|
3615
3673
|
if classes != ''
|
3616
3674
|
exe 'syn keyword '.&syntax.'RailsUserClass '.classes.' contained containedin=@'.&syntax.'RailsRegions'
|
@@ -3623,9 +3681,8 @@ function! s:BufSyntax()
|
|
3623
3681
|
exe 'syn keyword '.&syntax.'RailsHelperMethod '.s:gsub(s:helpermethods(),'<%(content_for|select)\s+','').' contained containedin=@'.&syntax.'RailsRegions'
|
3624
3682
|
exe 'syn match '.&syntax.'RailsHelperMethod "\<select\>\%(\s*{\|\s*do\>\|\s*(\=\s*&\)\@!" contained containedin=@'.&syntax.'RailsRegions'
|
3625
3683
|
exe 'syn match '.&syntax.'RailsHelperMethod "\<\%(content_for?\=\|current_page?\)" contained containedin=@'.&syntax.'RailsRegions'
|
3626
|
-
exe 'syn keyword '.&syntax.'RailsMethod debugger
|
3627
|
-
exe 'syn
|
3628
|
-
exe 'syn match '.&syntax.'RailsViewMethod "\.\@<!\<\(h\|html_escape\|u\|url_encode\|controller\)\>" contained containedin=@'.&syntax.'RailsRegions'
|
3684
|
+
exe 'syn keyword '.&syntax.'RailsMethod debugger polymorphic_path polymorphic_url contained containedin=@'.&syntax.'RailsRegions'
|
3685
|
+
exe 'syn match '.&syntax.'RailsViewMethod "\.\@<!\<\(h\|html_escape\|u\|url_encode\)\>" contained containedin=@'.&syntax.'RailsRegions'
|
3629
3686
|
if buffer.type_name('view-partial')
|
3630
3687
|
exe 'syn keyword '.&syntax.'RailsMethod local_assigns contained containedin=@'.&syntax.'RailsRegions'
|
3631
3688
|
endif
|
@@ -3642,10 +3699,10 @@ function! s:BufSyntax()
|
|
3642
3699
|
syn include @rubyTop syntax/ruby.vim
|
3643
3700
|
unlet g:main_syntax
|
3644
3701
|
syn cluster yamlRailsRegions contains=yamlRailsOneLiner,yamlRailsBlock,yamlRailsExpression
|
3645
|
-
syn region yamlRailsOneLiner matchgroup=yamlRailsDelimiter start="^%%\@!" end="$" contains=@rubyRailsTop
|
3646
|
-
syn region yamlRailsBlock matchgroup=yamlRailsDelimiter start="<%%\@!" end="%>" contains=@rubyTop
|
3647
|
-
syn region yamlRailsExpression matchgroup=yamlRailsDelimiter start="<%=" end="%>" contains=@rubyTop
|
3648
|
-
syn region yamlRailsComment matchgroup=yamlRailsDelimiter start="<%#" end="%>" contains=rubyTodo,@Spell
|
3702
|
+
syn region yamlRailsOneLiner matchgroup=yamlRailsDelimiter start="^%%\@!" end="$" contains=@rubyRailsTop containedin=ALLBUT,@yamlRailsRegions,yamlRailsComment keepend oneline
|
3703
|
+
syn region yamlRailsBlock matchgroup=yamlRailsDelimiter start="<%%\@!" end="%>" contains=@rubyTop containedin=ALLBUT,@yamlRailsRegions,yamlRailsComment
|
3704
|
+
syn region yamlRailsExpression matchgroup=yamlRailsDelimiter start="<%=" end="%>" contains=@rubyTop containedin=ALLBUT,@yamlRailsRegions,yamlRailsComment
|
3705
|
+
syn region yamlRailsComment matchgroup=yamlRailsDelimiter start="<%#" end="%>" contains=rubyTodo,@Spell containedin=ALLBUT,@yamlRailsRegions,yamlRailsComment keepend
|
3649
3706
|
syn match yamlRailsMethod '\.\@<!\<\(h\|html_escape\|u\|url_encode\)\>' contained containedin=@yamlRailsRegions
|
3650
3707
|
if classes != ''
|
3651
3708
|
exe "syn keyword yamlRailsUserClass ".classes." contained containedin=@yamlRailsRegions"
|
@@ -3662,6 +3719,9 @@ function! s:BufSyntax()
|
|
3662
3719
|
set isk+=$
|
3663
3720
|
exe "syn keyword javascriptRailsFunction ".s:javascript_functions
|
3664
3721
|
|
3722
|
+
elseif &syntax == "scss" || &syntax == "sass"
|
3723
|
+
syn match sassFunction "\<\%(\%(asset\|image\|font\|video\|audio\|javascript\|stylesheet\)-\%(url\|path\)\)\>(\@=" contained
|
3724
|
+
syn match sassFunction "\<\asset-data-url\>(\@=" contained
|
3665
3725
|
endif
|
3666
3726
|
endif
|
3667
3727
|
call s:HiDefaults()
|
@@ -3763,101 +3823,14 @@ function! rails#log_syntax()
|
|
3763
3823
|
hi def link railslogHTTP Special
|
3764
3824
|
endfunction
|
3765
3825
|
|
3766
|
-
" }}}1
|
3767
|
-
" Statusline {{{1
|
3768
|
-
|
3769
|
-
function! s:addtostatus(letter,status)
|
3770
|
-
let status = a:status
|
3771
|
-
if status !~ 'rails' && g:rails_statusline
|
3772
|
-
let status=substitute(status,'\C%'.tolower(a:letter),'%'.tolower(a:letter).'%{rails#statusline()}','')
|
3773
|
-
if status !~ 'rails'
|
3774
|
-
let status=substitute(status,'\C%'.toupper(a:letter),'%'.toupper(a:letter).'%{rails#STATUSLINE()}','')
|
3775
|
-
endif
|
3776
|
-
endif
|
3777
|
-
return status
|
3778
|
-
endfunction
|
3779
|
-
|
3780
|
-
function! s:BufInitStatusline()
|
3781
|
-
if g:rails_statusline
|
3782
|
-
if &l:statusline == ''
|
3783
|
-
let &l:statusline = &g:statusline
|
3784
|
-
endif
|
3785
|
-
if &l:statusline == ''
|
3786
|
-
let &l:statusline='%<%f %h%m%r%='
|
3787
|
-
if &ruler
|
3788
|
-
let &l:statusline .= '%-14.(%l,%c%V%) %P'
|
3789
|
-
endif
|
3790
|
-
endif
|
3791
|
-
let &l:statusline = s:InjectIntoStatusline(&l:statusline)
|
3792
|
-
endif
|
3793
|
-
endfunction
|
3794
|
-
|
3795
|
-
function! s:InitStatusline()
|
3796
|
-
if g:rails_statusline
|
3797
|
-
if &g:statusline == ''
|
3798
|
-
let &g:statusline='%<%f %h%m%r%='
|
3799
|
-
if &ruler
|
3800
|
-
let &g:statusline .= '%-16( %l,%c-%v %)%P'
|
3801
|
-
endif
|
3802
|
-
endif
|
3803
|
-
let &g:statusline = s:InjectIntoStatusline(&g:statusline)
|
3804
|
-
endif
|
3805
|
-
endfunction
|
3806
|
-
|
3807
|
-
function! s:InjectIntoStatusline(status)
|
3808
|
-
let status = a:status
|
3809
|
-
if status !~ 'rails'
|
3810
|
-
let status = s:addtostatus('y',status)
|
3811
|
-
let status = s:addtostatus('r',status)
|
3812
|
-
let status = s:addtostatus('m',status)
|
3813
|
-
let status = s:addtostatus('w',status)
|
3814
|
-
let status = s:addtostatus('h',status)
|
3815
|
-
if status !~ 'rails'
|
3816
|
-
let status=substitute(status,'%=','%{rails#statusline()}%=','')
|
3817
|
-
endif
|
3818
|
-
if status !~ 'rails' && status != ''
|
3819
|
-
let status .= '%{rails#statusline()}'
|
3820
|
-
endif
|
3821
|
-
endif
|
3822
|
-
return status
|
3823
|
-
endfunction
|
3824
|
-
|
3825
|
-
function! rails#statusline(...)
|
3826
|
-
if exists("b:rails_root")
|
3827
|
-
let t = rails#buffer().type_name()
|
3828
|
-
if t != "" && a:0 && a:1
|
3829
|
-
return "[Rails-".t."]"
|
3830
|
-
else
|
3831
|
-
return "[Rails]"
|
3832
|
-
endif
|
3833
|
-
else
|
3834
|
-
return ""
|
3835
|
-
endif
|
3836
|
-
endfunction
|
3837
|
-
|
3838
|
-
function! rails#STATUSLINE(...)
|
3839
|
-
if exists("b:rails_root")
|
3840
|
-
let t = rails#buffer().type_name()
|
3841
|
-
if t != "" && a:0 && a:1
|
3842
|
-
return ",RAILS-".toupper(t)
|
3843
|
-
else
|
3844
|
-
return ",RAILS"
|
3845
|
-
endif
|
3846
|
-
else
|
3847
|
-
return ""
|
3848
|
-
endif
|
3849
|
-
endfunction
|
3850
|
-
|
3851
3826
|
" }}}1
|
3852
3827
|
" Mappings {{{1
|
3853
3828
|
|
3854
3829
|
function! s:BufMappings()
|
3855
|
-
nnoremap <buffer> <silent> <Plug>
|
3856
|
-
nnoremap <buffer> <silent> <Plug>
|
3857
|
-
nnoremap <buffer> <silent> <Plug>
|
3858
|
-
nnoremap <buffer> <silent> <Plug>
|
3859
|
-
nnoremap <buffer> <silent> <Plug>RailsVSplitFind :<C-U>RVfind<CR>
|
3860
|
-
nnoremap <buffer> <silent> <Plug>RailsTabFind :<C-U>RTfind<CR>
|
3830
|
+
nnoremap <buffer> <silent> <Plug>RailsFind :<C-U>call <SID>Find(v:count1,'E')<CR>
|
3831
|
+
nnoremap <buffer> <silent> <Plug>RailsSplitFind :<C-U>call <SID>Find(v:count1,'S')<CR>
|
3832
|
+
nnoremap <buffer> <silent> <Plug>RailsVSplitFind :<C-U>call <SID>Find(v:count1,'V')<CR>
|
3833
|
+
nnoremap <buffer> <silent> <Plug>RailsTabFind :<C-U>call <SID>Find(v:count1,'T')<CR>
|
3861
3834
|
if g:rails_mappings
|
3862
3835
|
if !hasmapto("<Plug>RailsFind")
|
3863
3836
|
nmap <buffer> gf <Plug>RailsFind
|
@@ -3868,12 +3841,6 @@ function! s:BufMappings()
|
|
3868
3841
|
if !hasmapto("<Plug>RailsTabFind")
|
3869
3842
|
nmap <buffer> <C-W>gf <Plug>RailsTabFind
|
3870
3843
|
endif
|
3871
|
-
if !hasmapto("<Plug>RailsAlternate")
|
3872
|
-
nmap <buffer> [f <Plug>RailsAlternate
|
3873
|
-
endif
|
3874
|
-
if !hasmapto("<Plug>RailsRelated")
|
3875
|
-
nmap <buffer> ]f <Plug>RailsRelated
|
3876
|
-
endif
|
3877
3844
|
if exists("$CREAM")
|
3878
3845
|
imap <buffer> <C-CR> <C-O><Plug>RailsFind
|
3879
3846
|
imap <buffer> <M-[> <C-O><Plug>RailsAlternate
|
@@ -3884,111 +3851,6 @@ function! s:BufMappings()
|
|
3884
3851
|
let v:errmsg = ""
|
3885
3852
|
endfunction
|
3886
3853
|
|
3887
|
-
" }}}1
|
3888
|
-
" Project {{{
|
3889
|
-
|
3890
|
-
function! s:Project(bang,arg)
|
3891
|
-
let rr = rails#app().path()
|
3892
|
-
exe "Project ".a:arg
|
3893
|
-
let line = search('^[^ =]*="'.s:gsub(rr,'[\/]','[\\/]').'"')
|
3894
|
-
let projname = s:gsub(fnamemodify(rr,':t'),'\=','-') " .'_on_rails'
|
3895
|
-
if line && a:bang
|
3896
|
-
let projname = matchstr(getline('.'),'^[^=]*')
|
3897
|
-
" Most of this would be unnecessary if the project.vim author had just put
|
3898
|
-
" the newlines AFTER each project rather than before. Ugh.
|
3899
|
-
norm zR0"_d%
|
3900
|
-
if line('.') > 2
|
3901
|
-
delete _
|
3902
|
-
endif
|
3903
|
-
if line('.') != line('$')
|
3904
|
-
.-2
|
3905
|
-
endif
|
3906
|
-
let line = 0
|
3907
|
-
elseif !line
|
3908
|
-
$
|
3909
|
-
endif
|
3910
|
-
if !line
|
3911
|
-
if line('.') > 1
|
3912
|
-
append
|
3913
|
-
|
3914
|
-
.
|
3915
|
-
endif
|
3916
|
-
let line = line('.')+1
|
3917
|
-
call s:NewProject(projname,rr)
|
3918
|
-
endif
|
3919
|
-
normal! zMzo
|
3920
|
-
if search("^ app=app {","W",line+10)
|
3921
|
-
normal! zo
|
3922
|
-
exe line
|
3923
|
-
endif
|
3924
|
-
normal! 0zt
|
3925
|
-
endfunction
|
3926
|
-
|
3927
|
-
function! s:NewProject(proj,rr)
|
3928
|
-
let line = line('.')+1
|
3929
|
-
let template = s:NewProjectTemplate(a:proj,a:rr)
|
3930
|
-
silent put =template
|
3931
|
-
exe line
|
3932
|
-
" Ugh. how else can I force detecting folds?
|
3933
|
-
setlocal foldmethod=manual
|
3934
|
-
norm! $%
|
3935
|
-
silent exe "doautocmd User ".s:escarg(a:rr)."/Rproject"
|
3936
|
-
let newline = line('.')
|
3937
|
-
exe line
|
3938
|
-
norm! $%
|
3939
|
-
if line('.') != newline
|
3940
|
-
call s:warn("Warning: Rproject autocommand failed to leave cursor at end of project")
|
3941
|
-
endif
|
3942
|
-
exe line
|
3943
|
-
setlocal foldmethod=marker
|
3944
|
-
setlocal nomodified
|
3945
|
-
" FIXME: make undo stop here
|
3946
|
-
if !exists("g:maplocalleader")
|
3947
|
-
silent! normal \R
|
3948
|
-
else " Needs to be tested
|
3949
|
-
exe 'silent! normal '.g:maplocalleader.'R'
|
3950
|
-
endif
|
3951
|
-
endfunction
|
3952
|
-
|
3953
|
-
function! s:NewProjectTemplate(proj,rr)
|
3954
|
-
let str = a:proj.'="'.a:rr."\" CD=. filter=\"*\" {\n"
|
3955
|
-
let str .= " app=app {\n"
|
3956
|
-
for dir in ['apis','controllers','helpers','models','views']
|
3957
|
-
let str .= s:addprojectdir(a:rr,'app',dir)
|
3958
|
-
endfor
|
3959
|
-
let str .= " }\n"
|
3960
|
-
let str .= " config=config {\n environments=environments {\n }\n }\n"
|
3961
|
-
let str .= " db=db {\n"
|
3962
|
-
let str .= s:addprojectdir(a:rr,'db','migrate')
|
3963
|
-
let str .= " }\n"
|
3964
|
-
let str .= " lib=lib filter=\"* */**/*.rb \" {\n tasks=tasks filter=\"**/*.rake\" {\n }\n }\n"
|
3965
|
-
let str .= " public=public {\n images=images {\n }\n javascripts=javascripts {\n }\n stylesheets=stylesheets {\n }\n }\n"
|
3966
|
-
if isdirectory(a:rr.'/spec')
|
3967
|
-
let str .= " spec=spec {\n"
|
3968
|
-
for dir in ['controllers','fixtures','helpers','models','views']
|
3969
|
-
let str .= s:addprojectdir(a:rr,'spec',dir)
|
3970
|
-
endfor
|
3971
|
-
let str .= " }\n"
|
3972
|
-
endif
|
3973
|
-
if isdirectory(a:rr.'/test')
|
3974
|
-
let str .= " test=test {\n"
|
3975
|
-
for dir in ['fixtures','functional','integration','mocks','unit']
|
3976
|
-
let str .= s:addprojectdir(a:rr,'test',dir)
|
3977
|
-
endfor
|
3978
|
-
let str .= " }\n"
|
3979
|
-
end
|
3980
|
-
let str .= "}\n"
|
3981
|
-
return str
|
3982
|
-
endfunction
|
3983
|
-
|
3984
|
-
function! s:addprojectdir(rr,parentdir,dir)
|
3985
|
-
if isdirectory(a:rr.'/'.a:parentdir.'/'.a:dir)
|
3986
|
-
return ' '.a:dir.'='.a:dir." filter=\"**\" {\n }\n"
|
3987
|
-
else
|
3988
|
-
return ''
|
3989
|
-
endif
|
3990
|
-
endfunction
|
3991
|
-
|
3992
3854
|
" }}}1
|
3993
3855
|
" Database {{{1
|
3994
3856
|
|
@@ -4008,7 +3870,7 @@ function! s:app_dbext_settings(environment) dict
|
|
4008
3870
|
let cmde = '}]; i=0; e=y[e] while e.respond_to?(:to_str) && (i+=1)<16; e.each{|k,v|puts k.to_s+%{=}+v.to_s}}'
|
4009
3871
|
let out = self.lightweight_ruby_eval(cmdb.a:environment.cmde)
|
4010
3872
|
let adapter = s:extractdbvar(out,'adapter')
|
4011
|
-
let adapter = get({'mysql2': 'mysql', 'postgresql': 'pgsql', 'sqlite3': 'sqlite', 'sqlserver': 'sqlsrv', 'sybase': 'asa', '
|
3873
|
+
let adapter = get({'mysql2': 'mysql', 'postgresql': 'pgsql', 'sqlite3': 'sqlite', 'sqlserver': 'sqlsrv', 'sybase': 'asa', 'oracle': 'ora'},adapter,adapter)
|
4012
3874
|
let dict['type'] = toupper(adapter)
|
4013
3875
|
let dict['user'] = s:extractdbvar(out,'username')
|
4014
3876
|
let dict['passwd'] = s:extractdbvar(out,'password')
|
@@ -4026,7 +3888,11 @@ function! s:app_dbext_settings(environment) dict
|
|
4026
3888
|
let dict['dbname'] = self.path(dict['dbname'])
|
4027
3889
|
endif
|
4028
3890
|
let dict['profile'] = ''
|
4029
|
-
|
3891
|
+
if adapter == 'ora'
|
3892
|
+
let dict['srvname'] = s:extractdbvar(out,'database')
|
3893
|
+
else
|
3894
|
+
let dict['srvname'] = s:extractdbvar(out,'host')
|
3895
|
+
endif
|
4030
3896
|
let dict['host'] = s:extractdbvar(out,'host')
|
4031
3897
|
let dict['port'] = s:extractdbvar(out,'port')
|
4032
3898
|
let dict['dsnname'] = s:extractdbvar(out,'dsn')
|
@@ -4155,15 +4021,15 @@ function! s:BufAbbreviations()
|
|
4155
4021
|
Rabbrev coo[ cookies
|
4156
4022
|
Rabbrev fl[ flash
|
4157
4023
|
Rabbrev rr( render
|
4158
|
-
Rabbrev ra( render :action\ =>\
|
4159
|
-
Rabbrev rc( render :controller\ =>\
|
4160
|
-
Rabbrev rf( render :file\ =>\
|
4161
|
-
Rabbrev ri( render :inline\ =>\
|
4162
|
-
Rabbrev rj( render :json\ =>\
|
4163
|
-
Rabbrev rl( render :layout\ =>\
|
4164
|
-
Rabbrev rp( render :partial\ =>\
|
4165
|
-
Rabbrev rt( render :text\ =>\
|
4166
|
-
Rabbrev rx( render :xml\ =>\
|
4024
|
+
Rabbrev ra( render :action\ =>\
|
4025
|
+
Rabbrev rc( render :controller\ =>\
|
4026
|
+
Rabbrev rf( render :file\ =>\
|
4027
|
+
Rabbrev ri( render :inline\ =>\
|
4028
|
+
Rabbrev rj( render :json\ =>\
|
4029
|
+
Rabbrev rl( render :layout\ =>\
|
4030
|
+
Rabbrev rp( render :partial\ =>\
|
4031
|
+
Rabbrev rt( render :text\ =>\
|
4032
|
+
Rabbrev rx( render :xml\ =>\
|
4167
4033
|
endif
|
4168
4034
|
if buffer.type_name('view','helper')
|
4169
4035
|
Rabbrev dotiw distance_of_time_in_words
|
@@ -4171,8 +4037,8 @@ function! s:BufAbbreviations()
|
|
4171
4037
|
endif
|
4172
4038
|
if buffer.type_name('controller')
|
4173
4039
|
Rabbrev re( redirect_to
|
4174
|
-
Rabbrev rea( redirect_to :action\ =>\
|
4175
|
-
Rabbrev rec( redirect_to :controller\ =>\
|
4040
|
+
Rabbrev rea( redirect_to :action\ =>\
|
4041
|
+
Rabbrev rec( redirect_to :controller\ =>\
|
4176
4042
|
Rabbrev rst( respond_to
|
4177
4043
|
endif
|
4178
4044
|
if buffer.type_name() ==# 'model' || buffer.type_name('model-arb')
|
@@ -4210,13 +4076,13 @@ function! s:BufAbbreviations()
|
|
4210
4076
|
Rabbrev asre( assert_response
|
4211
4077
|
Rabbrev art( assert_redirected_to
|
4212
4078
|
endif
|
4213
|
-
Rabbrev :a :action\ =>\
|
4079
|
+
Rabbrev :a :action\ =>\
|
4214
4080
|
" hax
|
4215
|
-
Rabbrev :c :co________\ =>\
|
4081
|
+
Rabbrev :c :co________\ =>\
|
4216
4082
|
inoreabbrev <buffer> <silent> :c <C-R>=<SID>TheCWord()<CR>
|
4217
|
-
Rabbrev :i :id\ =>\
|
4218
|
-
Rabbrev :o :object\ =>\
|
4219
|
-
Rabbrev :p :partial\ =>\
|
4083
|
+
Rabbrev :i :id\ =>\
|
4084
|
+
Rabbrev :o :object\ =>\
|
4085
|
+
Rabbrev :p :partial\ =>\
|
4220
4086
|
Rabbrev logd( logger.debug
|
4221
4087
|
Rabbrev logi( logger.info
|
4222
4088
|
Rabbrev logw( logger.warn
|
@@ -4231,7 +4097,6 @@ function! s:BufAbbreviations()
|
|
4231
4097
|
Rabbrev AM:: ActionMailer
|
4232
4098
|
Rabbrev AO:: ActiveModel
|
4233
4099
|
Rabbrev AE:: ActiveResource
|
4234
|
-
Rabbrev AWS:: ActionWebService
|
4235
4100
|
endif
|
4236
4101
|
endfunction
|
4237
4102
|
|
@@ -4508,37 +4373,14 @@ function! RailsBufInit(path)
|
|
4508
4373
|
let g:RAILS_HISTORY = s:sub(g:RAILS_HISTORY,'%(.{-}\n){,'.g:rails_history_size.'}\zs.*','')
|
4509
4374
|
endif
|
4510
4375
|
call app.source_callback("config/syntax.vim")
|
4511
|
-
if
|
4512
|
-
setlocal filetype=eruby
|
4513
|
-
elseif &ft =~ '^\%(conf\|ruby\)\=$' && expand("%:e") =~ '^\%(rjs\|rxml\|builder\|rake\|mab\)$'
|
4514
|
-
setlocal filetype=ruby
|
4515
|
-
elseif &ft =~ '^\%(conf\|ruby\)\=$' && expand("%:t") =~ '^\%(\%(Rake\|Gem\|Cap\)file\|Isolate\)$'
|
4516
|
-
setlocal filetype=ruby
|
4517
|
-
elseif &ft =~ '^\%(liquid\)\=$' && expand("%:e") == "liquid"
|
4518
|
-
setlocal filetype=liquid
|
4519
|
-
elseif &ft =~ '^\%(haml\|x\=html\)\=$' && expand("%:e") == "haml"
|
4520
|
-
setlocal filetype=haml
|
4521
|
-
elseif &ft =~ '^\%(sass\|conf\)\=$' && expand("%:e") == "sass"
|
4522
|
-
setlocal filetype=sass
|
4523
|
-
elseif &ft =~ '^\%(scss\|conf\)\=$' && expand("%:e") == "scss"
|
4524
|
-
setlocal filetype=scss
|
4525
|
-
elseif &ft =~ '^\%(lesscss\|conf\)\=$' && expand("%:e") == "less"
|
4526
|
-
setlocal filetype=lesscss
|
4527
|
-
elseif &ft =~ '^\%(dryml\)\=$' && expand("%:e") == "dryml"
|
4528
|
-
setlocal filetype=dryml
|
4529
|
-
elseif (&ft == "" || v:version < 701) && expand("%:e") =~ '^\%(rhtml\|erb\)$'
|
4530
|
-
setlocal filetype=eruby
|
4531
|
-
elseif (&ft == "" || v:version < 700) && expand("%:e") == 'yml'
|
4532
|
-
setlocal filetype=yaml
|
4533
|
-
elseif &ft =~ '^\%(conf\|yaml\)\=$' && expand("%:t") =~ '\.yml\.example$'
|
4376
|
+
if expand('%:t') =~ '\.yml\.example$'
|
4534
4377
|
setlocal filetype=yaml
|
4378
|
+
elseif expand('%:e') =~ '^\%(rjs\|rxml\|builder\|jbuilder\)$'
|
4379
|
+
setlocal filetype=ruby
|
4535
4380
|
elseif firsttime
|
4536
4381
|
" Activate custom syntax
|
4537
4382
|
let &syntax = &syntax
|
4538
4383
|
endif
|
4539
|
-
if firsttime
|
4540
|
-
call s:BufInitStatusline()
|
4541
|
-
endif
|
4542
4384
|
if expand('%:e') == 'log'
|
4543
4385
|
nnoremap <buffer> <silent> R :checktime<CR>
|
4544
4386
|
nnoremap <buffer> <silent> G :checktime<Bar>$<CR>
|
@@ -4618,7 +4460,7 @@ function! s:BufSettings()
|
|
4618
4460
|
endif
|
4619
4461
|
if has("gui_win32") || has("gui_running")
|
4620
4462
|
let code = '*.rb;*.rake;Rakefile'
|
4621
|
-
let templates = '*.'.
|
4463
|
+
let templates = '*.'.join(s:view_types,';*.')
|
4622
4464
|
let fixtures = '*.yml;*.csv'
|
4623
4465
|
let statics = '*.html;*.css;*.js;*.xml;*.xsd;*.sql;.htaccess;README;README_FOR_APP'
|
4624
4466
|
let b:browsefilter = ""
|
@@ -4630,9 +4472,9 @@ function! s:BufSettings()
|
|
4630
4472
|
\."All Files (*.*)\t*.*\n"
|
4631
4473
|
endif
|
4632
4474
|
call self.setvar('&includeexpr','RailsIncludeexpr()')
|
4633
|
-
call self.setvar('&suffixesadd', ".rb,.".
|
4475
|
+
call self.setvar('&suffixesadd', ".rb,.".join(s:view_types,',.'))
|
4634
4476
|
let ft = self.getvar('&filetype')
|
4635
|
-
if ft =~ '^\%(e\=ruby\|[yh]aml\|
|
4477
|
+
if ft =~ '^\%(e\=ruby\|[yh]aml\|coffee\|css\|s[ac]ss\|lesscss\)$'
|
4636
4478
|
call self.setvar('&shiftwidth',2)
|
4637
4479
|
call self.setvar('&softtabstop',2)
|
4638
4480
|
call self.setvar('&expandtab',1)
|
@@ -4641,7 +4483,6 @@ function! s:BufSettings()
|
|
4641
4483
|
endif
|
4642
4484
|
endif
|
4643
4485
|
if ft == 'ruby'
|
4644
|
-
call self.setvar('&suffixesadd',".rb,.".s:gsub(s:view_types,',',',.').",.yml,.csv,.rake,s.rb")
|
4645
4486
|
call self.setvar('&define',self.define_pattern())
|
4646
4487
|
" This really belongs in after/ftplugin/ruby.vim but we'll be nice
|
4647
4488
|
if exists('g:loaded_surround') && self.getvar('surround_101') == ''
|
@@ -4651,9 +4492,7 @@ function! s:BufSettings()
|
|
4651
4492
|
endif
|
4652
4493
|
elseif ft == 'yaml' || fnamemodify(self.name(),':e') == 'yml'
|
4653
4494
|
call self.setvar('&define',self.define_pattern())
|
4654
|
-
|
4655
|
-
elseif ft == 'eruby'
|
4656
|
-
call self.setvar('&suffixesadd',".".s:gsub(s:view_types,',',',.').",.rb,.css,.js,.html,.yml,.csv")
|
4495
|
+
elseif ft =~# '^eruby\>'
|
4657
4496
|
if exists("g:loaded_allml")
|
4658
4497
|
call self.setvar('allml_stylesheet_link_tag', "<%= stylesheet_link_tag '\r' %>")
|
4659
4498
|
call self.setvar('allml_javascript_include_tag', "<%= javascript_include_tag '\r' %>")
|
@@ -4676,7 +4515,7 @@ function! s:BufSettings()
|
|
4676
4515
|
call self.setvar('ragtag_doctype_index', 10)
|
4677
4516
|
endif
|
4678
4517
|
endif
|
4679
|
-
if ft
|
4518
|
+
if ft =~# '^eruby\>' || ft ==# 'yaml'
|
4680
4519
|
" surround.vim
|
4681
4520
|
if exists("g:loaded_surround")
|
4682
4521
|
" The idea behind the || part here is that one can normally define the
|
@@ -4720,9 +4559,7 @@ augroup railsPluginAuto
|
|
4720
4559
|
autocmd BufWritePost */tasks/**.rake call rails#cache_clear("rake_tasks")
|
4721
4560
|
autocmd BufWritePost */generators/** call rails#cache_clear("generators")
|
4722
4561
|
autocmd FileType * if exists("b:rails_root") | call s:BufSettings() | endif
|
4723
|
-
autocmd Syntax ruby,eruby,yaml,haml,javascript,coffee,railslog if exists("b:rails_root") | call s:BufSyntax() | endif
|
4724
|
-
autocmd QuickFixCmdPre make* call s:push_chdir()
|
4725
|
-
autocmd QuickFixCmdPost make* call s:pop_command()
|
4562
|
+
autocmd Syntax ruby,eruby,yaml,haml,javascript,coffee,railslog,sass,scss if exists("b:rails_root") | call s:BufSyntax() | endif
|
4726
4563
|
augroup END
|
4727
4564
|
|
4728
4565
|
" }}}1
|
@@ -1,7 +1,6 @@
|
|
1
1
|
" rails.vim - Detect a rails application
|
2
|
-
" Author: Tim Pope <
|
2
|
+
" Author: Tim Pope <http://tpo.pe/>
|
3
3
|
" GetLatestVimScripts: 1567 1 :AutoInstall: rails.vim
|
4
|
-
" URL: http://rails.vim.tpope.net/
|
5
4
|
|
6
5
|
" Install this file as plugin/rails.vim. See doc/rails.txt for details. (Grab
|
7
6
|
" it from the URL above if you don't have it.) To access it from Vim, see
|
@@ -60,7 +59,7 @@ call s:SetOptDefault("rails_ctags_arguments","--languages=-javascript")
|
|
60
59
|
call s:SetOptDefault("rails_default_file","README")
|
61
60
|
call s:SetOptDefault("rails_root_url",'http://localhost:3000/')
|
62
61
|
call s:SetOptDefault("rails_modelines",0)
|
63
|
-
call s:SetOptDefault("rails_menu"
|
62
|
+
call s:SetOptDefault("rails_menu",0)
|
64
63
|
call s:SetOptDefault("rails_gnu_screen",1)
|
65
64
|
call s:SetOptDefault("rails_history_size",5)
|
66
65
|
call s:SetOptDefault("rails_generators","controller\ngenerator\nhelper\nintegration_test\nmailer\nmetal\nmigration\nmodel\nobserver\nperformance_test\nplugin\nresource\nscaffold\nscaffold_controller\nsession_migration\nstylesheets")
|
@@ -80,6 +79,9 @@ function! s:escvar(r)
|
|
80
79
|
endfunction
|
81
80
|
|
82
81
|
function! s:Detect(filename)
|
82
|
+
if exists('b:rails_root')
|
83
|
+
return s:BufInit(b:rails_root)
|
84
|
+
endif
|
83
85
|
let fn = substitute(fnamemodify(a:filename,":p"),'\c^file://','','')
|
84
86
|
let sep = matchstr(fn,'^[^\\/]\{3,\}\zs[\\/]')
|
85
87
|
if sep != ""
|
@@ -108,7 +110,7 @@ function! s:Detect(filename)
|
|
108
110
|
return s:BufInit(fn)
|
109
111
|
endif
|
110
112
|
let ofn = fn
|
111
|
-
let fn = fnamemodify(ofn,':s?\(.*\)[\/]\(app\|config\|db\|doc\|features\|lib\|log\|public\|script\|spec\|stories\|test\|tmp\|vendor\)\($\|[\/].*$\)?\1?')
|
113
|
+
let fn = fnamemodify(ofn,':s?\(.*\)[\/]\(app\|config\|db\|doc\|extras\|features\|lib\|log\|public\|script\|spec\|stories\|test\|tmp\|vendor\)\($\|[\/].*$\)?\1?')
|
112
114
|
endwhile
|
113
115
|
return 0
|
114
116
|
endfunction
|
data/lib/utils/editor.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'tins/xt/full'
|
2
|
+
|
1
3
|
module Utils
|
2
4
|
class Editor
|
3
5
|
FILE_LINENUMBER_REGEXP = /^\s*([^:]+):(\d+)/
|
@@ -39,8 +41,10 @@ module Utils
|
|
39
41
|
@vim ||=
|
40
42
|
case `uname -s`
|
41
43
|
when /\Adarwin/i
|
42
|
-
if File.directory?('/
|
43
|
-
'/Applications/MacVim.app
|
44
|
+
if File.directory?(path = File.expand_path('~/Applications/MacVim.app')) or
|
45
|
+
File.directory?(path = File.expand_path('/Applications/MacVim.app'))
|
46
|
+
then
|
47
|
+
File.join(path, 'Contents/MacOS/Vim')
|
44
48
|
else
|
45
49
|
'vim'
|
46
50
|
end
|
@@ -80,7 +84,7 @@ module Utils
|
|
80
84
|
end
|
81
85
|
|
82
86
|
def expand_globs(filenames)
|
83
|
-
filenames.map { |f| Dir[f] }.flatten.uniq.sort
|
87
|
+
filenames.map { |f| Dir[f] }.flatten.uniq.sort.full? || filenames
|
84
88
|
end
|
85
89
|
|
86
90
|
def edit(*filenames)
|
@@ -114,11 +118,7 @@ module Utils
|
|
114
118
|
end
|
115
119
|
|
116
120
|
def edit_source_location(source_location)
|
117
|
-
|
118
|
-
edit_file_linenumber(source_location[0], source_location[1])
|
119
|
-
else
|
120
|
-
false
|
121
|
-
end
|
121
|
+
edit_file_linenumber(source_location[0], source_location[1])
|
122
122
|
end
|
123
123
|
|
124
124
|
def ensure_running
|
data/lib/utils/version.rb
CHANGED
data/utils.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "utils"
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.38"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Florian Frank"]
|
9
|
-
s.date = "2012-
|
9
|
+
s.date = "2012-03-01"
|
10
10
|
s.description = "This ruby gem provides some useful command line utilities"
|
11
11
|
s.email = "flori@ping.de"
|
12
12
|
s.executables = ["chroot-exec", "chroot-libs", "classify", "discover", "edit", "edit_wait", "enum", "errf", "git-empty", "myex", "number_files", "path", "probe", "same_files", "search", "sedit", "sshscreen", "strip_spaces", "unquarantine_apps", "untest", "utils-install-config", "utils-utilsrc", "vacuum_firefox_sqlite", "xmp"]
|
@@ -15,7 +15,7 @@ Gem::Specification.new do |s|
|
|
15
15
|
s.homepage = "http://github.com/flori/utils"
|
16
16
|
s.rdoc_options = ["--title", "Utils - Some useful command line utilities", "--main", "README.rdoc"]
|
17
17
|
s.require_paths = ["lib"]
|
18
|
-
s.rubygems_version = "1.8.
|
18
|
+
s.rubygems_version = "1.8.17"
|
19
19
|
s.summary = "Some useful command line utilities"
|
20
20
|
|
21
21
|
if s.respond_to? :specification_version then
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.38
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-03-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: gem_hadar
|
16
|
-
requirement: &
|
16
|
+
requirement: &2153080320 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.1.4
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2153080320
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: tins
|
27
|
-
requirement: &
|
27
|
+
requirement: &2153079600 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.3'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2153079600
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: term-ansicolor
|
38
|
-
requirement: &
|
38
|
+
requirement: &2153078600 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '1.0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2153078600
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: dslkit
|
49
|
-
requirement: &
|
49
|
+
requirement: &2153077740 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0.2'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2153077740
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: pry-editline
|
60
|
-
requirement: &
|
60
|
+
requirement: &2153037600 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2153037600
|
69
69
|
description: This ruby gem provides some useful command line utilities
|
70
70
|
email: flori@ping.de
|
71
71
|
executables:
|
@@ -96,17 +96,28 @@ executables:
|
|
96
96
|
extensions: []
|
97
97
|
extra_rdoc_files:
|
98
98
|
- README.rdoc
|
99
|
-
-
|
100
|
-
|
101
|
-
-
|
102
|
-
|
103
|
-
-
|
104
|
-
|
105
|
-
-
|
106
|
-
|
107
|
-
-
|
108
|
-
|
109
|
-
-
|
99
|
+
- !binary |-
|
100
|
+
bGliL3V0aWxzL2NvbmZpZy9jb25maWdfZmlsZS5yYg==
|
101
|
+
- !binary |-
|
102
|
+
bGliL3V0aWxzL2NvbmZpZy5yYg==
|
103
|
+
- !binary |-
|
104
|
+
bGliL3V0aWxzL2VkaXRvci5yYg==
|
105
|
+
- !binary |-
|
106
|
+
bGliL3V0aWxzL2ZpbGVfeHQucmI=
|
107
|
+
- !binary |-
|
108
|
+
bGliL3V0aWxzL2ZpbmQucmI=
|
109
|
+
- !binary |-
|
110
|
+
bGliL3V0aWxzL2ZpbmRlci5yYg==
|
111
|
+
- !binary |-
|
112
|
+
bGliL3V0aWxzL2dyZXBwZXIucmI=
|
113
|
+
- !binary |-
|
114
|
+
bGliL3V0aWxzL21kNS5yYg==
|
115
|
+
- !binary |-
|
116
|
+
bGliL3V0aWxzL3BhdHRlcm5zLnJi
|
117
|
+
- !binary |-
|
118
|
+
bGliL3V0aWxzL3ZlcnNpb24ucmI=
|
119
|
+
- !binary |-
|
120
|
+
bGliL3V0aWxzLnJi
|
110
121
|
files:
|
111
122
|
- .gitignore
|
112
123
|
- COPYING
|
@@ -214,6 +225,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
214
225
|
- - ! '>='
|
215
226
|
- !ruby/object:Gem::Version
|
216
227
|
version: '0'
|
228
|
+
segments:
|
229
|
+
- 0
|
230
|
+
hash: 2842823016203684465
|
217
231
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
232
|
none: false
|
219
233
|
requirements:
|
@@ -222,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
222
236
|
version: '0'
|
223
237
|
requirements: []
|
224
238
|
rubyforge_project:
|
225
|
-
rubygems_version: 1.8.
|
239
|
+
rubygems_version: 1.8.17
|
226
240
|
signing_key:
|
227
241
|
specification_version: 3
|
228
242
|
summary: Some useful command line utilities
|