Articles

neovim ruby/rails omnicomplete

Dal messaggio di errore che stai ricevendo, sembra che il tuo Vim non abbia il supporto Ruby compilato.

Guarda questo frammento di codice:

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

Il messaggio di errore in grassetto è quello che vedi. (Se digiti :messages probabilmente vedrai l’altro messaggio di errore, più esplicito, sulla mancanza di supporto per Ruby.)

Puoi confermare che manca il supporto per Ruby usando il comando :version in Vim per ottenere una lista di caratteristiche. Vedrai -ruby, dato che ti manca il supporto per Ruby. (Vedresti +ruby se fosse disponibile.)

Dalla tua domanda, stai usando NeoVim su Debian Buster, quindi magari prova a installare il pacchetto ruby-neovim per vedere se questo risolve il problema e abilita il supporto Ruby sul tuo NeoVim?

set omnifunc=syntaxcomplete#Complete sembra funzionare. Non sono sicuro che sia il modo corretto?

Questo ti darà un po’ di completamento, ma probabilmente non così ricco come il completamento specifico per Ruby da rubycomplete.

La funzione syntaxcomplete#Complete userà le regole di evidenziazione della sintassi di Vim per offrire il completamento dell’inserimento, che per la maggior parte copre le parole chiave della lingua che sono evidenziate dalle regole di sintassi.

Vedi :help ft-syntax-omni:

Vim ha la capacità di evidenziare la sintassi a colori in quasi 500 lingue. Parte di questa evidenziazione include il sapere quali parole chiave sono parte di una lingua. Molti tipi di file hanno già script di completamento personalizzati scritti per loro, il plugin syntaxcomplete fornisce un completamento di base per tutti gli altri tipi di file. Lo fa popolando la lista di completamento omni con il testo che Vim sa già come evidenziare a colori. Può essere usato per qualsiasi tipo di file e fornisce un completamento minimo sensibile alla lingua.

Quindi questo potrebbe essere adeguato e meglio di niente… Ma mi aspetto che tu ottenga un completamento superiore usando invece rubycomplete.

Con queste impostazioni:

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

Sono globali e devono essere impostate direttamente dal tuo vimrc e non in un autocmd per il tipo di file.

Questo potrebbe essere importante perché si potrebbero avere problemi di ordinamento (questi sono impostati solo dopo che i plugin vim-ruby cercano di ispezionarli, producendo un risultato errato), o si potrebbe ottenere un comportamento diverso dal primo file Ruby che si modifica a quelli successivi (poiché il primo li imposta globalmente, saranno già impostati quando il secondo file viene aperto.