Wie kann ich gebrochene vim completefunc in Haml -Dateien debuggen?
-
18-09-2019 - |
Frage
Ich benutze schienen.vim und ich liebe es, wie du benutzen kannst Strg-X Strg-u im Einfügenmodus zur automatischen Vervollständigung von langen Methodennamen wie distance_of_time_in_words
und accepts_nested_attributes_for
. Aber aus irgendeinem Grund funktioniert es in HAML -Dateien nicht und ich kann nicht herausfinden, was los ist oder wie man es behebt.
:help i_CTRL-X_CTRL-U
sagt, dass die Autoperation verwendet wird completefunc
. Die Haml -Datei sagt, es ist es completefunc=syntaxcomplete#Complete
(Und es ist gleich in Erb- und Helfer -Dateien, wo Strg-X Strg-u funktioniert gut.) Ich kann nicht finden, wo die syntaxcomplete#Complete
Magie ist definiert, aber vermutlich hat sie etwas mit der Filetyp -Syntax zu tun. Mein .vim/syntax/haml.vim
kommt von Vim-Haml, Also habe ich versucht, es zu entfernen, aber das Problem bleibt bestehen. Kommentiere mein ganzes aus .vimrc
Hat auch nicht geholfen. Was kann ich sonst noch versuchen?
UPDATE: Ich habe meine VIM -Konfigurationsdateien und den einzigen Ort durchsucht, der so aussieht, als würde sie etwas tun syntaxcomplete#Complete
ist in autoload/rails.vim
und sieht so aus:
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
Lösung
Funktionen mit # im Namen sind in Autoload -Skripten definiert:
Eine Funktion, die autoladen werden kann, hat einen Namen wie diesen:
: rufen Sie den Dateinamen#funcname () an
Wenn eine solche Funktion aufgerufen wird und noch nicht definiert ist, sucht Vim die Verzeichnisse "autoload" in 'RunTimePath' nach einer Skriptdatei namens "Dateiname.vim". Zum Beispiel "~/.vim/autoload/Dateiname.vim".
Sehen :help autoload
.
Andere Tipps
Sieht so aus, als wäre die Datei, die Sie suchen, Teil von VIM:
$ find /usr/share/vim/ -iname "syntaxcomplete.vim"
/usr/share/vim/vim72/autoload/syntaxcomplete.vim
Da ist ein vim.org Seite mit der neuesten Version des Skripts.
Wenn Sie die Fertigstellung anpassen möchten, können Sie einfach Ihre eigene Abschlussfunktion schreiben. Sehen :help complete-functions
Sie können auch verwenden Strg+n Vims einfache Fertigstellung zu verwenden. Es wird mit Text aus einer der offenen Dateien abgeschlossen, kann jedoch angepasst werden. (Sehen :help 'complete'
)