Hinzufügen eines neuen Lexers zu scintilla/scite (…und schließlich zu wxPython StyledTextCtrl)
-
18-09-2020 - |
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
- In
scintilla/include/Scintilla.iface
, hinzugefügtval SCLEX_MAPFILE=99
- Und alle lexikalischen Klassen-IDs
- Im Verzeichnis scintilla/include ausführen
HFacer.py
und bestätigte, dass dieSciLexer.h
Datei hat sich geändert. - Erstellt
LexMapfile.cxx
mit einemColouriseMapfileDoc
Funktion Am Ende der Datei werden die Lexer-ID und der Name mit der Funktion verknüpft:
LexerModule lmMapfile(SCLEX_MAPFILE, ColouriseMapfileDoc, "mapfile");
Laufen
LexGen.py
um alle Makefiles zu generieren (gemäß den geheimen Anweisungen)- Durch Klonen wurde eine neue SciTE-Eigenschaftendatei erstellt
scite/src/others.properties
- Richten Sie einige Stile ein
- In
scite/src/SciTEGlobal.properties
hinzugefügt$(filter.conf)
zur Definition vonopen.filter
. - Diese Sprache wurde zum Sprachmenü von SciTE hinzugefügt.
- Habe sowohl Scintilla als auch SciTE gebaut.
- Grummelte und fluchte.
Was mache ich falsch, außer vielleicht Schritt 12?
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
.