aboutsummaryrefslogtreecommitdiff
path: root/TECHNOLOGY.md
diff options
context:
space:
mode:
Diffstat (limited to 'TECHNOLOGY.md')
-rw-r--r--TECHNOLOGY.md82
1 files changed, 82 insertions, 0 deletions
diff --git a/TECHNOLOGY.md b/TECHNOLOGY.md
new file mode 100644
index 00000000..7cac0192
--- /dev/null
+++ b/TECHNOLOGY.md
@@ -0,0 +1,82 @@
+# 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.
+
+=[curses-windowman][] - Library to manage split views in curses applications=
+ Textadept uses curses-windowman for handling split views in the terminal
+ version.
+
+=[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.
+
+[GTK+]: http://www.gtk.org
+[Scintilla]: http://scintilla.org
+[Lua]: http://www.lua.org
+[LuaJIT]: http://luajit.org
+[Scintillua]: http://foicica.com/scintillua
+[Scinterm]: http://foicica.com/scinterm
+[LPeg]: http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html
+[LuaFileSystem]: http://keplerproject.github.io/luafilesystem/
+[lspawn]: http://foicica.com/hg/lspawn
+[gtDialog]: http://foicica.com/gtdialog/
+[curses-windowman]: https://bitbucket.org/jugglerchris/curses-windowman
+[ncurses]: http://invisible-island.net/ncurses/
+[pdcurses]: http://pdcurses.sourceforge.net/
+[cdk]: http://invisible-island.net/cdk/
+[libtermkey]: http://www.leonerd.org.uk/code/libtermkey/