Domanda

rails.vim e mi piace come è possibile utilizzare ctrl-x Ctrl-U in modalità di inserimento di completamento automatico i nomi dei metodi lunghe come distance_of_time_in_words e accepts_nested_attributes_for. Ma per qualche motivo non funziona in file Haml e io non riesco a capire cosa c'è che non va o come risolvere il problema.

:help i_CTRL-X_CTRL-U dice che il completamento automatico sta usando completefunc. Il file Haml dice la sua completefunc=syntaxcomplete#Complete (ed è lo stesso nei file erb e di supporto dove ctrl-x Ctrl-U funziona bene.) Non riesco a trovare dove la magia syntaxcomplete#Complete è definito, ma presumibilmente ha qualcosa a che fare con la sintassi tipo di file. Il mio .vim/syntax/haml.vim viene da vim-Haml , così ho provato a rimuovere, ma il problema persiste. Commentando fuori tutta la mia .vimrc non aiutano. Che altro posso provare?

UPDATE: Ho cercato il mio file di configurazione vim e l'unico posto che sembra che stia facendo nulla con syntaxcomplete#Complete è in autoload/rails.vim e si presenta così:

function! s:resetomnicomplete()
  if exists("+completefunc") && &completefunc == 'syntaxcomplete#Complete'
    if exists("g:loaded_syntax_completion")
      " Ugly but necessary, until we have our own completion
      unlet g:loaded_syntax_completion
      silent! delfunction syntaxcomplete#Complete
    endif
  endif
endfunction
È stato utile?

Soluzione

Le funzioni con # nel nome sono definiti negli script autoload:

  

Una funzione che può essere caricata automaticamente ha un nome   in questo modo:
      : Chiamata nomefile # funcname ()
  Quando tale funzione viene chiamata, e non è ancora definito, Vim cercherà la   directory "Autoload" in 'runtimepath' per un file di script denominato   "Filename.vim". Per esempio "~ / .vim / autoload / filename.vim".

Vedere :help autoload.

Altri suggerimenti

Sembra che il file che stai cercando è parte di vim:

$ find /usr/share/vim/ -iname "syntaxcomplete.vim"
/usr/share/vim/vim72/autoload/syntaxcomplete.vim

C'è un vim.org pagina con l'ultima versione del script.

Se si desidera personalizzare il completamento, si può solo scrivere la propria funzione di completamento. Vedere :help complete-functions

È inoltre possibile utilizzare Ctrl + n per usare semplice completamento di vim. Completa con il testo da uno qualsiasi dei file aperti, ma può essere personalizzato. (Vedere :help 'complete')

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top