Hinzufügen eines neuen Lexers zu scintilla/scite (…und schließlich zu wxPython StyledTextCtrl)

StackOverflow https://stackoverflow.com/questions/3297567

Frage

Hat jemand von euch Scintilla erfolgreich einen Lexer hinzugefügt?

Ich habe die kurzen Anweisungen unter befolgt http://www.scintilla.org/SciTELexer.html - und entdeckte sogar die geheime Zusatzanleitung unter http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (Ändernder Satz Lexer)

Alles wird kompiliert und ich kann den Lexer problemlos zu SciTE hinzufügen, aber meine ColouriseMapfileDoc-Methode wird einfach nicht aufgerufen (ein printf erzeugt keine Ausgabe).Wenn ich den gleichen Code z.B. hinzufügeder ColouriseLuaDoc-Lexer, alles ist in Ordnung (ein printf tut Ausgabe erzeugen).

Konkret habe ich

  1. In scintilla/include/Scintilla.iface, hinzugefügt val SCLEX_MAPFILE=99
  2. Und alle lexikalischen Klassen-IDs
  3. Im Verzeichnis scintilla/include ausführen HFacer.py und bestätigte, dass die SciLexer.h Datei hat sich geändert.
  4. Erstellt LexMapfile.cxx mit einem ColouriseMapfileDoc Funktion
  5. Am Ende der Datei werden die Lexer-ID und der Name mit der Funktion verknüpft:

    LexerModule lmMapfile(SCLEX_MAPFILE, ColouriseMapfileDoc, "mapfile");

  6. Laufen LexGen.py um alle Makefiles zu generieren (gemäß den geheimen Anweisungen)

  7. Durch Klonen wurde eine neue SciTE-Eigenschaftendatei erstellt scite/src/others.properties
  8. Richten Sie einige Stile ein
  9. In scite/src/SciTEGlobal.properties hinzugefügt $(filter.conf) zur Definition von open.filter.
  10. Diese Sprache wurde zum Sprachmenü von SciTE hinzugefügt.
  11. Habe sowohl Scintilla als auch SciTE gebaut.
  12. Grummelte und fluchte.

Was mache ich falsch, außer vielleicht Schritt 12?

War es hilfreich?

Lösung

Falls jemand diese Frage in Zukunft liest, müssen Sie auch eine Zeile hinzufügenimport yourformat In SciTEGlobal.properties.Das ist der undokumentierte Schritt 9b.

Andere Tipps

Falls jemand diese Frage in Zukunft liest, müssen Sie auch eine Linie importieren.Das ist der undokumentierte Schritt 9b.

Dieser Schritt ist nicht mehr erforderlich.Ich habe 3.2.2 kompiliert und dies wurde mit import * erledigt.Die restlichen Schritte sind jedoch immer noch vollständig und relevant.

Ich wringe einen Lexer direkt ein scintilla/lexer/LexOthers.cxx wie beschrieben in http://www.scintilla.org/SciTELexer.html.Für Scite 3.2.3 fehlt Schritt 5b, den Sie hinzufügen müssen LINK_LEXER(lmYouLexerMod); In scintilla/src/Catalogue.cxx.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top