Я недавно клонировал 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
У любого есть какие-либо предложения?Заранее спасибо.