Więc w Visual Studio 2010 i później , interfejsy API rozszerzeń, których chcesz używać, znajdują się w przestrzeni nazw Microsoft.VisualStudio.Languages.IntelliSense. Na wysokim poziomie chcesz eksportować MEF ICompletionSourceProvider
, który zapewni potrzebne elementy. Istnieją dwa dobre posty na blogu: here i here, które demonstrują podstawową technikę.
Są dwa problemy, które napotkasz, jeśli chcesz, aby zrzut ekranu stał się rzeczywistością. (Dlatego właśnie poprosiłem o scenariusz, ponieważ moja rada ulegnie zmianie.) Po pierwsze, ta metoda nie pozwala prawnie dołączyć do istniejącego zestawu kompletacji, a raczej zapewnić nowy. W interfejsie użytkownika są to dwie karty, takie jak karty Wspólne/Wszystkie w edytorze Visual Basic. To jest ograniczenie bieżącego interfejsu API. Możesz spróbować zmodyfikować jeden z istniejących zestawów ukończeń w swoim AugmentCompletionSource
, ale nie mam pojęcia, czy to zadziała. W każdym razie jest to z pewnością nieobsługiwane.
Po drugie, naprawdę ciężko jest wiedzieć, kiedy i gdzie polecać rzeczy. W twoim przykładzie powiedziałeś "IntelliSense dla string
". Niestety, nie ma żadnych interfejsów API (obecnie) w VS, które informują o tym, co jest przed kropką. Możesz wykonać prostą heurystykę lub spróbować zaimplementować parser Good Enough ™ do swojego scenariusza, ale na razie musisz zaakceptować, że nie osiągniesz doskonałych rezultatów.
Celem projektu Roslyn jest poprawienie drugiego numeru, więc może się okazać, że warto będzie zbadać nieco dalej. Ponieważ spodziewamy się, że wiele osób będzie chciało przedłużyć jego ukończenie, rozważamy również oferowanie innych interfejsów API rozszerzalności, aby nie trzeba było od razu rzucać ICompletionSourceProvider
, ale takie interfejsy API nie znajdują się w bieżącym CTP.
[Zastrzeżenie:. Jestem członkiem zespołu, który pracuje na Roslyn IntelliSense]
@oded ive właśnie spędziliśmy kilka godzin przeglądając google, msdn ect i przystań w stanie znaleźć coś w ogóle na rozszerzenie intellisense, czy masz jakieś zalecenia, gdzie go szukać? –
Przepraszam Luke, nie sądzę, że [forum Visual Studio Extensibility] (http://social.msdn.microsoft.com/Forums/en-US/vsx/threads) byłoby dobrym początkiem. Ale możesz "przeformułować" pytanie, aby nie pytać o linki i faktycznie być pytaniem na temat programowania. – Oded
Również przykład tego, co chciałbyś dodać do Intellisense, bardzo by pomógł. Jest wiele różnych technik, które mogą być potrzebne ... –