Eli's Emacs Environment
Emacs Lisp Other
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


                        The EliEmacs Environment

This environment started as a small hack to make life easier for myself,
then it was used by some more people, so I continued working on it,
improving things until I got a good version.  When Emacs 21 came out, I
finally got to rewrite the whole thing in a more reasonable way, and
also make it work with XEmacs too, but support for Emacs 19 is gone.
Then came Emacs 22, and another major overhaul was done.  This time,
only v22 was supported -- easier to just keep the previous environment
as-is to be used with older versions.  the current version is now Emacs
24.5, meaning less things to do still.

The version that you use is displayed after Emacs finishes initializing.
The latest version can be found at


To use this environment, simply load the eliemacs.elc file in your
.emacs, for example, my .emacs file has:

  (load "~eli/EliEmacs/eliemacs")

On a Windows machine, you might use something like:

  (load "c:/EliEmacs/eliemacs")

All questions regarding my environment in specific or Emacs in general
should go to: Eli Barzilay <eli@barzilay.org>


The whole thing works on any platform, as long as you have GNU Emacs
version 24.5.  Here is what you need to do:

1. Open EliEmacs.tgz in an appropriate place (using tar+gunzip, or

2. Edit your ".emacs" file so it loads "eliemacs" as above.  On a
   Windows machine, the file can also be called "_emacs", and it should
   be placed in a home directory -- which is the value of the
   environment variable "HOME".

Note: the following is mostly outdated!!


The .emacs file contains a simple load command for the new environment
file which loads up everything in EliEmacs.  You can set up things
either before or after doing this.  There are some variables that can
customize the way EliEmacs sets things up (so they should be set before
loading it).  See the QuickRef for more variables.


There are many files now, all in EliEmacs.  You don't need everything
but it's useful to see what I have there -- read "eliemacs.el" to learn
about them.  The following is a list of things that you can delete if
you copy it to your machine (either NTEmacs or Emacs on Linux should
work fine) according to your space limitations, least to most important

1. The "extras" directory contains extra packages -- you can safely
   remove all source files (.el) and the compiled code if you don't use
   that package.  It contains some subdirectories containing big
   packages that can be removed if unused too.

2. The "include" directory holds files that are compiled into the single
   "eliemacs.elc" file.

2. ".el" files in the "include" directories are compiled into
   "eliemacs.elc" so it is safe to throw them away.  Even the sources in
   "EliEmacs" itself can be removed.

3. If you're really short in space, you could get along with
   "eliemacs.elc" and nothing else.


This is a very brief list.  I need to get more info here.  (Many of
these features come from Emacs, in many cases they're things that I had
before they were included.)

1. QuickRef access with `C-h e'.
2. A single elc file that you can easily move between accounts and
   machines, some more stuff is external but not strictly needed.
3. Lots of sensible key and mouse bindings.  Heavy usage of function
   keys, and otherwise keep most standard keys the same.
4. Works with FSF Emacs v24.5.
5. Easy customization variables for colors etc (see QuickRef).
6. Some functions to make life simpler for writing ELisp code (e.g,
7. An easy function to sort a whole buffer.
8. Backspace erases indentation when appropriate.
9. A convenient function to save and kill the current buffer (C-f10).
10. Easy function to toggle line truncating with horizontal scrolling
    and word-wrapping (with visual movement) (C-S-f12).
11. Functions for negative transposes (C-S-t, M-S-t, M-C-S-t).
12. Convenient buffer and window navigation (S-tab and C-tab).
13. A sensible join-line function (M-j).
14. An intelligent fill-paragraph/region or toggle refill-mode (M-q).
15. Ability to define a buffer-local key rather than mode-local (C-c b)
    with a fuction to undo these bindings (C-c B).
16. A function that compares the current buffer with the recent one
17. Smart insertion of paired characters - parens, brackets, braces,
    angles, quotes, stars etc.  (M-\(, M-\[, M-\{, M-<, M-\", M-* etc).
18. Convenient and smart line-comment toggling (C-;).
19. A local variable that can be set to hide the local-variable section
20. Counter keys that insert a counter value and increase it (M-esc *,
    M-esc =, M-esc +), good for keyboard macros.
21. A key that allows to send any characted directly to a running
    process (M-q, in comint).
22. Some sensible defaults for NTEmacs.
23. Initialization of window properties, which makes color, font etc
    settings possible from ELisp rather than XDefaults, registry or
24. A lot of sensible default variable settings that took years to
25. Settings to make the minibuffer resize when needed.
26. A facility to make all your backup files go into a single directoy,
    plus easy settings for no backups, or super-safety mode.
27. Using a very customized `bs' for convenient buffer switching (C-f1).
28. Make history for minibuffer entries unique so you can save more.
29. Make shell-command complete filenames the smart way.
30. Beter minibuffer history searches (C-up/down, M-up/down).
31. Some electric chars when reading filenames ("/", "~", "\\", ":").
32. Improved mode-line display (truncate some info).
33. Solution for C-h problems in remote ttys - C-h is normal help, but
    when hit twice without ever using backspace it'll rebind itself to
34. Convenient keys for saving marks (C-M-kp...), when used more than
    once save window/frame conf as well, and jumping to a mark with
35. Convenient macro key definition (M-z, M-S-z for local), and saving
    (C-M-f12) in addition to standard editing (C-x C-k).  Can even hack
    mouse clicks to apply a macro key.
36. Improved scrolling commands that leave the cursor at the same place,
    and make it possible to scroll back to exactly the last position.
37. A convenient fuction to create color faces-on-demand, allow `M-g o'
    to read and use these on-demand specs.
38. Functions to set the color of a region or all matches of a regular
    expression (for programs, not interactive).
39. Use a sophisticated paren-highlight package (mic-paren) with a
    simple paren-hightlight-mode toggle (C-\().
40. Allow any colors in `M-g M-f' and `M-g M-b'.
41. Attempt to set sensible default colors for font-lock.
42. Ability to interactively add regexps to highlight with font-lock and
    specify a color (C-S-a and C-S-r to remove).
43. A smart tab key command for mail/news messages that moves between
    header fields and the message body.
44. Enable abbrev mode for interactive expansion of mail aliases.
45. Dynamic word completion that tries to complete based on the current
    buffer contents (M-/).
46. Good completion configuration, also enabled in shell buffers.
47. Enable automatic de/compression for compressed files.
48. Make buffer names unique using their directory name.
49. Make auto-fill-mode use only one line's context, and make refilling
    smarter (respect quoting, numbered items, bullet-like things etc).
50. Various fixes for things I haven't had the time to nag the Emacs
    maintainers enough.
51. Automatically revert a buffer that has been modified outside, but
    allow undoing to the previous version (not in `super-safe' mode).
52. Hack the smart completion mode so it can do the same trick for paths
    (expand `/u/l/b/gp' to `/usr/local/bin/gphoto').
53. Save and restore the active `desktop' - buffers that are open, and
    various input histories.  If escape is used at the logo screen (or
    -fast was given on the command line), don't load previous buffers.
54. A lot of nice stuff in the extras directory all optional.  These
    include: my calculator (standard part of v.21), mode-based
    compilation (C-f9), maze draing (C-x f2), big-font for banners, vm
    (great emailer).
55. Finally, a beautiful logo (that you cannot get rid of, unless you
    look at the sources).
56. A responsive author that will be happy to make more things