Technology

Textadept is composed of many different technologies, which are briefly listed in the following sections.

User Interface

Textadept’s user interface consists of a graphical user interface (GUI) and a terminal user interface (TUI).

GTK+ - GIMP Toolkit
Textadept uses GTK as its cross-platform GUI toolkit.
ncurses, pdcurses - Libraries for displaying terminal applications
Textadept uses ncurses as its Linux, MacOSX, and BSD terminal UI, and uses pdcurses as its Windows terminal UI.
gtDialog* - Cross-platform tool for creating interactive dialogs
Textadept uses gtDialog for displaying interactive GUI and TUI dialogs.
cdk - Widget library for terminal applications
Textadept uses cdk for drawing terminal UI widgets.
libtermkey - Library for processing keyboard entry for terminal apps
Textadept uses libtermkey for advanced keyboard entry handling.

Editor

Textadept’s core text editing component is Scintilla.

Scintilla - Scintilla
Textadept uses Scintilla as its core text editing component.
TRE - Regular Expression Library
Textadept replaces Scintilla’s bare-bones Regex capabilities with TRE. Approximate matching is not turned on.
Scinterm* - Scintilla for curses
Textadept uses Scinterm as its core text editing component for the terminal version.
Scintillua* - Dynamic Lua LPeg Lexers for Scintilla
Textadept uses Scintillua and its lexers for highlighting source code.

Scripting

Textadept uses Lua as its scripting language. The editor is primarily written in Lua and includes a few external libraries.

Lua - Lua Programming Language
Textadept uses Lua as its internal scripting language. Most of Textadept is written in Lua.
LuaJIT - Just in Time Compiler for Lua
Textadept optionally uses LuaJIT as a substitute for vanilla Lua.
LPeg - Parsing Expression Grammars for Lua
Textadept uses LPeg in its Scintillua lexers.
LuaFileSystem - Library for accessing directories and file attributes
Textadept uses LFS for accessing the host filesystem.
lspawn* - Lua module for spawning processes
Textadept uses lspawn for spawning asynchronous processes.

* A Foicica.com project.