HAML 파일에서 Broken VIM CompleteFunc을 디버그하는 방법은 무엇입니까?
-
18-09-2019 - |
문제
사용 중입니다 Rails.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
마술은 정의되지만 아마도 필터 타입 구문과 관련이있을 것입니다. 나의 .vim/syntax/haml.vim
에서 오는 vim-haml, 그래서 나는 그것을 제거하려고 시도했지만 문제는 지속됩니다. 내 전체를 언급합니다 .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은 "filename.vim"이라는 스크립트 파일에 대해 'runtimepath'의 "autoroad"디렉토리를 검색합니다. 예를 들어 "~/.vim/autoload/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'
)