Pergunta

Alguém de vocês adicionou com sucesso um lexer ao scintilla?

Tenho seguido as breves instruções em http://www.scintilla.org/SciTELexer.html - e até descobri as instruções extras secretas em http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (Mudando o conjunto de Lexers)

Tudo é compilado e posso adicionar o lexer ao SciTE perfeitamente, mas meu método ColouriseMapfileDoc simplesmente não é chamado (um printf não produz saída).Se eu adicionar o mesmo código, por exemplo.o lexer ColouriseLuaDoc, está tudo bem (um printf faz produzir saída).

Especificamente eu tenho

  1. Em scintilla/include/Scintilla.iface, adicionado val SCLEX_MAPFILE=99
  2. E quaisquer IDs de classe lexical
  3. No diretório scintilla/include execute HFacer.py e confirmou que SciLexer.h arquivo foi alterado.
  4. Criada LexMapfile.cxx com um ColouriseMapfileDoc função
  5. No final do arquivo associe o ID e o nome do lexer à função:

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

  6. Correr LexGen.py para gerar todos os makefiles (de acordo com as instruções secretas)

  7. Criou um novo arquivo de propriedades SciTE clonando scite/src/others.properties
  8. Configure alguns estilos
  9. Em scite/src/SciTEGlobal.properties adicionado $(filter.conf) para a definição de open.filter.
  10. Adicionado este idioma ao menu Idioma do SciTE,
  11. Construiu o Scintilla e o SciTE.
  12. Resmungou e amaldiçoou.

O que estou fazendo de errado, exceto talvez a etapa 12?

Foi útil?

Solução

Caso alguém leia esta pergunta no futuro - você também terá que adicionar uma linhaimport yourformat em SciTEGlobal.properties.Essa é a etapa 9b não documentada.

Outras dicas

Caso alguém leia essa pergunta no futuro - você também precisará adicionar uma linha importar seu formato em sciteglobal.properties.Essa é a etapa 9b não documentada.

Esta etapa não é mais necessária.Compilei o 3.2.2 e isso foi feito com import *.O restante das etapas ainda está completo e relevante.

Estou torcendo um lexer diretamente scintilla/lexer/LexOthers.cxx conforme descrito em http://www.scintilla.org/SciTELexer.html.Para o scite 3.2.3, a etapa 5b que falta é que você precisa adicionar LINK_LEXER(lmYouLexerMod); em scintilla/src/Catalogue.cxx.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top