utils 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +68 -0
- data/VERSION +1 -0
- data/bin/chroot-exec +12 -0
- data/bin/chroot-libs +18 -0
- data/bin/classify +37 -0
- data/bin/discover +137 -0
- data/bin/edit +74 -0
- data/bin/errf +32 -0
- data/bin/git-empty +8 -0
- data/bin/myex +90 -0
- data/bin/number_files +26 -0
- data/bin/same_files +37 -0
- data/bin/search +205 -0
- data/bin/sedit +3 -0
- data/bin/sshscreen +68 -0
- data/bin/term +21 -0
- data/bin/unquarantine_apps +8 -0
- data/bin/untest +17 -0
- data/bin/utils-install-config +10 -0
- data/bin/vacuum_firefox_sqlite +22 -0
- data/bin/xmp +74 -0
- data/lib/utils.rb +8 -0
- data/lib/utils/config.rb +23 -0
- data/lib/utils/config/gdb/asm +179 -0
- data/lib/utils/config/gdb/ruby +528 -0
- data/lib/utils/config/gdbinit +8 -0
- data/lib/utils/config/irbrc +455 -0
- data/lib/utils/config/rdebugrc +2 -0
- data/lib/utils/config/screenrc +143 -0
- data/lib/utils/config/vim/autoload/Align.vim +1029 -0
- data/lib/utils/config/vim/autoload/AlignMaps.vim +330 -0
- data/lib/utils/config/vim/autoload/rails.vim +4744 -0
- data/lib/utils/config/vim/autoload/rubycomplete.vim +801 -0
- data/lib/utils/config/vim/autoload/sqlcomplete.vim +741 -0
- data/lib/utils/config/vim/autoload/vimball.vim +750 -0
- data/lib/utils/config/vim/colors/flori.vim +113 -0
- data/lib/utils/config/vim/compiler/eruby.vim +40 -0
- data/lib/utils/config/vim/compiler/ruby.vim +67 -0
- data/lib/utils/config/vim/compiler/rubyunit.vim +34 -0
- data/lib/utils/config/vim/ftdetect/ragel.vim +2 -0
- data/lib/utils/config/vim/ftdetect/ruby.vim +17 -0
- data/lib/utils/config/vim/ftplugin/eruby.vim +100 -0
- data/lib/utils/config/vim/ftplugin/ruby.vim +260 -0
- data/lib/utils/config/vim/ftplugin/xml.vim +941 -0
- data/lib/utils/config/vim/indent/IndentAnything_html.vim +35 -0
- data/lib/utils/config/vim/indent/eruby.vim +77 -0
- data/lib/utils/config/vim/indent/javascript.vim +116 -0
- data/lib/utils/config/vim/indent/ruby.vim +377 -0
- data/lib/utils/config/vim/plugin/AlignMapsPlugin.vim +242 -0
- data/lib/utils/config/vim/plugin/AlignPlugin.vim +41 -0
- data/lib/utils/config/vim/plugin/Decho.vim +592 -0
- data/lib/utils/config/vim/plugin/IndentAnything.vim +675 -0
- data/lib/utils/config/vim/plugin/bufexplorer.vim +1144 -0
- data/lib/utils/config/vim/plugin/cecutil.vim +482 -0
- data/lib/utils/config/vim/plugin/fugitive.vim +1703 -0
- data/lib/utils/config/vim/plugin/lusty-explorer.vim +1509 -0
- data/lib/utils/config/vim/plugin/rails.vim +340 -0
- data/lib/utils/config/vim/plugin/rubyextra.vim +193 -0
- data/lib/utils/config/vim/plugin/surround.vim +628 -0
- data/lib/utils/config/vim/plugin/taglist.vim +4546 -0
- data/lib/utils/config/vim/plugin/test/IndentAnything/test.js +131 -0
- data/lib/utils/config/vim/plugin/vimballPlugin.vim +40 -0
- data/lib/utils/config/vim/syntax/Decho.vim +101 -0
- data/lib/utils/config/vim/syntax/eruby.vim +73 -0
- data/lib/utils/config/vim/syntax/javascript.vim +246 -0
- data/lib/utils/config/vim/syntax/ragel.vim +165 -0
- data/lib/utils/config/vim/syntax/ruby.vim +367 -0
- data/lib/utils/config/vimrc +461 -0
- data/lib/utils/file.rb +49 -0
- data/lib/utils/find.rb +54 -0
- data/lib/utils/md5.rb +23 -0
- data/lib/utils/patterns.rb +34 -0
- data/lib/utils/version.rb +8 -0
- data/utils.gemspec +33 -0
- metadata +183 -0
@@ -0,0 +1,340 @@
|
|
1
|
+
" rails.vim - Detect a rails application
|
2
|
+
" Author: Tim Pope <vimNOSPAM@tpope.org>
|
3
|
+
" GetLatestVimScripts: 1567 1 :AutoInstall: rails.vim
|
4
|
+
" URL: http://rails.vim.tpope.net/
|
5
|
+
|
6
|
+
" Install this file as plugin/rails.vim. See doc/rails.txt for details. (Grab
|
7
|
+
" it from the URL above if you don't have it.) To access it from Vim, see
|
8
|
+
" :help add-local-help (hint: :helptags ~/.vim/doc) Afterwards, you should be
|
9
|
+
" able to do :help rails
|
10
|
+
|
11
|
+
if exists('g:loaded_rails') || &cp || v:version < 700
|
12
|
+
finish
|
13
|
+
endif
|
14
|
+
let g:loaded_rails = 1
|
15
|
+
|
16
|
+
" Utility Functions {{{1
|
17
|
+
|
18
|
+
function! s:error(str)
|
19
|
+
echohl ErrorMsg
|
20
|
+
echomsg a:str
|
21
|
+
echohl None
|
22
|
+
let v:errmsg = a:str
|
23
|
+
endfunction
|
24
|
+
|
25
|
+
function! s:autoload(...)
|
26
|
+
if !exists("g:autoloaded_rails") && v:version >= 700
|
27
|
+
runtime! autoload/rails.vim
|
28
|
+
endif
|
29
|
+
if exists("g:autoloaded_rails")
|
30
|
+
if a:0
|
31
|
+
exe a:1
|
32
|
+
endif
|
33
|
+
return 1
|
34
|
+
endif
|
35
|
+
if !exists("g:rails_no_autoload_warning")
|
36
|
+
let g:rails_no_autoload_warning = 1
|
37
|
+
if v:version >= 700
|
38
|
+
call s:error("Disabling rails.vim: autoload/rails.vim is missing")
|
39
|
+
else
|
40
|
+
call s:error("Disabling rails.vim: Vim version 7 or higher required")
|
41
|
+
endif
|
42
|
+
endif
|
43
|
+
return ""
|
44
|
+
endfunction
|
45
|
+
|
46
|
+
" }}}1
|
47
|
+
" Configuration {{{
|
48
|
+
|
49
|
+
function! s:SetOptDefault(opt,val)
|
50
|
+
if !exists("g:".a:opt)
|
51
|
+
let g:{a:opt} = a:val
|
52
|
+
endif
|
53
|
+
endfunction
|
54
|
+
|
55
|
+
call s:SetOptDefault("rails_statusline",1)
|
56
|
+
call s:SetOptDefault("rails_syntax",1)
|
57
|
+
call s:SetOptDefault("rails_mappings",1)
|
58
|
+
call s:SetOptDefault("rails_abbreviations",1)
|
59
|
+
call s:SetOptDefault("rails_ctags_arguments","--languages=-javascript")
|
60
|
+
call s:SetOptDefault("rails_default_file","README")
|
61
|
+
call s:SetOptDefault("rails_root_url",'http://localhost:3000/')
|
62
|
+
call s:SetOptDefault("rails_modelines",0)
|
63
|
+
call s:SetOptDefault("rails_menu",!has('mac'))
|
64
|
+
call s:SetOptDefault("rails_gnu_screen",1)
|
65
|
+
call s:SetOptDefault("rails_history_size",5)
|
66
|
+
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")
|
67
|
+
if exists("g:loaded_dbext") && executable("sqlite3") && ! executable("sqlite")
|
68
|
+
" Since dbext can't find it by itself
|
69
|
+
call s:SetOptDefault("dbext_default_SQLITE_bin","sqlite3")
|
70
|
+
endif
|
71
|
+
|
72
|
+
" }}}1
|
73
|
+
" Detection {{{1
|
74
|
+
|
75
|
+
function! s:escvar(r)
|
76
|
+
let r = fnamemodify(a:r,':~')
|
77
|
+
let r = substitute(r,'\W','\="_".char2nr(submatch(0))."_"','g')
|
78
|
+
let r = substitute(r,'^\d','_&','')
|
79
|
+
return r
|
80
|
+
endfunction
|
81
|
+
|
82
|
+
function! s:Detect(filename)
|
83
|
+
let fn = substitute(fnamemodify(a:filename,":p"),'\c^file://','','')
|
84
|
+
let sep = matchstr(fn,'^[^\\/]\{3,\}\zs[\\/]')
|
85
|
+
if sep != ""
|
86
|
+
let fn = getcwd().sep.fn
|
87
|
+
endif
|
88
|
+
if fn =~ '[\/]config[\/]environment\.rb$'
|
89
|
+
return s:BufInit(strpart(fn,0,strlen(fn)-22))
|
90
|
+
endif
|
91
|
+
if isdirectory(fn)
|
92
|
+
let fn = fnamemodify(fn,':s?[\/]$??')
|
93
|
+
else
|
94
|
+
let fn = fnamemodify(fn,':s?\(.*\)[\/][^\/]*$?\1?')
|
95
|
+
endif
|
96
|
+
let ofn = ""
|
97
|
+
let nfn = fn
|
98
|
+
while nfn != ofn && nfn != ""
|
99
|
+
if exists("s:_".s:escvar(nfn))
|
100
|
+
return s:BufInit(nfn)
|
101
|
+
endif
|
102
|
+
let ofn = nfn
|
103
|
+
let nfn = fnamemodify(nfn,':h')
|
104
|
+
endwhile
|
105
|
+
let ofn = ""
|
106
|
+
while fn != ofn
|
107
|
+
if filereadable(fn . "/config/environment.rb")
|
108
|
+
return s:BufInit(fn)
|
109
|
+
endif
|
110
|
+
let ofn = fn
|
111
|
+
let fn = fnamemodify(ofn,':s?\(.*\)[\/]\(app\|config\|db\|doc\|features\|lib\|log\|public\|script\|spec\|stories\|test\|tmp\|vendor\)\($\|[\/].*$\)?\1?')
|
112
|
+
endwhile
|
113
|
+
return 0
|
114
|
+
endfunction
|
115
|
+
|
116
|
+
function! s:BufInit(path)
|
117
|
+
let s:_{s:escvar(a:path)} = 1
|
118
|
+
if s:autoload()
|
119
|
+
return RailsBufInit(a:path)
|
120
|
+
endif
|
121
|
+
endfunction
|
122
|
+
|
123
|
+
" }}}1
|
124
|
+
" Initialization {{{1
|
125
|
+
|
126
|
+
augroup railsPluginDetect
|
127
|
+
autocmd!
|
128
|
+
autocmd BufNewFile,BufRead * call s:Detect(expand("<afile>:p"))
|
129
|
+
autocmd VimEnter * if expand("<amatch>") == "" && !exists("b:rails_root") | call s:Detect(getcwd()) | endif | if exists("b:rails_root") | silent doau User BufEnterRails | endif
|
130
|
+
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
|
131
|
+
autocmd BufEnter * if exists("b:rails_root")|silent doau User BufEnterRails|endif
|
132
|
+
autocmd BufLeave * if exists("b:rails_root")|silent doau User BufLeaveRails|endif
|
133
|
+
autocmd Syntax railslog if s:autoload()|call rails#log_syntax()|endif
|
134
|
+
augroup END
|
135
|
+
|
136
|
+
command! -bar -bang -nargs=* -complete=dir Rails :if s:autoload()|call rails#new_app_command(<bang>0,<f-args>)|endif
|
137
|
+
|
138
|
+
" }}}1
|
139
|
+
" abolish.vim support {{{1
|
140
|
+
|
141
|
+
function! s:function(name)
|
142
|
+
return function(substitute(a:name,'^s:',matchstr(expand('<sfile>'), '<SNR>\d\+_'),''))
|
143
|
+
endfunction
|
144
|
+
|
145
|
+
augroup railsPluginAbolish
|
146
|
+
autocmd!
|
147
|
+
autocmd VimEnter * call s:abolish_setup()
|
148
|
+
augroup END
|
149
|
+
|
150
|
+
function! s:abolish_setup()
|
151
|
+
if exists('g:Abolish') && has_key(g:Abolish,'Coercions')
|
152
|
+
if !has_key(g:Abolish.Coercions,'l')
|
153
|
+
let g:Abolish.Coercions.l = s:function('s:abolish_l')
|
154
|
+
endif
|
155
|
+
if !has_key(g:Abolish.Coercions,'t')
|
156
|
+
let g:Abolish.Coercions.t = s:function('s:abolish_t')
|
157
|
+
endif
|
158
|
+
endif
|
159
|
+
endfunction
|
160
|
+
|
161
|
+
function! s:abolish_l(word)
|
162
|
+
let singular = rails#singularize(a:word)
|
163
|
+
return a:word ==? singular ? rails#pluralize(a:word) : singular
|
164
|
+
endfunction
|
165
|
+
|
166
|
+
function! s:abolish_t(word)
|
167
|
+
if a:word =~# '\u'
|
168
|
+
return rails#pluralize(rails#underscore(a:word))
|
169
|
+
else
|
170
|
+
return rails#singularize(rails#camelize(a:word))
|
171
|
+
endif
|
172
|
+
endfunction
|
173
|
+
|
174
|
+
" }}}1
|
175
|
+
" Menus {{{1
|
176
|
+
|
177
|
+
if !(g:rails_menu && has("menu"))
|
178
|
+
finish
|
179
|
+
endif
|
180
|
+
|
181
|
+
function! s:sub(str,pat,rep)
|
182
|
+
return substitute(a:str,'\v\C'.a:pat,a:rep,'')
|
183
|
+
endfunction
|
184
|
+
|
185
|
+
function! s:gsub(str,pat,rep)
|
186
|
+
return substitute(a:str,'\v\C'.a:pat,a:rep,'g')
|
187
|
+
endfunction
|
188
|
+
|
189
|
+
function! s:menucmd(priority)
|
190
|
+
return 'anoremenu <script> '.(exists("$CREAM") ? 87 : '').s:gsub(g:rails_installed_menu,'[^.]','').'.'.a:priority.' '
|
191
|
+
endfunction
|
192
|
+
|
193
|
+
function! s:CreateMenus() abort
|
194
|
+
if exists("g:rails_installed_menu") && g:rails_installed_menu != ""
|
195
|
+
exe "aunmenu ".s:gsub(g:rails_installed_menu,'\&','')
|
196
|
+
unlet g:rails_installed_menu
|
197
|
+
endif
|
198
|
+
if has("menu") && (exists("g:did_install_default_menus") || exists("$CREAM")) && g:rails_menu
|
199
|
+
if g:rails_menu > 1
|
200
|
+
let g:rails_installed_menu = '&Rails'
|
201
|
+
else
|
202
|
+
let g:rails_installed_menu = '&Plugin.&Rails'
|
203
|
+
endif
|
204
|
+
let dots = s:gsub(g:rails_installed_menu,'[^.]','')
|
205
|
+
let menucmd = s:menucmd(200)
|
206
|
+
if exists("$CREAM")
|
207
|
+
exe menucmd.g:rails_installed_menu.'.-PSep- :'
|
208
|
+
exe menucmd.g:rails_installed_menu.'.&Related\ file\ :R\ /\ Alt+] :R<CR>'
|
209
|
+
exe menucmd.g:rails_installed_menu.'.&Alternate\ file\ :A\ /\ Alt+[ :A<CR>'
|
210
|
+
exe menucmd.g:rails_installed_menu.'.&File\ under\ cursor\ Ctrl+Enter :Rfind<CR>'
|
211
|
+
else
|
212
|
+
exe menucmd.g:rails_installed_menu.'.-PSep- :'
|
213
|
+
exe menucmd.g:rails_installed_menu.'.&Related\ file\ :R\ /\ ]f :R<CR>'
|
214
|
+
exe menucmd.g:rails_installed_menu.'.&Alternate\ file\ :A\ /\ [f :A<CR>'
|
215
|
+
exe menucmd.g:rails_installed_menu.'.&File\ under\ cursor\ gf :Rfind<CR>'
|
216
|
+
endif
|
217
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &Controller :Rcontroller application<CR>'
|
218
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &Helper :Rhelper application<CR>'
|
219
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &Javascript :Rjavascript application<CR>'
|
220
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &Layout :Rlayout application<CR>'
|
221
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.Application\ &README :R doc/README_FOR_APP<CR>'
|
222
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.&Environment :Renvironment<CR>'
|
223
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.&Database\ Configuration :R config/database.yml<CR>'
|
224
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.Database\ &Schema :Rmigration 0<CR>'
|
225
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.R&outes :Rinitializer<CR>'
|
226
|
+
exe menucmd.g:rails_installed_menu.'.&Other\ files.&Test\ Helper :Rintegrationtest<CR>'
|
227
|
+
exe menucmd.g:rails_installed_menu.'.-FSep- :'
|
228
|
+
exe menucmd.g:rails_installed_menu.'.Ra&ke\ :Rake :Rake<CR>'
|
229
|
+
let menucmd = substitute(menucmd,'200 $','500 ','')
|
230
|
+
exe menucmd.g:rails_installed_menu.'.&Server\ :Rserver.&Start\ :Rserver :Rserver<CR>'
|
231
|
+
exe menucmd.g:rails_installed_menu.'.&Server\ :Rserver.&Force\ start\ :Rserver! :Rserver!<CR>'
|
232
|
+
exe menucmd.g:rails_installed_menu.'.&Server\ :Rserver.&Kill\ :Rserver!\ - :Rserver! -<CR>'
|
233
|
+
exe substitute(menucmd,'<script>','<script> <silent>','').g:rails_installed_menu.'.&Evaluate\ Ruby\.\.\.\ :Rp :call <SID>menuprompt("Rp","Code to execute and output: ")<CR>'
|
234
|
+
exe menucmd.g:rails_installed_menu.'.&Console\ :Rscript :Rscript console<CR>'
|
235
|
+
exe menucmd.g:rails_installed_menu.'.&Preview\ :Rpreview :Rpreview<CR>'
|
236
|
+
exe menucmd.g:rails_installed_menu.'.&Log\ file\ :Rlog :Rlog<CR>'
|
237
|
+
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>'
|
238
|
+
exe menucmd.g:rails_installed_menu.'.&Migration\ writer\ :Rinvert :Rinvert<CR>'
|
239
|
+
exe menucmd.' '.g:rails_installed_menu.'.-HSep- :'
|
240
|
+
exe substitute(menucmd,'<script>','<script> <silent>','').g:rails_installed_menu.'.&Help\ :help\ rails :if <SID>autoload()<Bar>exe RailsHelpCommand("")<Bar>endif<CR>'
|
241
|
+
exe substitute(menucmd,'<script>','<script> <silent>','').g:rails_installed_menu.'.Abo&ut\ :if <SID>autoload()<Bar>exe RailsHelpCommand("about")<Bar>endif<CR>'
|
242
|
+
let g:rails_did_menus = 1
|
243
|
+
call s:ProjectMenu()
|
244
|
+
call s:menuBufLeave()
|
245
|
+
if exists("b:rails_root")
|
246
|
+
call s:menuBufEnter()
|
247
|
+
endif
|
248
|
+
endif
|
249
|
+
endfunction
|
250
|
+
|
251
|
+
function! s:ProjectMenu()
|
252
|
+
if exists("g:rails_did_menus") && g:rails_history_size > 0
|
253
|
+
if !exists("g:RAILS_HISTORY")
|
254
|
+
let g:RAILS_HISTORY = ""
|
255
|
+
endif
|
256
|
+
let history = g:RAILS_HISTORY
|
257
|
+
let menu = s:gsub(g:rails_installed_menu,'\&','')
|
258
|
+
silent! exe "aunmenu <script> ".menu.".Projects"
|
259
|
+
let dots = s:gsub(menu,'[^.]','')
|
260
|
+
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>'
|
261
|
+
exe 'anoremenu <script> '.menu.'.Pro&jects.-FSep- :'
|
262
|
+
while history =~ '\n'
|
263
|
+
let proj = matchstr(history,'^.\{-\}\ze\n')
|
264
|
+
let history = s:sub(history,'^.{-}\n','')
|
265
|
+
exe 'anoremenu <script> '.menu.'.Pro&jects.'.s:gsub(proj,'[.\\ ]','\\&').' :e '.s:gsub(proj."/".g:rails_default_file,'[ !%#]','\\&')."<CR>"
|
266
|
+
endwhile
|
267
|
+
endif
|
268
|
+
endfunction
|
269
|
+
|
270
|
+
function! s:menuBufEnter()
|
271
|
+
if exists("g:rails_installed_menu") && g:rails_installed_menu != ""
|
272
|
+
let menu = s:gsub(g:rails_installed_menu,'\&','')
|
273
|
+
exe 'amenu enable '.menu.'.*'
|
274
|
+
if RailsFileType() !~ '^view\>'
|
275
|
+
exe 'vmenu disable '.menu.'.Extract\ as\ partial'
|
276
|
+
endif
|
277
|
+
if RailsFileType() !~ '^\%(db-\)\=migration$' || RailsFilePath() =~ '\<db/schema\.rb$'
|
278
|
+
exe 'amenu disable '.menu.'.Migration\ writer'
|
279
|
+
endif
|
280
|
+
call s:ProjectMenu()
|
281
|
+
silent! exe 'aunmenu '.menu.'.Rake\ tasks'
|
282
|
+
silent! exe 'aunmenu '.menu.'.Generate'
|
283
|
+
silent! exe 'aunmenu '.menu.'.Destroy'
|
284
|
+
if rails#app().cache.needs('rake_tasks') || empty(rails#app().rake_tasks())
|
285
|
+
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>'
|
286
|
+
else
|
287
|
+
let i = 0
|
288
|
+
while i < len(rails#app().rake_tasks())
|
289
|
+
let task = rails#app().rake_tasks()[i]
|
290
|
+
exe s:menucmd(300).g:rails_installed_menu.'.Rake\ &tasks\ :Rake.'.s:sub(task,':',':.').' :Rake '.task.'<CR>'
|
291
|
+
let i += 1
|
292
|
+
endwhile
|
293
|
+
endif
|
294
|
+
let i = 0
|
295
|
+
let menucmd = substitute(s:menucmd(400),'<script>','<script> <silent>','').g:rails_installed_menu
|
296
|
+
while i < len(rails#app().generators())
|
297
|
+
let generator = rails#app().generators()[i]
|
298
|
+
exe menucmd.'.&Generate\ :Rgen.'.s:gsub(generator,'_','\\ ').' :call <SID>menuprompt("Rgenerate '.generator.'","Arguments for script/generate '.generator.': ")<CR>'
|
299
|
+
exe menucmd.'.&Destroy\ :Rdestroy.'.s:gsub(generator,'_','\\ ').' :call <SID>menuprompt("Rdestroy '.generator.'","Arguments for script/destroy '.generator.': ")<CR>'
|
300
|
+
let i += 1
|
301
|
+
endwhile
|
302
|
+
endif
|
303
|
+
endfunction
|
304
|
+
|
305
|
+
function! s:menuBufLeave()
|
306
|
+
if exists("g:rails_installed_menu") && g:rails_installed_menu != ""
|
307
|
+
let menu = s:gsub(g:rails_installed_menu,'\&','')
|
308
|
+
exe 'amenu disable '.menu.'.*'
|
309
|
+
exe 'amenu enable '.menu.'.Help\ '
|
310
|
+
exe 'amenu enable '.menu.'.About\ '
|
311
|
+
exe 'amenu enable '.menu.'.Projects'
|
312
|
+
silent! exe 'aunmenu '.menu.'.Rake\ tasks'
|
313
|
+
silent! exe 'aunmenu '.menu.'.Generate'
|
314
|
+
silent! exe 'aunmenu '.menu.'.Destroy'
|
315
|
+
exe s:menucmd(300).g:rails_installed_menu.'.Rake\ tasks\ :Rake.-TSep- :'
|
316
|
+
exe s:menucmd(400).g:rails_installed_menu.'.&Generate\ :Rgen.-GSep- :'
|
317
|
+
exe s:menucmd(400).g:rails_installed_menu.'.&Destroy\ :Rdestroy.-DSep- :'
|
318
|
+
endif
|
319
|
+
endfunction
|
320
|
+
|
321
|
+
function! s:menuprompt(vimcmd,prompt)
|
322
|
+
let res = inputdialog(a:prompt,'','!!!')
|
323
|
+
if res == '!!!'
|
324
|
+
return ""
|
325
|
+
endif
|
326
|
+
exe a:vimcmd." ".res
|
327
|
+
endfunction
|
328
|
+
|
329
|
+
call s:CreateMenus()
|
330
|
+
|
331
|
+
augroup railsPluginMenu
|
332
|
+
autocmd!
|
333
|
+
autocmd User BufEnterRails call s:menuBufEnter()
|
334
|
+
autocmd User BufLeaveRails call s:menuBufLeave()
|
335
|
+
" g:RAILS_HISTORY hasn't been set when s:InitPlugin() is called.
|
336
|
+
autocmd VimEnter * call s:ProjectMenu()
|
337
|
+
augroup END
|
338
|
+
|
339
|
+
" }}}1
|
340
|
+
" vim:set sw=2 sts=2:
|
@@ -0,0 +1,193 @@
|
|
1
|
+
" Some Stuff for Ruby folding & formatting
|
2
|
+
|
3
|
+
" Folding
|
4
|
+
map <SID>xx <SID>xx
|
5
|
+
let s:sid = maparg("<SID>xx")
|
6
|
+
unmap <SID>xx
|
7
|
+
let s:sid = substitute(s:sid, 'xx', '', '')
|
8
|
+
|
9
|
+
"{{{ FoldText
|
10
|
+
function! s:Num2S(num, len)
|
11
|
+
let filler = " "
|
12
|
+
let text = '' . a:num
|
13
|
+
return strpart(filler, 1, a:len - strlen(text)) . text
|
14
|
+
endfunction
|
15
|
+
|
16
|
+
execute 'set foldtext=' . s:sid . 'MyNewFoldText()'
|
17
|
+
function! <SID>MyNewFoldText()
|
18
|
+
let line = getline(v:foldstart)
|
19
|
+
let sub = substitute(line, '/\*\|\*/\|{{{\d\=', '', 'g')
|
20
|
+
let diff = v:foldend - v:foldstart
|
21
|
+
let sdiff = s:Num2S(diff, 4)
|
22
|
+
return '+ [' . sdiff . ']' . sub
|
23
|
+
endfunction
|
24
|
+
|
25
|
+
"{{{~foldsearch adapted from t77: Fold on search result (Fs <pattern>)
|
26
|
+
"Fs pattern Fold search
|
27
|
+
"Str (structure) ruby program pattern based on module class and def
|
28
|
+
"Strlm (structure) lm file pattern based on <!1!> etc.
|
29
|
+
"Vimtip put to good use by Ralph Amissah zxy@irc.freenode.net
|
30
|
+
"Modified by Mauricio Fernandez <mfp@acm.org>
|
31
|
+
function! Foldsearch(search)
|
32
|
+
setlocal fdm=manual
|
33
|
+
let origlineno = line(".")
|
34
|
+
normal zE
|
35
|
+
normal G$
|
36
|
+
let folded = 0 "flag to set when a fold is found
|
37
|
+
let flags = "w" "allow wrapping in the search
|
38
|
+
let line1 = 0 "set marker for beginning of fold
|
39
|
+
if a:search == ""
|
40
|
+
if exists("b:foldsearchexpr")
|
41
|
+
let searchre = b:foldsearchexpr
|
42
|
+
else
|
43
|
+
"Default value, suitable for Ruby scripts
|
44
|
+
"\(^\s*\(\(def\|class\|module\)\s\)\)\|^\s*[#%"0-9]\{0,4\}\s*{\({{\|!!\)
|
45
|
+
let searchre = '\v(^\s*(def|class|module|attr_reader|attr_accessor|alias_method)\s' .
|
46
|
+
\ '|^\s*\w+attr_(reader|accessor)\s|^\s*[#%"0-9]{0,4}\s*\{(\{\{|!!))' .
|
47
|
+
\ '|^\s*[A-Z]\w+\s*\='
|
48
|
+
let b:foldsearchexpr = searchre
|
49
|
+
endif
|
50
|
+
else
|
51
|
+
let searchre = a:search
|
52
|
+
endif
|
53
|
+
while search(searchre, flags) > 0
|
54
|
+
let line2 = line(".")
|
55
|
+
if (line2 -1 > line1)
|
56
|
+
execute ":" . line1 . "," . (line2-1) . "fold"
|
57
|
+
let folded = 1 "at least one fold has been found
|
58
|
+
endif
|
59
|
+
let line1 = line2 "update marker
|
60
|
+
let flags = "W" "turn off wrapping
|
61
|
+
endwhile
|
62
|
+
normal $G
|
63
|
+
let line2 = line(".")
|
64
|
+
if (line2 > line1 && folded == 1)
|
65
|
+
execute ":". line1 . "," . line2 . "fold"
|
66
|
+
endif
|
67
|
+
execute "normal " . origlineno . "G"
|
68
|
+
endfunction
|
69
|
+
|
70
|
+
"{{{~folds Fold Patterns
|
71
|
+
" Command is executed as ':Fs pattern'"
|
72
|
+
command! -nargs=? -complete=command Fs call Foldsearch(<q-args>)
|
73
|
+
command! -nargs=? -complete=command Fold call Foldsearch(<q-args>)
|
74
|
+
"command! R Fs \(^\s*\(\(def\|class\|module\)\s\)\)\|^\s*[#%"0-9]\{0,4\}\s*{\({{\|!!\)
|
75
|
+
command! R Fs
|
76
|
+
|
77
|
+
"{{{ Ruby block delimiter conversion: do end <=> { }
|
78
|
+
"Copyright © 2005 Mauricio Fernandez
|
79
|
+
"Subject to same licensing terms as Ruby.
|
80
|
+
" requires matchit and friends
|
81
|
+
" since it uses the % and = bindings
|
82
|
+
function! s:String_Strip(str)
|
83
|
+
let s = substitute(a:str, '\v^\s*', '', '')
|
84
|
+
return substitute(s, '\v\s*$', '', '')
|
85
|
+
endfunction
|
86
|
+
|
87
|
+
function! s:RubyBlockBraceToDoEnd(lineno)
|
88
|
+
" { } => do end
|
89
|
+
let oldz = getreg("z")
|
90
|
+
call setreg("z", "")
|
91
|
+
execute 'normal ^f{%l"zd$'
|
92
|
+
let suffix = s:String_Strip(getreg("z"))
|
93
|
+
call setreg("z", oldz)
|
94
|
+
let orig = getline(".")
|
95
|
+
let repl = substitute(orig, '\v\s*\{\s*(\|[^|]*\|)?.*', ' do \1', '')
|
96
|
+
call setline(".", repl)
|
97
|
+
let nextline = substitute(orig, '\v[^{]*\v\s*\{\s*(\|[^|]*\|)?', '', '')
|
98
|
+
let nextline = substitute(nextline, '\}[^}]*$', '', '')
|
99
|
+
let numlines = 0
|
100
|
+
|
101
|
+
|
102
|
+
" uncomment one of the following:
|
103
|
+
|
104
|
+
" (1) just insert the body without splitting the lines on ;
|
105
|
+
"call append(a:lineno, nextline)
|
106
|
+
"call append(a:lineno+1, 'end' . suffix)
|
107
|
+
"
|
108
|
+
|
109
|
+
" (2) try to split on ; ...
|
110
|
+
call append(a:lineno, 'end' . suffix)
|
111
|
+
" this is what we would want to do:
|
112
|
+
"let nextline = substitute(nextline, ';', "\n", 'g')
|
113
|
+
|
114
|
+
while stridx(nextline, ";") != -1
|
115
|
+
let eom = stridx(nextline, ";")
|
116
|
+
let line = s:String_Strip(strpart(nextline, 0, eom))
|
117
|
+
call append(a:lineno + numlines, line)
|
118
|
+
let numlines = numlines + 1
|
119
|
+
let nextline = strpart(nextline, eom+1, strlen(nextline) - eom - 1)
|
120
|
+
endwhile
|
121
|
+
let nextline = s:String_Strip(nextline)
|
122
|
+
if strlen(nextline) > 0
|
123
|
+
call append(a:lineno + numlines, nextline)
|
124
|
+
let numlines = numlines + 1
|
125
|
+
endif
|
126
|
+
|
127
|
+
" this is what it all began with...
|
128
|
+
"execute 'normal :s/\v\s*\{\s*(\|.*\|)?/ do \1\r/
|
129
|
+
'
|
130
|
+
"execute 'normal g_cw
|
131
|
+
end'
|
132
|
+
execute 'normal V' . (1 + numlines) . 'j='
|
133
|
+
"echo "{ } => do end"
|
134
|
+
endfunction
|
135
|
+
|
136
|
+
function! s:RubyBlockDoEndToBrace(_firstline, _lastline)
|
137
|
+
" do end => { }
|
138
|
+
let linenum = a:_firstline + 1
|
139
|
+
let orig = getline(".")
|
140
|
+
while linenum < a:_lastline - 1
|
141
|
+
let addline = getline(linenum)
|
142
|
+
if '\v^\s*$' !~ addline
|
143
|
+
let addline = substitute(addline, '\v^\s*', '', '')
|
144
|
+
let addline = substitute(addline, '\s*$', '; ', '')
|
145
|
+
let orig = orig . addline
|
146
|
+
endif
|
147
|
+
let linenum = linenum + 1
|
148
|
+
endwhile
|
149
|
+
let l = substitute(getline(a:_lastline-1), '\v^\s*', '', '')
|
150
|
+
let l = substitute(l, '\s*$', '', '')
|
151
|
+
let orig = orig . l
|
152
|
+
let l = substitute(getline(a:_lastline), '\v^\s*end(\.|\s|$)@=', ' }', '')
|
153
|
+
let l = substitute(l, '\s*$', '', '')
|
154
|
+
let orig = orig . l
|
155
|
+
|
156
|
+
"echo orig
|
157
|
+
"input(orig)
|
158
|
+
let repl = substitute(orig, '\v\s*do\s*(\|[^|]*\|)?', ' { \1 ', '')
|
159
|
+
"execute 'normal d' . (a:_lastline - a:_firstline) . 'j'
|
160
|
+
execute ':' . a:_firstline . ',' . a:_lastline . 'd'
|
161
|
+
call append(a:_firstline - 1, repl)
|
162
|
+
execute ':' . a:_firstline
|
163
|
+
"echo "do end => { }"
|
164
|
+
endfunction
|
165
|
+
|
166
|
+
map <SID>xx <SID>xx
|
167
|
+
let s:sid = maparg("<SID>xx")
|
168
|
+
unmap <SID>xx
|
169
|
+
let s:sid = substitute(s:sid, 'xx', '', '')
|
170
|
+
|
171
|
+
function! <SID>RubyBlockSwitchDelimiters() range
|
172
|
+
set nofoldenable
|
173
|
+
if a:firstline == a:lastline
|
174
|
+
let braceidx = match(getline("."), '{')
|
175
|
+
let doidx = match(getline("."), '\<do\>')
|
176
|
+
if braceidx != -1 && (doidx == -1 || braceidx < doidx)
|
177
|
+
call s:RubyBlockBraceToDoEnd(a:firstline)
|
178
|
+
elseif doidx != -1
|
179
|
+
execute 'normal /\<do\>' . "\n" . 'V%:call ' .
|
180
|
+
\ s:sid . 'RubyBlockSwitchDelimiters()' . "\n"
|
181
|
+
else
|
182
|
+
echo "No block found"
|
183
|
+
end
|
184
|
+
else
|
185
|
+
call s:RubyBlockDoEndToBrace(a:firstline, a:lastline)
|
186
|
+
endif
|
187
|
+
"execute 'normal V2k='
|
188
|
+
"execute 'normal v5j'
|
189
|
+
endfunction
|
190
|
+
|
191
|
+
" Visual \B
|
192
|
+
command! -range B <line1>,<line2>call <SID>RubyBlockSwitchDelimiters()
|
193
|
+
vmap <Leader>B :call <SID>RubyBlockSwitchDelimiters()<cr>
|