Vim의 omnicppcomplete가 인수를 취하지 않는 함수 나 메소드의 인수 목록을 자동으로 닫을 수 있습니까? 닫는 괄호가 자동으로 추가 될 경우 그것은 좋은 것omnicppcomplete가 빈 인수 목록을 자동으로 닫게하는 방법?
v.clear(
: 자동 v.clear()
를 완료 할 때 v
가정 예를 들어
는, STL과 벡터이다, 우리와 끝까지. 이것이 가능한가?
Vim의 omnicppcomplete가 인수를 취하지 않는 함수 나 메소드의 인수 목록을 자동으로 닫을 수 있습니까? 닫는 괄호가 자동으로 추가 될 경우 그것은 좋은 것omnicppcomplete가 빈 인수 목록을 자동으로 닫게하는 방법?
v.clear(
: 자동 v.clear()
를 완료 할 때 v
가정 예를 들어
는, STL과 벡터이다, 우리와 끝까지. 이것이 가능한가?
가능한 것이 같습니다. 최신 버전의 omnicppcomplete 스크립트가 있는지 여부는 확실하지 않지만 내 autoload/omni/cpp/complete.vim
에는 s:ExtendTagItemToPopupItem
이라는 기능이 있습니다. 이 함수에서,이 :
" Formating information for the preview window
if index(['f', 'p'], tagItem.kind[0])>=0
let szItemWord .= '('
if g:OmniCpp_ShowPrototypeInAbbr && has_key(tagItem, 'signature')
let szAbbr .= tagItem.signature
else
let szAbbr .= '('
endif
endif
라인 (내 버전 # 165) let szItemWord .= '('
후, 추가 : 나는 C를 사용하지 않지만 이이 (트릭을 할해야
if (has_key(tagItem, 'signature') == 0) || (tagItem['signature'] =~ '()')
let szItemWord .= ')'
endif
그건 ++ 많이, 그래서 그것을 광범위하게 테스트하지 않았다). 기본적으로 함수의 "서명"이 (예 :) "(int *major, int *minor)
"이 아닌 "()
"을 포함하는지 확인합니다. 대괄호가 비어 있으면 닫는 중괄호가 추가됩니다.
그것은 아마 완성도 '(\s*\(void\)\?\s*)'
에 '()'
를 변경하면이 문제를 개선 할 수있다 :이 "()
", "()
"를 "(void)
"을 확인 것 "(void)
"등
나는 단지 대신 라인 (165) :
let szItemWord .= tagItem['signature']
나는 w를 얻을이 방법으로
let szItemWord .= '('
구멍 프로토 타입을 함수 이름 대신 코드에 삽입 한 다음 매개 변수를 하나씩 대체합니다.
고마워요! 매력처럼 작동합니다. 나는이 기능이 새로운 omnicppcomplete 패치를위한 좋은 후보라고 생각한다. 나는 당신의 허락하에 시간을 보내고 나서 작업을 시작할 것입니다. 몇 가지 개선의 여지가 있습니다. 메소드 인자를 채울 때 팝업이 보이기를 원합니다. 특히 긴 인수 목록에 대해서는이 것이 유용 할 수 있습니다. –
나는 이것이 완성을 훨씬 좋게한다는 것에 동의한다. 그것은 omnicppcomplete의 저자에게 이것을 제안하면 할 수있는 방법에 대한 제안을 할 수 있습니다 (나는 위에서 파고 들었습니다). – DrAl