diff options
Diffstat (limited to 'vim/plugin/rails.vim')
| -rw-r--r-- | vim/plugin/rails.vim | 339 |
1 files changed, 0 insertions, 339 deletions
diff --git a/vim/plugin/rails.vim b/vim/plugin/rails.vim deleted file mode 100644 index 2dd17f7..0000000 --- a/vim/plugin/rails.vim +++ /dev/null @@ -1,339 +0,0 @@ -" rails.vim - Detect a rails application -" Author: Tim Pope <http://tpo.pe/> -" GetLatestVimScripts: 1567 1 :AutoInstall: rails.vim - -" Install this file as plugin/rails.vim. See doc/rails.txt for details. (Grab -" it from the URL above if you don't have it.) To access it from Vim, see -" :help add-local-help (hint: :helptags ~/.vim/doc) Afterwards, you should be -" able to do :help rails - -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 - -function! s:autoload(...) - if !exists("g:autoloaded_rails") && v:version >= 700 - runtime! autoload/rails.vim - endif - if exists("g:autoloaded_rails") - if a:0 - exe a:1 - endif - return 1 - endif - if !exists("g:rails_no_autoload_warning") - let g:rails_no_autoload_warning = 1 - if v:version >= 700 - call s:error("Disabling rails.vim: autoload/rails.vim is missing") - else - call s:error("Disabling rails.vim: Vim version 7 or higher required") - endif - endif - return "" -endfunction - -" }}}1 -" Configuration {{{ - -function! s:SetOptDefault(opt,val) - if !exists("g:".a:opt) - let g:{a:opt} = a:val - endif -endfunction - -call s:SetOptDefault("rails_statusline",1) -call s:SetOptDefault("rails_syntax",1) -call s:SetOptDefault("rails_mappings",1) -call s:SetOptDefault("rails_abbreviations",1) -call s:SetOptDefault("rails_ctags_arguments","--languages=-javascript") -call s:SetOptDefault("rails_default_file","README") -call s:SetOptDefault("rails_root_url",'http://localhost:3000/') -call s:SetOptDefault("rails_modelines",0) -call s:SetOptDefault("rails_menu",0) -call s:SetOptDefault("rails_gnu_screen",1) -call s:SetOptDefault("rails_history_size",5) -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") -if exists("g:loaded_dbext") && executable("sqlite3") && ! executable("sqlite") - " Since dbext can't find it by itself - call s:SetOptDefault("dbext_default_SQLITE_bin","sqlite3") -endif - -" }}}1 -" Detection {{{1 - -function! s:escvar(r) - let r = fnamemodify(a:r,':~') - let r = substitute(r,'\W','\="_".char2nr(submatch(0))."_"','g') - let r = substitute(r,'^\d','_&','') - return r -endfunction - -function! s:Detect(filename) - let fn = substitute(fnamemodify(a:filename,":p"),'\c^file://','','') - let sep = matchstr(fn,'^[^\\/]\{3,\}\zs[\\/]') - if sep != "" - let fn = getcwd().sep.fn - endif - if fn =~ '[\/]config[\/]environment\.rb$' - return s:BufInit(strpart(fn,0,strlen(fn)-22)) - endif - if isdirectory(fn) - let fn = fnamemodify(fn,':s?[\/]$??') - else - let fn = fnamemodify(fn,':s?\(.*\)[\/][^\/]*$?\1?') - endif - let ofn = "" - let nfn = fn - while nfn != ofn && nfn != "" - if exists("s:_".s:escvar(nfn)) - return s:BufInit(nfn) - endif - let ofn = nfn - let nfn = fnamemodify(nfn,':h') - endwhile - let ofn = "" - while fn != ofn - if filereadable(fn . "/config/environment.rb") - 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?') - endwhile - return 0 -endfunction - -function! s:BufInit(path) - let s:_{s:escvar(a:path)} = 1 - if s:autoload() - return RailsBufInit(a:path) - endif -endfunction - -" }}}1 -" Initialization {{{1 - -augroup railsPluginDetect - autocmd! - autocmd BufNewFile,BufRead * call s:Detect(expand("<afile>:p")) - autocmd VimEnter * if expand("<amatch>") == "" && !exists("b:rails_root") | call s:Detect(getcwd()) | endif | if exists("b:rails_root") | silent doau User BufEnterRails | endif - autocmd FileType netrw if !exists("b:rails_root") | call s:Detect(expand("<afile>:p")) | endif | if exists("b:rails_root") | silent doau User BufEnterRails | endif - 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 Syntax railslog if s:autoload()|call rails#log_syntax()|endif -augroup END - -command! -bar -bang -nargs=* -complete=dir Rails :if s:autoload()|call rails#new_app_command(<bang>0,<f-args>)|endif - -" }}}1 -" abolish.vim support {{{1 - -function! s:function(name) - return function(substitute(a:name,'^s:',matchstr(expand('<sfile>'), '<SNR>\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 -" Menus {{{1 - -if !(g:rails_menu && has("menu")) - finish -endif - -function! s:sub(str,pat,rep) - return substitute(a:str,'\v\C'.a:pat,a:rep,'') -endfunction - -function! s:gsub(str,pat,rep) - return substitute(a:str,'\v\C'.a:pat,a:rep,'g') -endfunction - -function! s:menucmd(priority) - return 'anoremenu <script> '.(exists("$CREAM") ? 87 : '').s:gsub(g:rails_installed_menu,'[^.]','').'.'.a:priority.' ' -endfunction - -function! s:CreateMenus() abort - if exists("g:rails_installed_menu") && g:rails_installed_menu != "" - exe "aunmenu ".s:gsub(g:rails_installed_menu,'\&','') - unlet g:rails_installed_menu - endif - if has("menu") && (exists("g:did_install_default_menus") || exists("$CREAM")) && g:rails_menu - if g:rails_menu > 1 - let g:rails_installed_menu = '&Rails' - else - let g:rails_installed_menu = '&Plugin.&Rails' - endif - let dots = s:gsub(g:rails_installed_menu,'[^.]','') - let menucmd = s:menucmd(200) - if exists("$CREAM") - exe menucmd.g:rails_installed_menu.'.-PSep- :' - exe menucmd.g:rails_installed_menu.'.&Related\ file\ :R\ /\ Alt+] :R<CR>' - exe menucmd.g:rails_installed_menu.'.&Alternate\ file\ :A\ /\ Alt+[ :A<CR>' - exe menucmd.g:rails_installed_menu.'.&File\ under\ cursor\ Ctrl+Enter :Rfind<CR>' - else - exe menucmd.g:rails_installed_menu.'.-PSep- :' - exe menucmd.g:rails_installed_menu.'.&Related\ file\ :R\ /\ ]f :R<CR>' - exe menucmd.g:rails_installed_menu.'.&Alternate\ file\ :A\ /\ [f :A<CR>' - exe menucmd.g:rails_installed_menu.'.&File\ under\ cursor\ gf :Rfind<CR>' - endif - exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &Controller :Rcontroller application<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &Helper :Rhelper application<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &Javascript :Rjavascript application<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &Layout :Rlayout application<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &README :R doc/README_FOR_APP<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.&Environment :Renvironment<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.&Database\ Configuration :R config/database.yml<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.Database\ &Schema :Rmigration 0<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.R&outes :Rinitializer<CR>' - exe menucmd.g:rails_installed_menu.'.&Other\ files.&Test\ Helper :Rintegrationtest<CR>' - exe menucmd.g:rails_installed_menu.'.-FSep- :' - exe menucmd.g:rails_installed_menu.'.Ra&ke\ :Rake :Rake<CR>' - let menucmd = substitute(menucmd,'200 $','500 ','') - exe menucmd.g:rails_installed_menu.'.&Server\ :Rserver.&Start\ :Rserver :Rserver<CR>' - exe menucmd.g:rails_installed_menu.'.&Server\ :Rserver.&Force\ start\ :Rserver! :Rserver!<CR>' - exe menucmd.g:rails_installed_menu.'.&Server\ :Rserver.&Kill\ :Rserver!\ - :Rserver! -<CR>' - exe substitute(menucmd,'<script>','<script> <silent>','').g:rails_installed_menu.'.&Evaluate\ Ruby\.\.\.\ :Rp :call <SID>menuprompt("Rp","Code to execute and output: ")<CR>' - exe menucmd.g:rails_installed_menu.'.&Console\ :Rscript :Rscript console<CR>' - exe menucmd.g:rails_installed_menu.'.&Preview\ :Rpreview :Rpreview<CR>' - exe menucmd.g:rails_installed_menu.'.&Log\ file\ :Rlog :Rlog<CR>' - exe substitute(s:sub(menucmd,'anoremenu','vnoremenu'),'<script>','<script> <silent>','').g:rails_installed_menu.'.E&xtract\ as\ partial\ :Rextract :call <SID>menuprompt("'."'".'<,'."'".'>Rextract","Partial name (e.g., template or /controller/template): ")<CR>' - exe menucmd.g:rails_installed_menu.'.&Migration\ writer\ :Rinvert :Rinvert<CR>' - exe menucmd.' '.g:rails_installed_menu.'.-HSep- :' - exe substitute(menucmd,'<script>','<script> <silent>','').g:rails_installed_menu.'.&Help\ :help\ rails :if <SID>autoload()<Bar>exe RailsHelpCommand("")<Bar>endif<CR>' - exe substitute(menucmd,'<script>','<script> <silent>','').g:rails_installed_menu.'.Abo&ut\ :if <SID>autoload()<Bar>exe RailsHelpCommand("about")<Bar>endif<CR>' - let g:rails_did_menus = 1 - call s:ProjectMenu() - call s:menuBufLeave() - if exists("b:rails_root") - call s:menuBufEnter() - endif - endif -endfunction - -function! s:ProjectMenu() - if exists("g:rails_did_menus") && g:rails_history_size > 0 - if !exists("g:RAILS_HISTORY") - let g:RAILS_HISTORY = "" - endif - let history = g:RAILS_HISTORY - let menu = s:gsub(g:rails_installed_menu,'\&','') - silent! exe "aunmenu <script> ".menu.".Projects" - let dots = s:gsub(menu,'[^.]','') - exe 'anoremenu <script> <silent> '.(exists("$CREAM") ? '87' : '').dots.'.100 '.menu.'.Pro&jects.&New\.\.\.\ :Rails :call <SID>menuprompt("Rails","New application path and additional arguments: ")<CR>' - exe 'anoremenu <script> '.menu.'.Pro&jects.-FSep- :' - while history =~ '\n' - let proj = matchstr(history,'^.\{-\}\ze\n') - let history = s:sub(history,'^.{-}\n','') - exe 'anoremenu <script> '.menu.'.Pro&jects.'.s:gsub(proj,'[.\\ ]','\\&').' :e '.s:gsub(proj."/".g:rails_default_file,'[ !%#]','\\&')."<CR>" - endwhile - endif -endfunction - -function! s:menuBufEnter() - if exists("g:rails_installed_menu") && g:rails_installed_menu != "" - let menu = s:gsub(g:rails_installed_menu,'\&','') - exe 'amenu enable '.menu.'.*' - if RailsFileType() !~ '^view\>' - exe 'vmenu disable '.menu.'.Extract\ as\ partial' - endif - if RailsFileType() !~ '^\%(db-\)\=migration$' || RailsFilePath() =~ '\<db/schema\.rb$' - exe 'amenu disable '.menu.'.Migration\ writer' - endif - call s:ProjectMenu() - silent! exe 'aunmenu '.menu.'.Rake\ tasks' - silent! exe 'aunmenu '.menu.'.Generate' - silent! exe 'aunmenu '.menu.'.Destroy' - if rails#app().cache.needs('rake_tasks') || empty(rails#app().rake_tasks()) - exe substitute(s:menucmd(300),'<script>','<script> <silent>','').g:rails_installed_menu.'.Rake\ &tasks\ :Rake.Fill\ this\ menu :call rails#app().rake_tasks()<Bar>call <SID>menuBufLeave()<Bar>call <SID>menuBufEnter()<CR>' - else - let i = 0 - while i < len(rails#app().rake_tasks()) - let task = rails#app().rake_tasks()[i] - exe s:menucmd(300).g:rails_installed_menu.'.Rake\ &tasks\ :Rake.'.s:sub(task,':',':.').' :Rake '.task.'<CR>' - let i += 1 - endwhile - endif - let i = 0 - let menucmd = substitute(s:menucmd(400),'<script>','<script> <silent>','').g:rails_installed_menu - while i < len(rails#app().generators()) - let generator = rails#app().generators()[i] - exe menucmd.'.&Generate\ :Rgen.'.s:gsub(generator,'_','\\ ').' :call <SID>menuprompt("Rgenerate '.generator.'","Arguments for script/generate '.generator.': ")<CR>' - exe menucmd.'.&Destroy\ :Rdestroy.'.s:gsub(generator,'_','\\ ').' :call <SID>menuprompt("Rdestroy '.generator.'","Arguments for script/destroy '.generator.': ")<CR>' - let i += 1 - endwhile - endif -endfunction - -function! s:menuBufLeave() - if exists("g:rails_installed_menu") && g:rails_installed_menu != "" - let menu = s:gsub(g:rails_installed_menu,'\&','') - exe 'amenu disable '.menu.'.*' - exe 'amenu enable '.menu.'.Help\ ' - exe 'amenu enable '.menu.'.About\ ' - exe 'amenu enable '.menu.'.Projects' - silent! exe 'aunmenu '.menu.'.Rake\ tasks' - silent! exe 'aunmenu '.menu.'.Generate' - silent! exe 'aunmenu '.menu.'.Destroy' - exe s:menucmd(300).g:rails_installed_menu.'.Rake\ tasks\ :Rake.-TSep- :' - exe s:menucmd(400).g:rails_installed_menu.'.&Generate\ :Rgen.-GSep- :' - exe s:menucmd(400).g:rails_installed_menu.'.&Destroy\ :Rdestroy.-DSep- :' - endif -endfunction - -function! s:menuprompt(vimcmd,prompt) - let res = inputdialog(a:prompt,'','!!!') - if res == '!!!' - return "" - endif - exe a:vimcmd." ".res -endfunction - -call s:CreateMenus() - -augroup railsPluginMenu - autocmd! - autocmd User BufEnterRails call s:menuBufEnter() - autocmd User BufLeaveRails call s:menuBufLeave() - " g:RAILS_HISTORY hasn't been set when s:InitPlugin() is called. - autocmd VimEnter * call s:ProjectMenu() -augroup END - -" }}}1 -" vim:set sw=2 sts=2: |