Добавление нового лексера в scintilla/scite (… и, в конечном итоге, в wxPython StyledTextCtrl)
-
18-09-2020 - |
Вопрос
Кто-нибудь из вас успешно добавил лексер в сцинтиллу?
Я следовал коротким инструкциям на http://www.scintilla.org/SciTELExer.html - и даже обнаружил секретные дополнительные инструкции на http://www.scintilla.org/ScintillaDoc.html#BuildingScintilla (Изменение набора лексеров)
Все компилируется, и я могу легко добавить лексер в SciTE, но мой метод ColouriseMapfileDoc просто не вызывается (printf не выдает выходные данные).Если я добавлю тот же код, например.лексер ColouriseLuaDoc, все в порядке (printf делает производить продукцию).
Конкретно у меня есть
- В
scintilla/include/Scintilla.iface
, добавленval SCLEX_MAPFILE=99
- И любые идентификаторы лексических классов
- В каталоге scintilla/include запустите
HFacer.py
и подтвердил, чтоSciLexer.h
файл изменился. - Созданный
LexMapfile.cxx
сColouriseMapfileDoc
функция В конце файла связан идентификатор и имя лексера с функцией:
LexerModule lmMapfile (SCLEX_MAPFILE, ColouriseMapfileDoc, «файл карты»);
Бегать
LexGen.py
сгенерировать все make-файлы (согласно секретным инструкциям)- Создал новый файл свойств SciTE путем клонирования.
scite/src/others.properties
- Настройте несколько стилей
- В
scite/src/SciTEGlobal.properties
добавлен$(filter.conf)
к определениюopen.filter
. - Добавлен этот язык в меню «Язык» SciTE.
- Построены Scintilla и SciTE.
- Ворчал и ругался.
Что я делаю не так, кроме, может быть, шага 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
.