Как отладить сломанную vim completefunc в файлах haml?

StackOverflow https://stackoverflow.com/questions/1875965

  •  18-09-2019
  •  | 
  •  

Вопрос

Я использую рельсы.vim и мне нравится, как вы можете использовать ctrl-x ctrl-u в режиме вставки для автозаполнения длинных имен методов, таких как distance_of_time_in_words и accepts_nested_attributes_for.Но по какой-то причине это не работает в файлах haml, и я, похоже, не могу понять, что не так и как это исправить.

:help i_CTRL-X_CTRL-U говорит, что автозаполнение использует completefunc.В файле haml указано, что его completefunc=syntaxcomplete#Complete (и это то же самое в erb и вспомогательных файлах, где ctrl-x ctrl-u работает нормально.) Я не могу найти, где syntaxcomplete#Complete магия определена, но, предположительно, это как-то связано с синтаксисом filetype .Мой .vim/syntax/haml.vim происходит от vim-хамл, поэтому я попытался удалить его, но проблема не устранена.Комментируя всю мою .vimrc тоже не помогло.Что еще я могу попробовать?

Обновить:Я просмотрел свои конфигурационные файлы vim и единственное место, которое выглядит так, как будто оно что-то делает с syntaxcomplete#Complete находится в autoload/rails.vim и выглядит примерно так:

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
Это было полезно?

Решение

Функции с # в имени определяются в сценариях автоматической загрузки:

Функция, которая может быть загружена автоматически, имеет имя вот так:
:вызовите filename#funcname()
Когда такая функция вызывается, и она еще не определена, Vim будет искать в каталогах "автозагрузка" в 'runtimepath' файл сценария с именем "filename.vim".Например "~/.vim/автозагрузка/filename.vim".

Видишь :help autoload.

Другие советы

Похоже, файл, который вы ищете, является частью vim:

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

Там есть vim.org страница с последней версией скрипта.

Если вы хотите настроить завершение, вы можете просто написать свою собственную функцию завершения.Видишь :help complete-functions

Вы также можете использовать Ctrl+n чтобы использовать простое завершение vim.Он завершается текстом из любого открытого файла, но может быть настроен.(См. :help 'complete')

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top