# Textadept

- Home |
- Download |
- Book |
- Manual |
- API |
- Source |
- Language Modules |
- Stats |
- Wiki |
- Mailing List

# 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.
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.