Come eseguire il debug rotto completefunc vim in file Haml?
-
18-09-2019 - |
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
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'
)