Skip to content

lexilla-py: Python bindings for Lexilla

CI PyPI License: MIT Python versions

Permissively-licensed Python bindings for Lexilla, the lexer library for Scintilla.

View on PyPI · View on GitHub

Status

Real CreateLexer/ILexer5 bindings exist: create_lexer, get_lexer_count, get_lexer_name, and a Lexer class (name/identifier, property get/set, word_list_set, and the raw pointer for SCI_SETILEXER). Lex/Fold and the cross-binding/wheel-publishing work are not done yet. See GitHub Issues for what's next.

Why this exists

Lexilla creates the lexer objects (ILexer5) that a Scintilla editor widget attaches via SCI_SETILEXER — it's a separate, Qt-free C++ library from Scintilla itself since Scintilla 5.0. This project exposes that library directly to Python, so any Scintilla binding (e.g. pyside6-scintilla) can use it without re-implementing lexer creation itself — see Project mission for the full background.

Development

See the Development section for the project's mission, how the vendored Lexilla source is verified against upstream, and (as they fill in) the bindings architecture and build instructions. See GitHub Issues for the ordered list of upcoming work, and the Examples section for what's planned there.

Roadmap

The project board tracks the joint roadmap for lexilla-py and pyside6-scintilla; issues and PRs from both repos are added to it automatically.