L'ajout d'un nouvel analyseur lexical pour scintilla/scite (...et finalement wxPython StyledTextCtrl)
-
18-09-2020 - |
Question
A quelqu'un d'entre vous avez ajouté avec succès un analyseur lexical pour étincelle?
J'ai suivi les instructions courtes à http://www.scintilla.org/SciTELexer.html - et encore découvert le secret instructions supplémentaires à http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (Changeant de Lexers)
Tout compile, et je peux ajouter le lexer de SciTE, mais mon ColouriseMapfileDoc méthode n'est pas appelée (un printf ne produit pas de sortie).Si j'ajoute du même code, par exemplele ColouriseLuaDoc lexer, tout va bien (un printf n' produire en sortie).
Plus précisément, j'ai
- Dans
scintilla/include/Scintilla.iface
, a ajoutéval SCLEX_MAPFILE=99
- Et tout lexicale Id de classe
- Dans la parcelle/répertoire include exécuter
HFacer.py
et a confirmé que l'SciLexer.h
fichier a changé. - Créé
LexMapfile.cxx
avec unColouriseMapfileDoc
la fonction À la fin du fichier associé à l'analyseur lexical ID et le nom de la fonction:
LexerModule lmMapfile(SCLEX_MAPFILE, ColouriseMapfileDoc, "fichier");
Exécuter
LexGen.py
pour générer tous les fichiers "makefile" (selon les instructions secrètes)- Créé un nouveau SciTE fichier de propriétés par clonage
scite/src/others.properties
- De mettre en place certains styles
- Dans
scite/src/SciTEGlobal.properties
ajouté$(filter.conf)
à la définition deopen.filter
. - Ajouté cette langue à la Langue du menu de SciTE,
- Construit à la fois Étincelle et SciTE.
- Grogna et maudit.
Ce que je fais mal, sauf peut-être l'étape 12?
La solution
Dans le cas où quelqu'un lit cette question dans l'avenir, vous devez également ajouter une ligne
import yourformat
dans SciTEGlobal.properties
.C'est le sans-papiers de l'étape 9b.
Autres conseils
Dans le cas où quelqu'un lit cette question dans l'avenir, vous aurez également à ajouter une ligne à l'importation yourformat dans SciTEGlobal.les propriétés.C'est le sans-papiers de l'étape 9b.
Cette étape n'est plus nécessaire.J'ai compilé 3.2.2 et cela a été fait avec l'importation *.Le reste des étapes sont toujours complètes et pertinentes si.
Je suis tordre un lexer directement dans scintilla/lexer/LexOthers.cxx
comme décrit dans http://www.scintilla.org/SciTELexer.html.Pour scite 3.2.3 le manque de l'étape 5b est que vous devez ajouter LINK_LEXER(lmYouLexerMod);
dans scintilla/src/Catalogue.cxx
.