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

StackOverflow https://stackoverflow.com/questions/3297567

Вопрос

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

Я следовал коротким инструкциям на 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, «файл карты»);

  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?

Это было полезно?

Решение

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

Другие советы

В случае, если кто -то прочитает этот вопрос в будущем - вам также придется добавить линию Import Yourformat в 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top