Link to our gitweb
[website] / index.html
1 <?xml version="1.0" encoding="utf-8"?>    <!-- -*- html -*- -->
2 <!--#set var="css" value="sxemacs.css" -->
3 <!--#set var="title" value="SXEmacs Website" -->
4 <!--#set var="banner" value="Redefining Emacs" -->
5 <!--#set var="copyright" value="2004 - 2012 Steve Youngs" -->
6
7 <!--#include virtual="/templates/header.template" -->
8 <!--#include virtual="/templates/menu.template" -->
9 <!--#include virtual="/templates/support.template" -->
10     <h2>What is SXEmacs</h2>
11     <p>
12       Hmm, that's actually not an easy question to answer.  At
13       least, not easy to answer completely.  At the most basic of
14       levels, SXEmacs is a text editor.  If you've ever used
15       <a href="http://www.gnu.org/software/emacs/">GNU/Emacs</a> or
16       <a href="http://www.xemacs.org/">XEmacs</a> you've probably
17       seen the description that goes something like...
18     </p>
19     <i>
20       ...is a highly customisable and extensible,
21       self-documenting, real-time display editor and IDE.
22     </i>
23     <p>
24       Ditto for SXEmacs.  Yep, SXEmacs is JAFE (Just Another Fine
25       Editor).  Though, if that's <u>all</u> you thought it was,
26       you'd be missing out.  There is very little that SXEmacs can't
27       do, or at least, be made to do.  You can tailor it to your
28       wildest dreams and imagination.  This is where the
29       "customisable and extensible" part of the description comes
30       in.
31     </p>
32
33     <h2>It's more than just an editor</h2>
34     If you looked at any of the screenshots you would have seen
35     that even though SXEmacs is a text editor, it can be oh so
36     much more.
37     <ul>
38       <li>
39         <b>SXEmacs is my Window Manager</b>.  Yes, that's right, with the
40         XWEM and XLIB packages installed, SXEmacs becomes a very
41         powerful, full featured, highly customisable Window
42         Manager for X11.  Most of the screenshots here were taken
43         using it.
44       </li>
45       <li>
46         <b>SXEmacs is my login shell</b>.  You can add
47         /usr/local/bin/sxemacs to /etc/shells and change your
48         login shell to sxemacs.  It <u>does</u> work.  Although we
49         wouldn't recommend trying to run an X session from it. :-)
50       </li>
51       <li>
52         <b>SXEmacs is my image viewer</b>.  SXEmacs supports a number of
53         image formats right out of the box (GIF, XPM, PNG, JPEG,
54         TIFF, X-Face).  If you compile SXEmacs with FFI support
55         and have ImageMagic's libWand available you have a SXEmacs
56         that supports all image formats that libWand does.
57       </li>
58       <li>
59         <b>SXEmacs is my mp3 player</b>.  I used to use mpg123.el
60         for this, but now I use XWEM's xwem-mpd.el.  It hooks into
61         mpd (an mp3 daemon).  There are other ways to hear the
62         muzak like emms.
63       </li>
64       <li>
65         <b>SXEmacs balances my cheque book</b>.  With an elisp
66         package called eMoney (currently only available via Steve
67         Youngs' tla repo's, but one day will be an XEmacs package)
68         SXEmacs turns into a reasonable home finance cash book
69         program.
70       </li>
71       <li>
72         <b>SXEmacs can do the math</b>.  With Enhanced Number
73         Types, there is very little that SXEmacs can't do
74         mathematically. 
75       </li>
76       <li>
77         <b>SXEmacs lets me communicate with my friends</b>.
78         SXEmacs can be used as a MUA (Mail User Agent), a
79         newsreader, an IRC client, even an ICQ client.  So you can
80         keep in touch without leaving the comfort of your
81         favourite editor.
82       </li>
83       <li>
84         <b>SXEmacs helps me with my databases</b>.  With support
85         for PostgreSQL compiled in you can manipulate your PgSQL
86         databases.  SXEmacs also has more or less complete support for
87         sqlite, and there is also limited support for BerkeleyDB
88         and GNU/dbm.
89       </li>
90       <li>
91         <b>SXEmacs makes VC comfortable</b>.  VC is short for
92         Version Control and SXEmacs can make dealing with it a lot
93         less painful.  There are SXEmacs VC frontends available
94         for CVS, and GNU/Arch (tla).  There are also elisp
95         libraries available that integrate with other VCs such as
96         SVN, RCS, and SCCS.
97       </li>
98       <li>
99         <b>SXEmacs helps with my security</b>.  SXEmacs has
100         support for OpenSSL and allows encryption, decryption, and
101         digest functions.
102       </li>
103       <li>
104         <b>SXEmacs helps me with my social life</b>. With such
105         powerful elisp libraries as lj.el, twitter.el, facebook.el,
106         and emacs-flickr.el, I can easily interact with social
107         networking sites that keep me up-to-date with my friends, and
108         easily commandeer those sites from within the comforts and
109         confines of my SXEmacs session.
110       </li>
111     </ul>
112     <p>
113       That list is by no mean exhaustive.  Oh, and I nearly
114       forgot... SXEmacs edits text too.  And it even helps you
115       with that.  In many, many ways.  With things like syntax
116       highlighting, context sensitive completion, keyboard macros,
117       powerful search and replace, spell checking (on the fly if
118       you wish), programming language aware indentation.  The list
119       just goes on and on.  It would be a fair bet to say that
120       whatever "feature" you like in other editors, there's a good
121       chance SXEmacs has it too.
122     </p>
123
124     <h2>What SXEmacs has that XEmacs doesn't (yet)</h2>
125     <p>
126       Following is hopefully an up to date (at time of writing) list
127       of the features that are in SXEmacs but are currently not
128       (yet) in XEmacs 21.4.  I say XEmacs 21.4 because SXEmacs was
129       forked from the XEmacs 21.4 code base and not the 21.5 code
130       base.  With that said, however, most (all?) of what follows is
131       unique to SXEmacs and isn't in XEmacs 21.5 either.
132     </p>
133
134     <ul>
135       <li>
136         <b>Win32</b>
137         <p>
138           SXEmacs does not support the Win32 platform and it never
139           will.  Yes, we consider this a feature.
140         </p>
141       </li>
142       <li>
143         <b>FFI</b>
144         <p>
145           This is the SXEmacs Foreign Function Interface.  It
146           makes it possible to bring the functionality of almost
147           any external library to elisp.  Two useful examples can
148           be found in ffi-curl.el and ffi-wand.el.  The former
149           allows SXEmacs to download files from the internet using
150           any protocol that libcurl supports.  And the latter
151           allows SXEmacs to view any image format that libWand
152           supports.
153         </p>
154       </li>
155       <li>
156         <b>OpenSSL</b>
157         <p>
158           SXEmacs can be compiled with OpenSSL that enables a
159           range of cryptography and digest functionalities.
160         </p>
161       </li>
162       <li>
163         <b>Autoconf 2.60</b>
164         <p>
165           SXEmacs uses autoconf version 2.60 for its configuration
166           scripts.  XEmacs 21.5 is using 2.59, but XEmacs 21.4 is
167           still using autoconf 2.13.
168         </p>
169       </li>
170       <li>
171         <b>PostgreSQL</b>
172         <p>
173           SXEmacs has better support for PostgreSQL 8 and the
174           documentation has had some improvement here too.  Also,
175           support for PostgreSQL is compiled in by default if
176           pg_config is present and usable.
177         </p>
178       </li>
179       <li>
180         <b>sqlite</b>
181         <p>
182           SXEmacs has fairly complete support for sqlite through FFI.
183         </p>
184       </li>
185       <li>
186         <b>C++ builds</b>.
187         <p>
188           SXEmacs does not support being compiled with a C++
189           compiler.  GCC 3.4.4 or equivalent is required.
190         </p>
191       </li>
192       <li>
193         <b>More mouse buttons</b>.
194         <p>
195           In SXEmacs, you can bind up to 32 mouse buttons.  The
196           first 26 of which can be used as modifiers.
197         </p>
198       </li>
199       <li>
200         <b>Uptime</b>.
201         <p>
202           Every decent OS has an uptime util... SXEmacs is no
203           exception. :-)
204         </p>
205       </li>
206       <li>
207         <b>Bootstrapping PUI</b>.
208         <p>
209           The SXEmacs PUI (Package User Interface) can be
210           "bootstrapped" without the requirement of having
211           <u>any</u> XEmacs packages pre-installed.
212         </p>
213       </li>
214       <li>
215         <b>Enhanced Number Types</b>.
216         <p>
217           XEmacs 21.5 users might know this as "bignum".  SXEmacs
218           has bignums and bigfloats and ratios like XEmacs 21.5,
219           but it also goes way beyond the XEmacs implementation.
220           Many, many, more number types and other mathematical
221           goodies are supported in SXEmacs.
222         </p>
223       </li>
224       <li>
225         <b>Raw strings</b>.
226         <p>
227           SXEmacs has Python-style raw strings.  It greatly
228           reduces "backslashitis" when writing those hairy
229           regexps. :-)
230         </p>
231         <p>
232           <code>
233             &nbsp;&nbsp;&nbsp;&nbsp;Normal regexp:
234             "\\(?:^\\|[^\\]\\)\\(?:\\\\\\\\\\)*\\(\\\\[@A-Za-z]+\\)"<br />
235             Raw string regexp: #r"\(?:^\|[^\]\)\(?:\)*\(\\[@A-Za-z]+\)"
236           </code>
237         </p>
238         <p>
239           XEmacs 21.5 now has raw strings.
240         </p>
241       </li>
242       <li>
243         <b>TTY font-locking</b>.
244         <p>
245           SXEmacs has improved default font-locking in a TTY.
246         </p>
247       </li>
248       <li>
249         <b>More image formats supported</b>.
250         <p>
251           This was mentioned under FFI, but it is worth noting
252           again.  With FFI and libWand, SXEmacs can display any
253           image format that is supported by Imagemagick's
254           libwand. 
255         </p>
256         <p>
257           Not only can SXEmacs view images, but it can edit and
258           manipulate them as well.  In fact SXEmacs is a very good
259           image manipulation program.  Take a look at
260           <a href="http://lgarc.narod.ru/sxemacsen/wand-mode-en.xhtml">
261             what SXEmacs can do</a> with images.
262         </p>
263       </li>
264       <li>
265         <b>Embeddable kbd macros</b>.
266         <p>
267           This one is for JWZ.  See point 1.A of
268           <a href="http://www.jwz.org/doc/xemacs-wishlist.html">JWZ's XEmacs wish list</a>
269         </p>
270       </li>
271       <li>
272         <b>Multimedia -- Audio</b>
273         <p>
274           SXEmacs has support for a wide variety of sound servers,
275           backends, drivers, and formats.  Audio outputs supported
276           include: ALSA, aRts, ao, ESD, NAS, OSS, PulseAudio, and
277           Jack.  Media stream handlers supported include: FFmpeg,
278           Mad, sndfile, SoX, libmagic, as well as the
279           pre-existing (from XEmacs days) internal audio support.
280         </p>
281         <p>
282           Yes, SXEmacs can play mp3 and ogg.  We can even do so
283           <u>asynchronously</u>. 
284         </p>
285       </li>
286       <li>
287         <b>Network Server Sockets</b>
288         <p>
289           Taking <code>open-network-stream</code> to the next
290           logical step, SXEmacs can "listen" for, and act upon,
291           incoming TCP/UDP connections.  Server sockets in SXEmacs
292           are set up via <code>open-network-server-stream</code>.
293         </p>
294       </li>
295       <li>
296         <b>Cached Compiled Regular Expressions</b>
297         <p>
298           Significant speed ups are possible through the
299           application of exhaustive caching of compiled regular
300           expressions. 
301         </p>
302       </li>
303       <li>
304         <b>GNU Autotools Build Chain</b>
305         <p>
306           Not only does SXEmacs use autoconf 2.60 (and above), the
307           entire build chain is now fully "autotooled".  We've done
308           away with all those Makefile.in.in files and manual
309           dependency tracking of the sources.  It's now all done
310           with aclocal, automake, autoheader, autoconf.
311         </p>
312       </li>
313       <li>
314         <b>FHS Compliant Install Hierarchy</b>
315         <p>
316           SXEmacs now installs to a much more 
317           <a href="http://www.pathname.com/fhs/">FHS</a> compliant
318           location.
319         </p>
320       </li>
321       <li>
322         <b>Double Linked Lists</b>
323         <p>
324           Unlike ordinary lists that only have hooks into the head
325           of the list (think car, cdr), a doubly linked list has
326           hooks into both the head and the tail of the list.  This
327           means you can operate on both ends of a doubly linked
328           list.  You can also traverse a dllist in both
329           directions, tail-wards and head-wards.  Ordinary lists
330           only allow for tail-wards traversal.
331         </p>
332       </li>
333       <li>
334         <b>Skip Lists</b>
335         <p>
336           SXEmacs has a basic implementation of Pugh's skip
337           lists.  Their efficiency is overwhelming when compared
338           to alists or plists.  They also perform better on
339           insertion and removal than large hash-tables (due to
340           the resizing/rehashing which takes place).  They can
341           be created almost as fast as lisp lists and thus beat
342           hash-tables there, too.
343         </p>
344       </li>
345       <li>
346         <b>Bloom Filters</b>
347         <p>
348           Bloom filters are a hash-table like data structure with
349           the purpose of performing membership tests.  Unlike
350           hash-tables bloom filters do not need to be resized
351           despite the fact that they can carry an arbitrarily
352           large number of objects.
353         </p>
354       </li>
355       <li>
356         <b>Recursive Directory Traversal</b>
357         <p>
358           SXEmacs has a recursive implementation of
359           <code>directory-files</code> called
360           <code>directory-files-recur</code>.  It is incredibly
361           fast.  Sometimes even faster than GNU find(1).
362         </p>
363       </li>
364       <li>
365         <b>Support for 256 colors in XTerm and compatible terminals</b>
366         <p>
367
368           SXEmacs is now capable of properly using the
369           <code>termcap</code> and <code>terminfo</code>
370           capabilities to support more than the ANSI standard 8
371           colors.<br />
372
373           In addition, SXEmacs will gracefully approximate the
374           colors on the face specifications to match the terminal,
375           so you can share your graphics and text terminal color
376           definitions and still have pretty syntax highlighting.
377         </p>
378       </li>
379     </ul>
380
381     <h2>Why I Use SXEmacs</h2>
382     Here are a few random reasons why some folks use SXEmacs.  If
383     you want to add to this list, just drop us a line on the
384     mailing list.
385     <pre>
386   - I love the comfort of having the full power of my editor behind me
387     while I'm IRC'ing, ICQ'ing, mail, and news reading.
388
389   - Keyboard macros would have to be right up there in the list.
390     Being able to define a quick keyboard macro to complete repetative
391     tasks is sweet.
392
393   - Bookmarks.  I often find myself reading through a whole bunch of
394     documents at the same time (HOWTOs, READMEs etc), I can save where
395     I am in each doc and easily come back to the same spot in the
396     future. 
397
398   - I just love the whole "swiss-army-knife-ed-ness" of it all.  I
399     mean, c'mon, if it can't be done in SXEmacs, is it worth doing?
400
401   - SXEmacs' extensibility.  Being able to make SXEmacs do things it
402     can't do out of the box is its greatest benefit.
403     </pre>
404     <h2>Where We Might Be Going</h2>
405     I really don't like making promises, so you'll just have to
406     wait and see. :-)  OK, OK, I'll throw you a bone. Here are a
407     couple of hints&hellip;
408     <ul>
409       <li>Multi-GUI support</li>
410       <li>Parallelised lisp engine</li>
411       <li>Embeddable video streams</li>
412       <li>Buffers embedded in buffers</li>
413       <li>Built-in lexical scoping at C level</li>
414     </ul>
415 <!--#include virtual="/templates/copyright.template" -->
416 <!--#include virtual="/templates/stats.template" -->
417 <!--#include virtual="/templates/footer.template" -->