Frage

Ich hoffe, dass dies eine gültige Frage ist: Wie funktioniert Intellisense Arbeit in VS2008? Ich bin nach dem, was über den Algorithmus bekannt ist, verwendet sie die Vorschläge zu finden, wann genau es erscheint (die „“ ist nur ein offensichtlicher Auslöser), wie sein Verhalten, wenn überhaupt möglich geändert werden kann, usw.

Um diese Frage in Zusammenhang zu bringen. Das Hauptproblem ich zu lösen bin versucht, wie Intellisense in Teilen des Editoranzeige aktivieren und deaktivieren und wie Sie ändern, wo es durchsucht den Vorschlag Feld aufzufüllen

Alle Informationen sind willkommen.

War es hilfreich?

Lösung

Werfen Sie einen Blick auf diese DIY Intellisense Artikel auf Codeproject.

Andere Tipps

Es macht mehr Spaß, es Reverse-Engineering, though. Lassen Sie uns das Problem betrachten:

  • Sie müssen die Worte von Interesse
  • identifizieren
  • Sie müssen die Optionen möglich finden
  • Sie brauchen, um sie zu präsentieren

Nun ist der erste Schritt bedeutet, dass Sie den Code zu analysieren haben. Sie haben die C / C bekommen ** Keywords, können Sie die verschiedenen Funktionen und Klassendeklarationen vorab analysieren, und sie in eine Art von Datenstruktur laden. Dann Sie den Code analysieren und speichern Sie die Klasse, Variable, etc Namen und setzen Sie sie in der gleichen Datenstruktur.

Der zweite Schritt bedeutet, dass Sie eine Datenstruktur wollen, die effizient für ein Teilwort suchen und alle Worte bekommen, die dieses Präfix haben. Sie können tun , die mit regulären Ausdrücken, aber das ist nicht sehr effizient ist. Eine effiziente Datenstruktur für diese Art der Suche ist ein Trie, die diskutiert wird hier auf SO .

Wenn Sie die Liste der Möglichkeiten haben, können Sie es einfach präsentieren. Sie wollen wahrscheinlich einen Verweis auf die Wurzel des Baumes von Möglichkeiten zu halten, damit Sie sie heraus in Echtzeit als jemand Typen mehr Buchstaben suchen.

Eclipse-hat auch diese Funktion und es ist ein Open-Source-Projekt. Warum nicht überprüfen, wie Eclipse-es tut, indem tatsächlich Blick auf den Code?

Diese Frage ist zu weit gefasst. Da es eine Reihe von verschiedenen Sprachen ist unterstützt die VS IDE aus der Box und es gibt eine Anzahl von N DSL und IDE-Erweiterungen, die alternative intellisense unterstützen diese eine Reihe von Antworten impliziert. Wenn Sie C # sprechen speziell dann die Werkzeuge anzeigen | Optionen | Texteditor | C # | Intellisense Bereich um die verfügbaren Optionen der Fertigstellung Optionen anzuzeigen. Was den Algorithmus [s] verwendet, würden Sie für die Metadaten von Baugruppen, reichlich Caching von Typ-Mitgliedern, MRU-Liste für letztes Mitglied für bestimmte Art gewählt suchen werden, usw. Wenn Sie eine bestimmte Frage haben, würde ich vorschlagen Sie klären.

Siehe das Beispiel eines DSL (Ironpython) und deren Umsetzung hier .

Ich habe keinen Texteditor in VS gesehen, dass Grenzen, wo IntelliSense auftaucht. Es ist alles sprachspezifisch. Wenn Sie den Cursor an einem Punkt befindet, in dem IntelliSense auf ein gültiges Token beitragen könnte, das ist, wenn es verwendet.

Ich glaube, es gibt einige Interaktion mit dem Projektsystem verwendet wird, aber das ist so weit ich weiß. Ich glaube auch, es ist ein Beispielprojekt System in dem Visual Studio SDK, und das könnte Ihnen eine Idee geben.

Für solche Fälle habe ich manchmal meine eigene Version von InteliSense verwenden, die ich für AutoHotKey wenn ich will ein bestimmtes Verhalten. Der Punkt dieses Skripts ist, dass es mit einem beliebigen Editor verwendet werden kann, oder im Grunde jeder Kontrolle zu akzeptieren Text. Es funktioniert durch die Texteingabe Aufzeichnung und es auf Syntaxdatei zu interpretieren.

Sie können es vielleicht als Basis verwenden, für das, was Sie erreichen wollen. Früher habe ich iSense succesifully mit mehreren Sprachen, die nicht so etwas haben, wie Csound oder sogar Batch Skripte. Es wird möglich sein, sie zu verlängern C # Eingangsüberwachung in Kombination mit Reflexion zu unterstützen.

Wie auch immer, mit AHK kann man sogar VS intelissense steuern, indem die Liste der Elemente „unter“ es stellt und filtern es, oder ähnliche Dinge. Sie können einige kleine Probleme mit Prozessgrenzen haben aber nichts, das festgelegt werden kann nicht.

Die Intellisense ius im Allgemeinen, AFAIK, umgesetzt mit verschiedenen Methoden. Ich las, dass Delphi so schnell ist, dass es iSense implementiert, indem Sie auf jedem Token, das Projekt neu zu kompilieren und das ist der Grund, C ++ Builder nicht hat iSense als sehr langsam kompiliert wird.

In Bezug auf Ihre, wie sich ändern, wo es Frage sieht, kurze Antwort ist, kann man nicht. Intellisense zum größten Teil durch Reflexion von Baugruppen in Ihrem Projekt enthalten (und einige andere Tricks mit C ++) zur Verfügung gestellt. Was Sie bekommen, ist ein Ergebnis der VS Verarbeitung durch alle Baugruppen, die Sie aufgenommen haben und alle Baugruppen aus dem GAC.

Das heißt, wenn Sie explizite intellisense Ergebnisse aus einem Projekt zur Verfügung stellen möchten, auf dem Sie arbeiten, schauen Sie in IVsContextualIntellisenseFilterProvider

Schließlich wird für einen Einblick in die hinter den Kulissen Prozess, überprüfen

scroll top