SXEmacs Website
- ️Steve Youngs
What is SXEmacs
Hmm, that's actually not an easy question to answer. At least, not easy to answer completely. At the most basic of levels, SXEmacs is a text editor. If you've ever used GNU/Emacs or XEmacs you've probably seen the description that goes something like...
...is a highly customisable and extensible, self-documenting, real-time display editor and IDE.
Ditto for SXEmacs. Yep, SXEmacs is JAFE (Just Another Fine Editor). Though, if that's all you thought it was, you'd be missing out. There is very little that SXEmacs can't do, or at least, be made to do. You can tailor it to your wildest dreams and imagination. This is where the "customisable and extensible" part of the description comes in.
It's more than just an editor
If you looked at any of the screenshots you would have seen that even though SXEmacs is a text editor, it can be oh so much more.
- SXEmacs is my Window Manager. Yes, that's right, with the XWEM and XLIB packages installed, SXEmacs becomes a very powerful, full featured, highly customisable Window Manager for X11. Most of the screenshots here were taken using it.
- SXEmacs is my login shell. You can add /usr/local/bin/sxemacs to /etc/shells and change your login shell to sxemacs. It does work. Although we wouldn't recommend trying to run an X session from it. :-)
- SXEmacs is my image viewer. SXEmacs supports a number of image formats right out of the box (GIF, XPM, PNG, JPEG, TIFF, X-Face). If you compile SXEmacs with FFI support and have ImageMagic's libWand available you have a SXEmacs that supports all image formats that libWand does.
- SXEmacs is my mp3 player. I used to use mpg123.el for this, but now I use XWEM's xwem-mpd.el. It hooks into mpd (an mp3 daemon). There are other ways to hear the muzak like emms.
- SXEmacs balances my cheque book. With an elisp package called eMoney (currently only available via Steve Youngs' tla repo's, but one day will be an XEmacs package) SXEmacs turns into a reasonable home finance cash book program.
- SXEmacs can do the math. With Enhanced Number Types, there is very little that SXEmacs can't do mathematically.
- SXEmacs lets me communicate with my friends. SXEmacs can be used as a MUA (Mail User Agent), a newsreader, an IRC client, even an ICQ client. So you can keep in touch without leaving the comfort of your favourite editor.
- SXEmacs helps me with my databases. With support for PostgreSQL compiled in you can manipulate your PgSQL databases. SXEmacs also has more or less complete support for sqlite, and there is also limited support for BerkeleyDB and GNU/dbm.
- SXEmacs makes VC comfortable. VC is short for Version Control and SXEmacs can make dealing with it a lot less painful. There are SXEmacs VC frontends available for CVS, and GNU/Arch (tla). There are also elisp libraries available that integrate with other VCs such as SVN, RCS, and SCCS.
- SXEmacs helps with my security. SXEmacs has support for OpenSSL and allows encryption, decryption, and digest functions.
- SXEmacs helps me with my social life. With such powerful elisp libraries as lj.el, twitter.el, facebook.el, and emacs-flickr.el, I can easily interact with social networking sites that keep me up-to-date with my friends, and easily commandeer those sites from within the comforts and confines of my SXEmacs session.
That list is by no mean exhaustive. Oh, and I nearly forgot... SXEmacs edits text too. And it even helps you with that. In many, many ways. With things like syntax highlighting, context sensitive completion, keyboard macros, powerful search and replace, spell checking (on the fly if you wish), programming language aware indentation. The list just goes on and on. It would be a fair bet to say that whatever "feature" you like in other editors, there's a good chance SXEmacs has it too.
What SXEmacs has that XEmacs doesn't (yet)
Following is hopefully an up to date (at time of writing) list of the features that are in SXEmacs but are currently not (yet) in XEmacs 21.4. I say XEmacs 21.4 because SXEmacs was forked from the XEmacs 21.4 code base and not the 21.5 code base. With that said, however, most (all?) of what follows is unique to SXEmacs and isn't in XEmacs 21.5 either.
-
Win32
SXEmacs does not support the Win32 platform and it never will. Yes, we consider this a feature.
-
FFI
This is the SXEmacs Foreign Function Interface. It makes it possible to bring the functionality of almost any external library to elisp. Two useful examples can be found in ffi-curl.el and ffi-wand.el. The former allows SXEmacs to download files from the internet using any protocol that libcurl supports. And the latter allows SXEmacs to view any image format that libWand supports.
-
OpenSSL
SXEmacs can be compiled with OpenSSL that enables a range of cryptography and digest functionalities.
-
Autoconf 2.60
SXEmacs uses autoconf version 2.60 for its configuration scripts. XEmacs 21.5 is using 2.59, but XEmacs 21.4 is still using autoconf 2.13.
-
PostgreSQL
SXEmacs has better support for PostgreSQL 8 and the documentation has had some improvement here too. Also, support for PostgreSQL is compiled in by default if pg_config is present and usable.
-
sqlite
SXEmacs has fairly complete support for sqlite through FFI.
-
C++ builds.
SXEmacs does not support being compiled with a C++ compiler. GCC 3.4.4 or equivalent is required.
-
More mouse buttons.
In SXEmacs, you can bind up to 32 mouse buttons. The first 26 of which can be used as modifiers.
-
Uptime.
Every decent OS has an uptime util... SXEmacs is no exception. :-)
-
Bootstrapping PUI.
The SXEmacs PUI (Package User Interface) can be "bootstrapped" without the requirement of having any XEmacs packages pre-installed.
-
Enhanced Number Types.
XEmacs 21.5 users might know this as "bignum". SXEmacs has bignums and bigfloats and ratios like XEmacs 21.5, but it also goes way beyond the XEmacs implementation. Many, many, more number types and other mathematical goodies are supported in SXEmacs.
-
Raw strings.
SXEmacs has Python-style raw strings. It greatly reduces "backslashitis" when writing those hairy regexps. :-)
Normal regexp: "\\(?:^\\|[^\\]\\)\\(?:\\\\\\\\\\)*\\(\\\\[@A-Za-z]+\\)"
Raw string regexp: #r"\(?:^\|[^\]\)\(?:\)*\(\\[@A-Za-z]+\)"XEmacs 21.5 now has raw strings.
-
TTY font-locking.
SXEmacs has improved default font-locking in a TTY.
-
More image formats supported.
This was mentioned under FFI, but it is worth noting again. With FFI and libWand, SXEmacs can display any image format that is supported by Imagemagick's libwand.
Not only can SXEmacs view images, but it can edit and manipulate them as well. In fact SXEmacs is a very good image manipulation program. Take a look at what SXEmacs can do with images.
-
Embeddable kbd macros.
This one is for JWZ. See point 1.A of JWZ's XEmacs wish list
-
Multimedia -- Audio
SXEmacs has support for a wide variety of sound servers, backends, drivers, and formats. Audio outputs supported include: ALSA, aRts, ao, ESD, NAS, OSS, PulseAudio, and Jack. Media stream handlers supported include: FFmpeg, Mad, sndfile, SoX, libmagic, as well as the pre-existing (from XEmacs days) internal audio support.
Yes, SXEmacs can play mp3 and ogg. We can even do so asynchronously.
-
Network Server Sockets
Taking
open-network-stream
to the next logical step, SXEmacs can "listen" for, and act upon, incoming TCP/UDP connections. Server sockets in SXEmacs are set up viaopen-network-server-stream
. -
Cached Compiled Regular Expressions
Significant speed ups are possible through the application of exhaustive caching of compiled regular expressions.
-
GNU Autotools Build Chain
Not only does SXEmacs use autoconf 2.60 (and above), the entire build chain is now fully "autotooled". We've done away with all those Makefile.in.in files and manual dependency tracking of the sources. It's now all done with aclocal, automake, autoheader, autoconf.
-
FHS Compliant Install Hierarchy
SXEmacs now installs to a much more FHS compliant location.
-
Double Linked Lists
Unlike ordinary lists that only have hooks into the head of the list (think car, cdr), a doubly linked list has hooks into both the head and the tail of the list. This means you can operate on both ends of a doubly linked list. You can also traverse a dllist in both directions, tail-wards and head-wards. Ordinary lists only allow for tail-wards traversal.
-
Skip Lists
SXEmacs has a basic implementation of Pugh's skip lists. Their efficiency is overwhelming when compared to alists or plists. They also perform better on insertion and removal than large hash-tables (due to the resizing/rehashing which takes place). They can be created almost as fast as lisp lists and thus beat hash-tables there, too.
-
Bloom Filters
Bloom filters are a hash-table like data structure with the purpose of performing membership tests. Unlike hash-tables bloom filters do not need to be resized despite the fact that they can carry an arbitrarily large number of objects.
-
Recursive Directory Traversal
SXEmacs has a recursive implementation of
directory-files
calleddirectory-files-recur
. It is incredibly fast. Sometimes even faster than GNU find(1). -
Support for 256 colors in XTerm and compatible terminals
SXEmacs is now capable of properly using the
termcap
andterminfo
capabilities to support more than the ANSI standard 8 colors.
In addition, SXEmacs will gracefully approximate the colors on the face specifications to match the terminal, so you can share your graphics and text terminal color definitions and still have pretty syntax highlighting.
Why I Use SXEmacs
Here are a few random reasons why some folks use SXEmacs. If you want to add to this list, just drop us a line on the mailing list.
- I love the comfort of having the full power of my editor behind me while I'm IRC'ing, ICQ'ing, mail, and news reading. - Keyboard macros would have to be right up there in the list. Being able to define a quick keyboard macro to complete repetative tasks is sweet. - Bookmarks. I often find myself reading through a whole bunch of documents at the same time (HOWTOs, READMEs etc), I can save where I am in each doc and easily come back to the same spot in the future. - I just love the whole "swiss-army-knife-ed-ness" of it all. I mean, c'mon, if it can't be done in SXEmacs, is it worth doing? - SXEmacs' extensibility. Being able to make SXEmacs do things it can't do out of the box is its greatest benefit.
Where We Might Be Going
I really don't like making promises, so you'll just have to wait and see. :-) OK, OK, I'll throw you a bone. Here are a couple of hints…
- Multi-GUI support
- Parallelised lisp engine
- Embeddable video streams
- Buffers embedded in buffers
- Built-in lexical scoping at C level
Copyright © 2004 - 2020 Steve Youngs
Verbatim copying and distribution is permitted in any medium,
providing this notice is preserved.
Last modified: Wednesday, September 2, 2020 15:55:51 UTC -0700