Emacs Hacking
Brief summary of stuff in my .emacs file:
- Windows-like editing: Home, End, PgUp, PgDn, etc., shift-(cursor-movement)
to select text, Ctrl-Ins/Shift-Ins/Shift-Del for copy/paste/cut
- Borland-like editing: C-z, C-w to scroll window w/o moving cursor
- Indent/outdent: select text, then Alt-left or Alt-right
- Almost usable buffer switching: Ctrl-Tab
- Almost completely free cursor movement: move up/down regardless
of line lengths, move right beyond EOL, etc.
- Quickly move frames (aka windows) to common positions like
left/right half of screen (ctrl-alt-left/right),
or full screen, by keystrokes (ctrl-alt-up).
- Ctrl-arrow window scrolling, ctrl-shift-arrow for faster scrolling
- Approximation to MDI-like maximize/restore (f5)
- Much simpler auto-indent: just go to first column of previous
line on Enter. (I like to format code manually.)
- Nice system for moving/copying lines of text from one buffer
to another: Alt-m and Alt-c.
- Alt-[ and Alt-] to jump to matching delimiter (e.g. parentheses).
Recently added ability to balance words like "#if" and "#endif".
- Purely lexical syntax highlighting for C/C++/Java.
- Command (Alt-x highlight-tabs-on/off) to make tabs visible,
though it sometimes doesn't work ...
- Neat command (Alt-a for apply) to pass a selected region of
text through an arbitrary Unix filter command, replacing
the selected text with the command's output. (Great for
when you know sed's regexp syntax but not emacs'.)
- All key bindings arranged in a nice menu format. Since emacs
doesn't have a usable menu (can't use the keyboard to
access it), it just looks nice in the code; and if emacs ever
gets a menu (i.e. if I give it one) it's all ready to work
with it.
- Partial solution to endless garbage-collection pauses:
set gc-cons-threshold much higher.
Major features I still want:
- Reduce parenthesis-matching delay
- Usable (by keyboard) menu
- Standard way (the menu would do it) of providing little
cheat-sheet menu bars like e.g. pico has at the bottom,
for modes like gnus where at first you're totally lost.
Organizationally, I've split my emacs configuration into several files:
- .emacs:
Reads the other two files,
then has personal settings.
Optionally (if it exists) reads .emacs-site.el,
with machine-specific settings.
- elisp/scott.emacs.el:
Big file with all the function definitions and default
keybindings, intended to give to others when they ask how
I do some cool stuff. :)
- elisp/cust.settings.el:
File for storing "M-x customize" settings. I like that stuff
to be in a separate file because emacs rewrites whichever file
has those settings every time you save them, and that scares me.