Pergunta

estou a usar Rails.vim E eu amo como você pode usar Ctrl-x Ctrl-U no modo de inserção para nomes de métodos longos para preenchimento automático, como distance_of_time_in_words e accepts_nested_attributes_for. Mas, por algum motivo, não funciona em arquivos HAML e não consigo descobrir o que está errado ou como corrigi -lo.

:help i_CTRL-X_CTRL-U diz que a conclusão automática está usando completefunc. O arquivo haml diz é completefunc=syntaxcomplete#Complete (e é o mesmo em arquivos ERB e auxiliar onde Ctrl-x Ctrl-U funciona bem.) Não consigo encontrar onde o syntaxcomplete#Complete A magia é definida, mas presumivelmente tem algo a ver com a sintaxe do FileType. Meu .vim/syntax/haml.vim vem de vim-haml, então tentei removê -lo, mas o problema persiste. Comentando meu inteiro .vimrc também não ajudou. O que mais posso tentar?

ATUALIZAÇÃO: Eu pesquisei meus arquivos de configuração do VIM e o único lugar que parece estar fazendo qualquer coisa com syntaxcomplete#Complete é em autoload/rails.vim E parece assim:

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
Foi útil?

Solução

As funções com # em nome são definidas em scripts de automóveis automáticos:

Uma função que pode ser carregada automaticamente tem um nome como este:
: Ligue para o nome do arquivo#funcname ()
Quando essa função é chamada, e ainda não está definida, o VIM pesquisará os diretórios "AUTOLOAD" em 'RuntimePath' por um arquivo de script chamado "filename.vim". Por exemplo, "~/.vim/AUTOLOAD/FILENAME.VIM".

Ver :help autoload.

Outras dicas

Parece que o arquivo que você está procurando faz parte do vim:

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

Há um página vim.org com a versão mais recente do script.

Se você deseja personalizar a conclusão, basta escrever sua própria função de conclusão. Ver :help complete-functions

Você também pode usar Ctrl+n Para usar a conclusão simples do VIM. Ele é concluído com o texto de qualquer um dos arquivos abertos, mas pode ser personalizado. (Ver :help 'complete')

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top