18-Nov-82 11:14:38-MST,2694;000000000001 Mail-From: CARR created at 18-Nov-82 11:11:12 Date: 18 Nov 1982 1111-MST From: Harold Carr <CARR at UTAH-20> Subject: psl mode for emacs To: galway at UTAH-20 cc: carter at UTAH-20, kessler at UTAH-20, psi.krOHNFELDT at UTAH-20, uscg at UTAH-20 On our version of Gosling's emacs we use a modified electric-lisp-mode along with some other functions that Jed wrote. Here are the main things that I like: paren-pause Gets bound to ')'. It flashes corresponding '(' either by temporarily moving the cursor up to the '(' and pausing, then returning, or if the matching '(' is off the current window then show the matching line in the mini-buffer. It also fixes the indentation of the ')' if it is on a line by itself to match the column of the corresponding '('. Complains if there is no match. nl-indent Gets bound to linefeed. Inserts new line and properly indents the next line. A simple "proper indent" is that if there is an open unmatched '(' then the next line should be indented 4 from the unmatched '('. re-indent-line Unbound function to repair indentation of current line. indent-lisp-function Unbound function to fix up the indentation of entire lisp function from (dX to ). electric-lisp-semi This function is bound to ';'. It takes you to the nth column when pressed so you can start a comment. We unbind this one. I like to deal personally with every ';' (or '%'). forward-sexpr Bound to ESC ')'. backward-sexpr Bound to ESC '('. Its nice to have an abbrev table for lisp. lisp-comment-mode Bound to ESC 'c'. Asks for a function name. After carriage return it does this: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; <function-name> ; ; <leaves-cursor-here> ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Now as you type its in "text mode", when it gets near the end of the line it automatically starts a new line, inserts ';' and a space. Any time you press newline it does the same. When you enter carriage-return the cursor is moved to the line below the box and you're back in lisp-mode. You can move your cursor back into a previously built box and enter ^U, ESC 'c'. This will kill-to-end of line and put you back into the "text-mode" described above. There are some others, but these are the useful ones. If you would like the mlisp files for these functions, let me know. Harold. -------