Добавление нового лексера в scintilla / scite (... и в конечном итоге wxPython StyledTextCtrl) - PullRequest
3 голосов
/ 21 июля 2010

Кто-нибудь из вас успешно добавил лексер к сцинтилле?

Я следовал коротким инструкциям на http://www.scintilla.org/SciTELexer.html - и даже обнаружил секретные дополнительные инструкции на http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (Изменение набора лексеров)

Все компилируется, и я могу просто добавить лексер в SciTE, но мой метод ColouriseMapfileDoc просто не вызывается (printf не производит вывод). Если я добавлю тот же код, например, с лексером ColouriseLuaDoc все в порядке (printf выводит ).

В частности, у меня есть

  1. В scintilla/include/Scintilla.iface, добавлено val SCLEX_MAPFILE=99
  2. И любые лексические идентификаторы классов
  3. В каталоге scintilla / include запустите HFacer.py и подтвердите, что файл SciLexer.h изменился.
  4. Создано LexMapfile.cxx с функцией ColouriseMapfileDoc
  5. В конце файла привязывается идентификатор и имя лексера с функцией:

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

  6. Запустите LexGen.py, чтобы сгенерировать все make-файлы (согласно секретным инструкциям)

  7. Создан новый файл свойств SciTE путем клонирования scite/src/others.properties
  8. Настройка некоторых стилей
  9. В scite/src/SciTEGlobal.properties добавлено $(filter.conf) к определению open.filter.
  10. Добавлен этот язык в языковое меню SciTE,
  11. Создан как Scintilla, так и SciTE.
  12. Ворчал и проклинал.

Что я делаю не так, кроме, может быть, шага 12?

Ответы [ 3 ]

3 голосов
/ 30 октября 2012

Если кто-то прочтет этот вопрос в будущем - вам также нужно будет добавить строку import yourmatmat в SciTEGlobal.properties.Это недокументированный шаг 9b.

Этот шаг больше не требуется.Я скомпилировал 3.2.2, и это было сделано с помощью импорта *.Остальные шаги все еще завершены и актуальны.

3 голосов
/ 26 июля 2010

В случае, если кто-то прочитает этот вопрос в будущем - вам также нужно будет добавить строку import yourformat в SciTEGlobal.properties. Это недокументированный шаг 9b.

2 голосов
/ 19 ноября 2012

Я выкручиваю один лексер непосредственно в scintilla/lexer/LexOthers.cxx, как описано в http://www.scintilla.org/SciTELexer.html. Для scite 3.2.3 не хватает шага 5b: вам нужно добавить LINK_LEXER(lmYouLexerMod); в scintilla/src/Catalogue.cxx.

...