New PSL Changes (8 November 1982) ---- PSL Changes ------------------------------------------------------------- * The major change in PSL is that CATCH/THROW has been reimplemented to conform to the Common Lisp definition (see Section 7.10 of the Common Lisp manual). In particular, CATCH has been changed to a special form so that its second argument is evaluated only once, instead of twice. THIS IS AN INCOMPATIBLE CHANGE: if you use CATCH, you must change your programs. For example, if you wrote: (catch 'foo (list 'frobnicate x y z)) you should change it to: (catch 'foo (frobnicate x y z)) One aspect of this change is that an "unhandled" throw is now reported as an error in the context of the throw, rather than (as before) aborting to top-level and restarting the job. Also implemented are UNWIND-PROTECT, CATCH-ALL, and UNWIND-ALL, as described in the Common Lisp manual, with the exception that the catch-function in CATCH-ALL and UNWIND-ALL should expect exactly 2 arguments. Note that in Common Lisp, the proper way to catch any throw is to use CATCH-ALL, not CATCH with a tag of NIL. * A related change is that the RESET function is now implemented by THROWing 'RESET, which is caught at the top-level. Thus, UNWIND-PROTECTs cannot be circumvented by RESET. ---- NMODE Changes ----------------------------------------------------------- New Features: * C-X C-B now enters a DIRED-like "Buffer Browser" that allows you to select a buffer, delete buffers, etc. * DIRED and the Buffer Browser can now operate in a split-screen mode, where the upper window is used for displaying the buffer/file list and the bottom window is used to examine a particular buffer/file. This mode is enabled by setting the variable BROWSER-SPLIT-SCREEN to T. If this variable is NIL, then DIRED and the Buffer Browser will automatically start up in one window mode. * M-X Apropos has been implemented. It will show you all commands whose corresponding function names contain a given string. Thus, if you enter "window", you will see all commands whose names include the string "window", such as "ONE-WINDOW-COMMAND". * M-X Auto Fill Mode has been implemented by Jeff Soreff, along with C-X . (Set Fill Prefix) and C-X F (Set Fill Column). If you want NMODE to start up in Auto Fill mode, put the following in your NMODE.INIT file: (activate-minor-mode auto-fill-mode) * NMODE now attempts to display a message whenever PSL is garbage-collecting. This feature is not 100% reliable: sometimes a garbage collect will happen and no message will be displayed. Minor Improvements: * C-N now extends the buffer (like EMACS) if typed without a command argument while on the last line of the buffer. * Lisp break handling has been made more robust. In particular, NMODE now ensures that IN* and OUT* are set to reasonable values. * The OUTPUT buffer now starts out with the "modified" attribute ("*") off. * The implementation of command prefix characters (i.e., C-X, M-X, C-], and Escape) and command arguments (i.e., C-U, etc.) has changed. The most visible changes are that C-U, etc. echo differently, and that Escape can now be followed by bit-prefix characters. (In other words, NMODE will recognize "Escape ^\ E" as Esc-M-E, rather than "Esc-C-\ E"; the 9836 terminal emulator has been modified to generate such escape sequences under some circumstances.) NMODE customizers may be interested to know that all of these previously-magic characters can now be redefined (on a per-mode basis, even), just like any other character. * If you are at or near the end of the buffer, NMODE will put the current line closer to the bottom of the screen when it adjusts the window. * C-X C-F (Find File) and the Dired 'E' command will no longer "find" an incorrect version of the specified file, should one happen to already be in a buffer. * The 'C' (continue) command to the PSL break loop now works again. * The "NMODE" indicator on the current window's mode line no longer disappears when the user is entering string input. * The command C-X 4 F (Find File in Other Window) now sets the buffer's file name properly.