gpt4 book ai didi

ruby - 破解 rails.vim 以与 Padrino 一起工作

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:55 24 4
gpt4 key购买 nike

我最近克隆了 rails.vim (vim-rails),希望对其进行修改以用于 Padrino 项目。

目前我正在尝试获取 Rcontroller命令不仅可以查看 app/controllers(非常适合 rails),还可以查看项目中具有名为“controllers”的子文件夹的任何文件夹。因此,当我在命令模式下键入 Rcontroller 并点击 Tab 键时,我应该能够通过 Tab 键浏览 admin/controllers/base.rb。 , admin/controllers/accounts.rb , app/controllers/events.rb等。这将使插件的用户跳转到 Padrino 应用程序的“子应用程序”中的 Controller 。例如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

我在 Controller 目录之前添加了通配符,但这给出了如下结果

  • 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

有人有什么建议吗?提前致谢。

最佳答案

您可能希望完整路径如下所示:

**/controllers/**/*.rb

globs 为“在任何目录下查找名为 controllers 的目录,然后在该目录下的任何位置查找以 .rb 结尾的文件”

查看“relglob”的其他用法,我只能猜测它应该如何工作,但我的猜测是:

  • 第一个参数是“从哪个目录开始查找”
  • 第二个参数是“如何从那里乘以目录”
  • 第三个参数是“将匹配的实际文件”

基于这个假设,我的猜测是使用:

padrino#app().relglob("app/","**/controllers/**/*",".rb") 

警告:这是基于我对 glob 的理解,而不是 vim 或 relglob根据实际使用情况调整。

注意:假设您不太可能希望在供应商/插件或供应商/gems 下的任何 Controller 中切换,因此添加了“app/”。这可能不是这种情况,在这种情况下,请随意将其更改为“。”

关于ruby - 破解 rails.vim 以与 Padrino 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5729930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com