neovim ruby/rails omnicomplete
Na mensagem de erro que você está recebendo, parece que seu Vim não tem suporte a Ruby compilado em.
Veja este código snippet:
if !has('ruby') call s:ErrMsg( "Error: Rubycomplete requires vim compiled with +ruby" ) call s:ErrMsg( "Error: falling back to syntax completion" ) " lets fall back to syntax completion setlocal omnifunc=syntaxcomplete#Complete finishendif
A mensagem de erro em negrito é a que você está vendo. (Se escrever :messages
provavelmente verá a outra mensagem de erro, mais explícita, sobre o suporte para Ruby em falta.)
Pode confirmar que o suporte para Ruby está em falta usando o comando :version
no Vim para obter uma lista de funcionalidades. Irá ver -ruby
, uma vez que lhe falta o suporte para Ruby. (Você veria +ruby
se estivesse disponível).)
Da sua pergunta, você está usando o NeoVim no Debian Buster, então talvez tente instalar o pacote ruby-neovim
para ver se isso resolve o problema e habilita o suporte a Ruby no seu NeoVim?
set omnifunc=syntaxcomplete#Complete
parece funcionar. Não tenho a certeza se essa é a forma correcta?
Isso vai dar-lhe alguma conclusão, mas provavelmente não tão rica como a conclusão específica do Ruby de rubycomplete
.
A função syntaxcomplete#Complete
irá usar as regras de realce de sintaxe do Vim para oferecer conclusão de inserção, que na sua maioria cobre palavras-chave de linguagem que são realçadas por regras de sintaxe.
Ver :help ft-syntax-omni
:
Vim tem a capacidade de realce de sintaxe de cor cerca de 500 linguagens. Parte deste destaque inclui saber quais palavras-chave são parte de uma língua. Muitos tipos de arquivos já têm scripts de conclusão personalizados escritos para eles, o plugin syntaxcomplete fornece conclusão básica para todos os outros tipos de arquivos. Ele faz isso preenchendo a lista de conclusão omni com o texto Vim já sabe como colorir o destaque. Ele pode ser usado para qualquer tipo de arquivo e fornece um preenchimento mínimo sensível ao idioma.
Então isto pode ser adequado e melhor do que nada… Mas eu esperaria que você conseguisse uma conclusão superior usando rubycomplete
em vez disso.
Com estas configurações:
autocmd FileType ruby,eruby let g:rubycomplete_buffer_loading = 1autocmd FileType ruby,eruby let g:rubycomplete_classes_in_global = 1autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
Estes são globais e são destinados a serem definidos diretamente do seu vimrc e não em um autocmd tipo de arquivo.
Isso pode ser importante uma vez que pode ter problemas de ordenação (estes só são definidos após os plugins vim-ruby tentarem inspecioná-los, produzindo o resultado incorreto), ou você pode ter um comportamento diferente do primeiro arquivo Ruby que você editar para os subseqüentes (uma vez que o primeiro os define globalmente, eles já serão definidos quando o segundo arquivo for aberto.)
Evite estes problemas completamente definindo-os diretamente, como pretendido:
let g:rubycomplete_buffer_loading = 1let g:rubycomplete_classes_in_global = 1let g:rubycomplete_rails = 1