Добавление нового лексера в scintilla/scite (... и в конечном итоге wxPython StyledTextCtrl)

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

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

Все компилируется, и я могу просто добавить лексер в 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 ответа

Решение

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

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

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

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

Другие вопросы по тегам