Domanda

Qualcuno di voi ha aggiunto con successo un lexer a scintilla?

Ho seguito le brevi istruzioni su http://www.scintilla.org/SciTELexer.html - e ho anche scoperto le istruzioni extra segrete su http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (Modifica del set di lexer)

Tutto viene compilato e posso aggiungere il lexer a SciTE senza problemi, ma il mio metodo ColouriseMapfileDoc semplicemente non viene chiamato (un printf non produce output).Se aggiungo lo stesso codice ad es.il lexer ColouriseLuaDoc, va tutto bene (un printf fa produrre output).

Nello specifico ho

  1. In scintilla/include/Scintilla.iface, ha aggiunto val SCLEX_MAPFILE=99
  2. E qualsiasi ID di classe lessicale
  3. Nella directory scintilla/include esegui HFacer.py e ha confermato che il SciLexer.h il file è cambiato.
  4. Creato LexMapfile.cxx con un ColouriseMapfileDoc funzione
  5. Alla fine del file associa l'ID e il nome del lexer alla funzione:

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

  6. Correre LexGen.py per generare tutti i makefile (secondo le istruzioni segrete)

  7. Creato un nuovo file delle proprietà SciTE mediante clonazione scite/src/others.properties
  8. Imposta alcuni stili
  9. In scite/src/SciTEGlobal.properties aggiunto $(filter.conf) alla definizione di open.filter.
  10. Aggiunta questa lingua al menu Lingua di SciTE,
  11. Costruito sia Scintilla che SciTE.
  12. Borbottò e imprecò.

Cosa sto facendo di sbagliato, tranne forse il passaggio 12?

È stato utile?

Soluzione

Nel caso in cui qualcuno legga questa domanda in futuro, dovrai anche aggiungere una rigaimport yourformat In SciTEGlobal.properties.Questo è il passaggio 9b non documentato.

Altri suggerimenti

Nel caso in cui qualcuno legga questa domanda in futuro, dovrai anche aggiungere una linea Import YourFormat in SciteGlobal.properties.Questo è il passaggio 9b non documentato.

Questo passaggio non è più necessario.Ho compilato la versione 3.2.2 e questo è stato fatto con import *.Il resto dei passaggi è comunque completo e pertinente.

Sto inserendo direttamente un lexer scintilla/lexer/LexOthers.cxx come descritto in http://www.scintilla.org/SciTELexer.html.Per scite 3.2.3 è necessario aggiungere il passaggio 5b mancante LINK_LEXER(lmYouLexerMod); In scintilla/src/Catalogue.cxx.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top