문제

나는 이것이 유효한 질문이기를 바랍니다. vs2008에서 Intellisense가 어떻게 작동합니까? 나는 그것이 제안을 찾는 데 사용하는 알고리즘에 대해 알려진 것을 따른 후, 정확히 팝업 될 때 ( "."는 하나의 명백한 트리거 일뿐), 가능한 모든 경우 동작을 수정할 수있는 방법 등.

이 질문을 맥락에두기 위해 : 내가 해결하려는 주요 문제는 편집기 화면의 일부에서 Intellisense를 활성화하고 비활성화하는 방법과 제안 상자를 채우기 위해 검색 위치를 수정하는 방법입니다.

모든 정보를 환영합니다.

도움이 되었습니까?

해결책

이것을 살펴보십시오 DIY Intellisense 기사 CodeProject에서.

다른 팁

하지만 리버스 엔지니어링하는 것이 더 재미 있습니다. 문제를 고려해 봅시다 :

  • 관심있는 단어를 식별해야합니다
  • 가능한 옵션을 찾아야합니다
  • 당신은 그들을 제시해야합니다

이제 첫 번째 단계는 코드를 구문 분석해야한다는 것을 의미합니다. C/C ** 키워드가 있고 다양한 기능 및 클래스 선언을 미리 정리하여 어떤 종류의 데이터 구조에로드합니다. 그런 다음 코드를 구문 분석하고 클래스, 변수 등 이름을 저장하여 동일한 데이터 구조에 넣습니다.

두 번째 단계는 부분 단어를 효율적으로 검색하고 접두사가있는 모든 단어를 얻을 수있는 데이터 구조를 원한다는 것을 의미합니다. 당신은 할 수 있습니다 하다 정기적 인 표현은 그다지 효율적이지 않습니다. 이러한 종류의 검색을위한 효율적인 데이터 구조는 트리이며, 논의됩니다. 여기에 .

가능성 목록이 있으면 그냥 제시합니다. 아마도 가능성 나무의 근본을 참조하여 더 많은 글자를 입력 할 때 실시간으로 검색 할 수 있습니다.

Eclipse에는 또한이 기능이 있으며 오픈 소스 프로젝트입니다. 실제로 코드를 보면서 Eclipse가 어떻게 작동하는지 확인하십시오.

이 질문은 너무 넓습니다. 다양한 언어가 있기 때문에 VS IDE가 상자 밖으로 지원하는 여러 언어가 있으므로 대체 지능질을 지원하는 N의 DSL 및 IDE 개선 사항이 있습니다. 이는 여러 답변을 의미합니다. C#에 대해 구체적으로 말하는 경우 도구 | 옵션 | 텍스트 편집기 | C# | Intellisense 지역 완료 옵션의 사용 가능한 옵션을 볼 수 있습니다. 사용 된 알고리즘에 관한 한, 어셈블리의 메타 데이터, 유형 회원의 풍부한 캐싱, 특정 유형으로 선택된 마지막 멤버의 MRU 목록 등을 찾고있을 것입니다.보다 구체적인 질문이 있으면 제안합니다. 당신은 분명합니다.

DSL (Ironpython) 및 구현의 예를 참조하십시오. 여기.

나는 Intellisense가 나타나는 곳에서 제한되는 vs의 텍스트 편집기를 보지 못했습니다. 그것은 모두 언어에 따라 다릅니다. Cursor가 IntelliSense가 유효한 토큰에 기여할 수있는 지점에 있으면 사용될 때입니다.

나는 프로젝트 시스템이 사용되는 것과 약간의 상호 작용이 있다고 생각하지만, 나는 내가 아는 한 멀다. 또한 Visual Studio SDK에 샘플 프로젝트 시스템이 있다고 생각합니다.

그러한 경우에 나는 때때로 내가 개발 한 내 자신의 Intelisense를 사용합니다. Autohotkey 특정 행동을 원할 때. 이 스크립트의 요점은 모든 편집기 또는 기본적으로 텍스트를 수락하는 컨트롤과 함께 사용할 수 있다는 것입니다. 텍스트 입력을 녹음하고 구문 파일에서 해석하여 작동합니다.

당신은 그것을 달성하고자하는 것들을위한 기반으로 사용할 수 있습니다. 나는 그런 것이없는 여러 언어로 Isense를 성공적으로 사용했습니다. csound 또는 배치 스크립트조차도. 반사와 함께 입력 모니터링을 사용하여 C#을 지원하도록 확장 할 수 있습니다.

어쨌든, AHK를 사용하면 제시하고 필터링하거나 필터링하거나 유사한 항목의 목록을 "가져 와서"vs intelissense도 제어 할 수 있습니다. 프로세스 경계에 약간의 문제가있을 수 있지만 고칠 수없는 것은 없습니다.

IntelliSense IUS는 일반적으로 다른 방법을 사용하여 구현되었습니다. 나는 Delphi가 너무 빨라서 각 토큰의 프로젝트를 다시 컴파일하여 Isense를 구현한다는 것을 읽었으며 C ++ Builder가 컴파일이 매우 느리게 컴파일되어 있지 않은 이유입니다.

질문이있는 곳을 바꾸는 방법에 관해서는 짧은 대답은 할 수 없습니다. 대부분의 Intellisense는 프로젝트에 포함 된 어셈블리 (및 C ++가있는 다른 트릭)를 반영하여 제공합니다. 당신이 얻는 것은 당신이 포함한 모든 어셈블리와 GAC의 모든 어셈블리를 통한 대 처리의 결과입니다.

즉, 작업중인 프로젝트에서 명백한 지능적인 결과를 제공하려면 조사하십시오. ivsContextualIntEllIsenseFilterProvider

마지막으로, 뒤에서 비하인드 과정에 대한 통찰력을 얻으려면 이 블로그 게시물

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top