Comandos de navegação personalizados em Rails.vim

O tempo era, tudo que um (wo) man precisava fazer um comando de navegação personalizado no vim para Rails (por exemplo, Rdecorator) era algo assim:

autocmd User Rails Rnavcommand decorator app/decorators -suffix=_decorator.rb -default=model()

Hoje em dia, isso lhe traz muito disso:

:Rnavcommand has been removed.

Para o bem ou para o mal, esses dias acabaram se você estiver acompanhando os últimos desenvolvimentos no plugin mais importante para usuários vim que escrevem código Rails. O mapeamento do mesmo comando agora se parece com isto:

let g:rails_projections = {
"app/decorators/*_decorator.rb": {
"command": "decorator",
"template":
"class %SDecorator < SimpleDelegatornend",
"test": [
"test/unit/%s_decorator_test.rb",
"spec/decorators/%s_decorator_spec.rb"
],
"affinity": "model"
}}

É mais prolixo? Sim. É mais personalizável? Sim. A carga cognitiva é maior? Novamente: sim. Deixo a você decidir se a mudança é para melhor, mas de qualquer forma é onde estamos. Conhecendo o Popinator pessoalmente, posso dizer que ele não faz nada em seu trabalho OSS sem motivo e estou supondo que o motivo aqui é uma vitória em configurabilidade com a adição dessas variáveis ​​de interpolação:

%s: original
%p: pluralized
%i: singularized
%S: camelized
%h: humanized

A adição dessas variáveis ​​torna possível, pela primeira vez, que você faça modelos para a nova geração de arquivos para sua projeção sem escrever um plug-in e mergulhar nos detalhes internos de Rails.vim (que é uma base de código enorme, tudo em um arquivo). Além disso, a maneira de especificar a localização de arquivos alternativos e relacionados para o seu tipo de projeção é muito mais precisa.

Para mais informações sobre projeções no vim for Rails, veja os documentos sempre incríveis do Sr. Pope:

:help rails-projections