.
Anmeldung | Registrieren | Hilfe
in Suchen

Einen bestehenden "Language Service" erweitern

Letzter Beitrag 15. Jun 2010 17:22 von Rainer Schuster. 1 Antworten.
Seite 1 von 1 (2 Treffer)
Beiträge sortieren: Zurück Weiter
  • 11. Jun 2010 14:48

    • Gordon Breuer
    • Top 10 Mitwirkender
      Männlich
    • Registriert am 04. Jun 2008
    • Frankfurt a.M.
    • Beiträge 345
    • Punkte 5.730
    • Moderator

    Confused [*-)] Einen bestehenden "Language Service" erweitern

    Jetzt hätte ich um ein Haar hier auf englisch geposted... Wink

    Visual Studio kennt ja einige Language Services, die u.a. das Intellisense und das Syntax-Highlighting steuern. Mein Plan ist es, einen bestehenden Language Service zu nehmen, diesen um einige Sprachkonstrukte und Regeln zu erweitern und schließlich mit einer neuen Dateiendung verknüpft wieder zu integrieren.

    Was habe ich überhaupt vor?
    Da ich nicht viel Erfahrung mit VS-Erweiterungen habe (und gar keine unter VS2010), erläutere ich gerne noch was die Intention des ganzen überhaupt ist - vielleicht gibt es ja eine ganz andere / einfachere / bessere Lösung an die ich gar nicht gedacht habe. Smile

    XML-Dateien haben einen großen Vorteil: Möchte ich ein bestehendes Schema erweitern kann ich das in einer mehr oder weniger übersichtlichen Datei nach festgelegten Regeln machen - und wenn das veränderte Schema dann in die XML eingebunden wird, weiss Visual Studio welche Knoten es gibt, welche Attribute erlaubt sind etc. und unterstützt mich mit Intellisense beim Bearbeiten der Datei. 

    Jetzt habe ich aber ein Dateiformat, dass nicht auf XML beruht, wie C#- oder CSS-Dateien. Auch hier gibt es festgelegte Keywords, es gibt Variablen die ich definieren kann (und welche dann ebenfalls im Intellisense bsp. bei Wertzuweisungen auftauchen), ... halt einen Satz von "Regeln" und "Konventionen" wie eine solche Datei aufgebaut sein darf.
    In meinem konkreten Fall möchte ich den Service, der für die Verarbeitung von CSS-Dateien zuständig ist, mit einigen neuen Sprachkonstrukten erweitern: .LESS ist hier das Zauberwort. Es gibt zwar eine Erweiterung, die .less-Dateien wie .css-Dateien behandelt (CSS is Less), jedoch zeigt mir Visual Studio verständlicherweise viele Fehler an da es weder die Verschachtelung noch die Verwendung von Variablen kennt. Und genau an diesem Punkt möchte ich ansetzen und die speziellen .less-Konstrukte in den CSS Language Service integrieren und als eigenständigen Service dann bereitstellen.

    Ist das grundsätzlich überhaupt möglich? Und wenn ja, wo setze ich hier am besten an ... mir fehlt quasi der richtige Einstiegspunkt. Von da aus wühle ich mich dann selbst durch Wink

    --Gordon
    • IP-Adresse ist Registriert
  • 15. Jun 2010 17:22 Antwort zu

    Einen bestehenden "Language Service" erweitern

    Prinzipiell geht das was du vor hast. MS baut ja ihre Extensions rund um MEF auf mit VS2010. Ich habe mir damals Tutorials und HowTos angeschaut. 

    Ob du den Vorhandenen CSS Lexer und Parser nehmen kannst, kann ich dir nicht sagen, dass weiß ich jetzt nicht genau. Unter umständen müsstes du einen eigenen LESS Parser bauen.

    Wenn du willst suche ich dir ein, zwei Extensions raus die einene Colorizer (SyntaxHighlighter nutzen).

    Das erste das mir einfällt sind die abgekündigten Extensions zu IronPython von Jeff Hardy (gibt ja jetzt von MS offiziell welche). Da hat er auch die Basics eingebaut.

    Steve (http://lanwin.de) hat einen HAML Parser gebaut. Vielleicht kannst du dir da auch was rausklauen.
    Folgende Möglichkeiten falllen mir so ein:

    1. Den CSS Parser Erweitern (glaube da wirst du aber eher schlechte Karten haben).
    2. Einene eigenen Parser (hier gibt es unzählige Möglichkeiten)
    3. Das RubyGem LESS mit IronRuby benutzen und den Parser nutzen (weiß nicht, ob LESS mit IronRuby funktioniert)


    Beispiele oder gute Infostationen (unsoritert):

    VS Extensibility Getting Started:

    VS2010 Blog:
    Direkter Artikel für eigene Dateiextenions:


    Ein Beispiel:

    VS2010 SDK:
    VS2010 SDK DOKU:

    Hoffe das hilf für den Anfang.

    • IP-Adresse ist Registriert
Seite 1 von 1 (2 Treffer)

Regeln | Impressum