" rails.vim - Detect a rails application " Author: Tim Pope " GetLatestVimScripts: 1567 1 :AutoInstall: rails.vim " Install this file as plugin/rails.vim. if exists('g:loaded_rails') || &cp || v:version < 700 finish endif let g:loaded_rails = 1 " Utility Functions {{{1 function! s:error(str) echohl ErrorMsg echomsg a:str echohl None let v:errmsg = a:str endfunction " }}}1 " Detection {{{1 function! RailsDetect(...) abort if exists('b:rails_root') return 1 endif let fn = fnamemodify(a:0 ? a:1 : expand('%'), ':p') if !isdirectory(fn) let fn = fnamemodify(fn, ':h') endif let file = findfile('config/environment.rb', escape(fn, ', ').';') if !empty(file) let b:rails_root = fnamemodify(file, ':p:h:h') return 1 endif endfunction " }}}1 " Initialization {{{1 if !exists('g:did_load_ftplugin') filetype plugin on endif if !exists('g:loaded_projectionist') runtime! plugin/projectionist.vim endif augroup railsPluginDetect autocmd! autocmd BufEnter * if exists("b:rails_root")|silent doau User BufEnterRails|endif autocmd BufLeave * if exists("b:rails_root")|silent doau User BufLeaveRails|endif autocmd BufNewFile,BufReadPost * \ if RailsDetect(expand(":p")) && empty(&filetype) | \ call rails#buffer_setup() | \ endif autocmd VimEnter * \ if empty(expand("")) && RailsDetect(getcwd()) | \ call rails#buffer_setup() | \ silent doau User BufEnterRails | \ endif autocmd FileType netrw \ if RailsDetect() | \ silent doau User BufEnterRails | \ endif autocmd FileType * if RailsDetect() | call rails#buffer_setup() | endif autocmd BufNewFile,BufReadPost *.yml.example set filetype=yaml autocmd BufNewFile,BufReadPost *.rjs,*.rxml,*.builder,*.jbuilder,*.ruby \ if &filetype !=# 'ruby' | set filetype=ruby | endif autocmd BufReadPost *.log if RailsDetect() | set filetype=railslog | endif autocmd FileType railslog call rails#log_setup() autocmd Syntax railslog call rails#log_syntax() autocmd Syntax ruby,eruby,yaml,haml,javascript,coffee,sass,scss \ if RailsDetect() | call rails#buffer_syntax() | endif autocmd User ProjectionistDetect \ if RailsDetect(get(g:, 'projectionist_file', '')) | \ call projectionist#append(b:rails_root, \ {'*': {'make': split(rails#app().rake_command('static'))}}) | \ endif augroup END command! -bar -bang -nargs=* -complete=dir Rails execute rails#new_app_command(0,) " }}}1 " abolish.vim support {{{1 function! s:function(name) return function(substitute(a:name,'^s:',matchstr(expand(''), '\d\+_'),'')) endfunction augroup railsPluginAbolish autocmd! autocmd VimEnter * call s:abolish_setup() augroup END function! s:abolish_setup() if exists('g:Abolish') && has_key(g:Abolish,'Coercions') if !has_key(g:Abolish.Coercions,'l') let g:Abolish.Coercions.l = s:function('s:abolish_l') endif if !has_key(g:Abolish.Coercions,'t') let g:Abolish.Coercions.t = s:function('s:abolish_t') endif endif endfunction function! s:abolish_l(word) let singular = rails#singularize(a:word) return a:word ==? singular ? rails#pluralize(a:word) : singular endfunction function! s:abolish_t(word) if a:word =~# '\u' return rails#pluralize(rails#underscore(a:word)) else return rails#singularize(rails#camelize(a:word)) endif endfunction " }}}1 " vim:set sw=2 sts=2: