Articles

neovim ruby/rails omnicomplete

După mesajul de eroare pe care îl primiți, se pare că Vim nu are compilat suportul Ruby.

Vezi acest fragment de cod:

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

Mesajul de eroare în bold este cel pe care îl vedeți. (Dacă tastați :messages veți vedea probabil celălalt mesaj de eroare, mai explicit, despre lipsa suportului pentru Ruby.)

Puteți confirma că lipsește suportul pentru Ruby folosind comanda :version în Vim pentru a obține o listă de caracteristici. Veți vedea -ruby, deoarece vă lipsește suportul pentru Ruby. (Ați vedea +ruby dacă acesta ar fi disponibil.)

Din întrebarea dumneavoastră, folosiți NeoVim pe Debian Buster, așa că poate încercați să instalați pachetul ruby-neovim pentru a vedea dacă acesta rezolvă problema și activează suportul Ruby pe NeoVim?

set omnifunc=syntaxcomplete#Complete pare să funcționeze. Nu sunt sigur dacă acesta este modul corect?

Aceasta vă va oferi o anumită finalizare, dar probabil nu la fel de bogată ca finalizarea specifică Ruby din rubycomplete.

Funcția syntaxcomplete#Complete va folosi regulile de evidențiere a sintaxei din Vim pentru a oferi o completare de inserție, care în cea mai mare parte acoperă cuvintele cheie ale limbii care sunt evidențiate de regulile de sintaxă.

Vezi :help ft-syntax-omni:

Vim are capacitatea de a evidenția sintaxa colorată în aproape 500 de limbi. O parte din această evidențiere include cunoașterea cuvintelor cheie care fac parte dintr-un limbaj. Multe tipuri de fișiere au deja scripturi de completare personalizate scrise pentru ele, pluginul syntaxcomplete oferă o completare de bază pentru toate celelalte tipuri de fișiere. El face acest lucru prin popularea listei de completare omni cu textul pe care Vim știe deja cum să îl evidențieze în culori. Poate fi folosit pentru orice tip de fișier și oferă o completare minimă sensibilă la limbă.

Așa că acest lucru ar putea fi adecvat și mai bun decât nimic… Dar mă aștept să obțineți o completare superioară folosind rubycomplete în loc de rubycomplete.

Cu aceste setări:

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

Acestea sunt globale și sunt destinate a fi setate direct din vimrc-ul dumneavoastră și nu într-un autocmd de tip de fișier.

Acest lucru ar putea fi important deoarece s-ar putea să aveți probleme de ordonare (acestea sunt setate doar după ce plugin-urile vim-ruby încearcă să le inspecteze, producând rezultatul incorect), sau s-ar putea să obțineți un comportament diferit de la primul fișier Ruby pe care îl editați la cele următoare (deoarece primul le setează global, ele vor fi deja setate atunci când este deschis al doilea fișier.)

Evitați pur și simplu aceste probleme setându-le direct, așa cum se intenționează:

let g:rubycomplete_buffer_loading = 1let g:rubycomplete_classes_in_global = 1let g:rubycomplete_rails = 1