Добавление нового лексера в scintilla/scite (... и в конечном итоге wxPython StyledTextCtrl)
Кто-нибудь из вас успешно добавил лексер к сцинтилле?
Я следовал коротким инструкциям на http://www.scintilla.org/SciTELexer.html - и даже обнаружил секретные дополнительные инструкции на http://www.scintilla.org/ScintillaDoc.html (изменение набора лексеров).)
Все компилируется, и я могу просто добавить лексер в 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, "mapfile");
Бежать
LexGen.py
сгенерировать все make-файлы (согласно секретным инструкциям)- Создан новый файл свойств SciTE путем клонирования
scite/src/others.properties
- Установите несколько стилей
- В
scite/src/SciTEGlobal.properties
добавленной$(filter.conf)
к определениюopen.filter
, - Добавил этот язык в языковое меню SciTE,
- Построен как Scintilla и SciTE.
- Ворчал и проклинал.
Что я делаю не так, кроме, может быть, шага 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
,