我最近克隆了 rails.vim (vim-rails) 希望修改它以与 Padrino 项目一起使用。
目前,我试图让Rcontroller
命令不仅在应用程序/控制器(非常适合 rails)中查看,而且在项目中具有名为“控制器”的子文件夹的任何文件夹中。因此,当我在命令模式下键入 Rcontroller 并点击选项卡时,我应该能够通过admin/controllers/base.rb
、admin/controllers/accounts.rb
等进行选项卡app/controllers/events.rb
。这将让插件的用户跳转到 Padrino 应用程序的“子应用程序”中的控制器。例如PADRINO_ROOT/admin
当前controllerList
函数似乎可以处理这个自动完成,这就是我到目前为止所拥有的(仅对原始源进行了轻微修改)
function! s:controllerList(A,L,P)
let con = padrino#app().relglob("*/controllers/","**/*",".rb")
call map(con,'s:sub(v:val,"_controller$","")')
return s:autocamelize(con,a:A)
endfunction
我在控制器目录之前添加了通配符,但这会产生类似的结果
Rcontroller ers/base
Rcontroller ers/sessions
Rcontroller s/events
对于最后一个,字符串长度或重叠似乎有些奇怪......
理想情况下,我想让它达到打字Rcontroller admin<TAB>
应该导致自动完成到Rcontroller admin/controllers/accounts.rb
. 同样,Rcontroller app<TAB>
应该导致Rcontroller app/controllers/events.rb
该viewList
函数的代码与此类似,其代码如下:
function! s:viewList(A,L,P)
let c = s:controller(1)
let top = padrino#app().relglob("app/views/",s:fuzzyglob(a:A))
call filter(top,'v:val !~# "\\~$"')
if c != '' && a:A !~ '/'
let local = padrino#app().relglob("app/views/".c."/","*.*[^~]")
return s:completion_filter(local+top,a:A)
endif
return s:completion_filter(top,a:A)
endfunction
有人有什么建议吗?提前致谢。