2016-10-14 4 views
1

템플릿 함수에 대한 정의 탐색을 뛰어 없습니다 : 내가 명령 GoToDefinition을 입력정력이 나는이 코드를 포함하는 .H 파일이

template<BLA> 
func1() {} 

// something 

template<BLA> 
func2() { 
    func1(); 
} 

, 오류가 나타나 "YCM 'RuntimeError에를 : 수 정의로 건너 뛰지 마라. "". 내가 놓친 게 있니? 그리고 그 정의를 찾는 방법? 그런데

, 내의 .vimrc이 있습니다

let g:ycm_global_ycm_extra_conf = ' ~/ycm_extra_conf.py' 

************** 두 번째 편집 ***********

을 ******** 내 YCM을 다시 설치하고, 나는이 명령으로 YCM에 대한 ctags를 시도 :

ctags -R --fields=+l 

그것은 작동하고, 감사합니다.

답변

1

내가 검사 한 마지막 시간, 소스 코드의 YCM 이해는 하나 개의 번역 단위로 제한됩니다. 함수가 정의 된 위치를 다른 번역 단위에서 찾을 가능성이 높은 부분을 찾는 것은 매우 어려울 것입니다.

즉, 한 당신이 당신의 현재 편집중인 것과 동일한 .cpp 파일에있는 정의로 이동합니다 원하는대로 작동합니다. 우리는 관련 코드를 포함 야지로 - 그것은 호출 사이트의에서 템플릿 함수 정의에 접속을 시도 할 때 따라서, 그것은 또한 작동합니다. 그렇지 않으면, YCM이 사용하고있는 clang 엔진에 의한 소스 코드의 부적절한 이해 또는 clang을 사용하도록 구성되지 않은 YCM에 관련 될 수 있습니다.

에 관한 태그, 그들은 그 일을 할 수 있지만, 실제로 C++, 당신은 제시 태그를 좁힐 수있는 방법을 할 것입니다. 그 날 lh-tags을 시작했다 무엇 : 그것은 일치하는 모든 태그를 제공하고 다양한 기준에 그들을 필터링 허용 (파일 이름, 종류, 범위, ...)이 두 가지 유용한 플러그인에 대한

+0

감사합니다. –

+0

@FrankWang, YCM 코드와 아무 관계가 없습니다 ^^. 나는에 한 번 일을했다 [그 소리-인덱서 (https://github.com/LucHermitte/clang_indexer) (당신이 찾고있는 일을 할 수있는). 그러나 나는 최근에 그것에 대해 아무 것도하지 않았다. 나는 그것이 여전히 컴파일 될지는 모르겠다. –