eliemacs icon indicating copy to clipboard operation
eliemacs copied to clipboard

Eli's Emacs Environment

                    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 well beyond Emacs 24, meaning less things to do still.

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

https://github.com/elibarzilay/eliemacs

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 [email protected].

Installing:

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 winzip).

  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!!

Customizing:

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.

Files:

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 (roughly):

  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.

  3. ".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.

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

Features:

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, define-keys).
  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 (M-S-c).
  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 (hide-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 whatever.
  24. A lot of sensible default variable settings that took years to collect.
  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 backspace.
  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 (C-kp...).
  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 customizable.