Table of Contents
LucED is an open source text editor with a graphical X11 user interface. Although the project has not published any official releases so far, you are welcome to play around with the current source code.
The principal aim of the LucED project is to develop a text editor with the following features:
- A simple and minimalistic, but powerful user interface that is similar to the NEdit text editor, but does not depend on Motif
- Fast and responsive user interface: e.g. syntax highlighting is done in the background and does not freeze the user interface, special handling to achieve fast keyboard repeat rates
- No dependencies on high-level widget toolkits in order to minimise the requirements for the runtime system to support old systems and slow network connections
The following features are already imlemented:
- Embedded Lua programming language for scripting and configuration
- Syntax highlighting configurable via PCRE regular expressions, similar to the NEdit syntax highlighting but with the enhancement to use arbitrarily nested patterns
- Full unicode support (works with UTF-8 internally)
Up to now, LucED doesn't have a menu bar or a file selector... so the intended audience are users working with the commandline ;-)
LucED - The Lucid Editor - is copyrighted by Oliver Schmidt and is licensed under the terms of the GNU General Public License Version 2 (see the files
LucED contains modified software from the following projects:
Lua - a powerful, fast, lightweight, embeddable scripting language - is copyrighted by Lua.org, PUC-Rio and is licensed under the terms of the MIT License (see the file
PCRE - Perl Compatible Regular Expressions - is copyrighted by the University of Cambridge and is licensed under the terms of the BSD Licence (see the file
LPeg - Parsing Expression Grammars For Lua - is copyrighted by Lua.org, PUC-Rio and is licensed under the terms of the MIT License (see the file
lposix - a POSIX library for Lua - has been placed in the public domain by its author (see the file
Installing an official release
Official LucED releases will be distributed as tar.gz archives, based on the widely used GNU autotools build system.
The tar.gz archive should not be used for development purposes, because it contains generated C++ code.
For development purposes a checked out git repository should be used (see section Building in a development sandbox).
The following software must be installed:
- tar program, e.g. GNU Tar
- gunzip program, e.g. GNU Gzip
- sh standard shell, e.g. GNU Bash
- Any make program that is supported by the GNU autotools, e.g. GNU Make
- C++ compiler , e.g. gcc version 3.4 or higher
- libX11 with development headers
- libxpm with development headers (optional)
- libiconv with development headers (optional), e.g. GNU libiconv
- traditional X11 bitmap fonts, package name depends on distribution, e.g.
If for example the tar.gz file has name
luced-0.01.tar.gz, you can build and install LucED with the command sequence:
tar xf luced-0.01.tar
sudo make install-strip
When invoking the command
./configure, the configure script tries to figure out build options for the underlying operating system. This process can be influenced by passing some of the following commandline options to the configure script:
--disable-xpm disables the usage of libxpm for displaying icons. This can improve performance on slow connections.
--disable-iconv disables the usage of libiconv for transforming character encodings. If libiconv is disabled, LucED only knows UTF-8 and ISO-8859-1 encoding.
--enable-debug enables various runtime checks for debugging purposes. This can slow down performance but makes it easier to track errors, since a detected programming error will abort the program immediately.
--prefix=PREFIX is a generic configure option to determine, where the files are to be installed (default for PREFIX is:
/usr/local). The LucED program is then installed under
The configure script has a lot of more generic commandline options. As usual, you may invoke
to get a list of all commandline options that can be passed to the configure script.
Building in a development sandbox
For development purposes, LucED should be build within a checked out Git repository.
In this case the GNU autotools are only used for finding the system configuration with autoconf (and for building the release tar.gz archive), the build process itself is based on hand-written Makefiles.
The following software must be installed, if you want to build LucED within a checked out Git repository:
Check out Git repository
You can get the latest source code from the github repository.
git clone git://github.com/osch/luced.git
Try the following commands for building LucED:
Local build adjustments can be done in the file sandbox.mk, to override settings of the Makefile.
For building a debug executable, the file sandbox.mk should contain the following line:
CPP_DEFINES += -D DEBUG
Configure options can also be placed in the file sandbox.mk, e.g.:
CONFIGURE_OPTS := --disable-xpm
Example: Compiling with the clang compiler:
CONFIGURE_OPTS := CC=clang CXX=clang++
Build a distributable tar.gz archive
Build a distributable tar.gz ball with the following commands:
This will build a standard source tar.gz ball that can be installed with the notorious command sequence:
This tar ball should not be used for development purposes, because it contains generated C++ code.
For development purposes a checked out git repository should be used.
Compilation has been tested with gcc versions 3.4, 4.1, 4.2, 4.3, 4.4 and clang version 2.9 (clang version 2.8 compiles, but generates incorrect exception handling code).
There may be problems with some C++ compilers, that do not fully support C++ templates.
If you have any problems, please contact the author via email: oliver at luced dot de.
To open the file
test.txt simply type:
For less typing, the author recommends to create a shell alias or a symbolic link to type
lc instead of
LucED doesn't have a file selector, every file must be opened through the shell command line. To create a new file, simply invoke LucED with the desired name of the new file.
If the current directory and the home directory both have no directory named
.luced, a default
.luced configuration directory is written on program invocation in the home directory.
LucED evaluates the following environment variables:
HOME to find out, where the default config directory
.luced is to be found.
LUCED_CONFIG_DIR to override the default config directory
LUCED_DEFAULT_ENCODING to override the system's default character encoding.
LUCED_INSTANCE to invoke LucED with a specific instance name if no instance name is given as the commandline argument.
The following options can ba passed (both short and long forms are possible):
--instance to determine the LucED instance name. The following argument parameter must be the desired instance name.
--no-server to start LucED as foreground process without considering or launching a background server process.
--encoding to determine the encoding for the next file name on the commandline. The following commandline argument must be the name of the desired encoding.
--quit-server to shut down a running server instance from the commandline.
--clone-default-config to clone the built-in config package default in the LucED config directory.
luced -i TEST test1.txt -e latin1 test2.txt test3.txt
invokes LucED with instance name TEST, files
test3.txt with default encoding and file
test2.txt with Latin-1 character encoding. If no instance with name TEST exists, a background LucED server process with this instance name is started. If the named LucED server instance exists, the commandline arguments are passed to this instance. If a desired file is already loaded, the corresponding window is raised (the option
-e is ignored in this case).
clones the default config package and gives e.g. the following output message:
[luced]: Cloned default config package to /home/oliver/.luced/default-1
this can be useful to edit or to examine the built-in config files of the default package.