Недавно я клонировал rails.vim (vim-rails) в надежде изменить его для работы с проектами Padrino.
В настоящее время я пытаюсь заставить команду Rcontroller
искать не только в приложениях / контроллерах (идеально для рельсов), но и в любой папке проекта, в которой есть подпапка с названием «контроллеры». . Поэтому, когда я набираю 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
должен привести к автозаполнению Rcontroller admin / controllers / accounts.rb
. Аналогично, Rcontroller app
должно привести к 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
У кого-нибудь есть предложения? Заранее спасибо.