28-Sep-82 17:50:20-PDT,3097;000000000000 Date: 28 Sep 1982 1750-PDT From: Alan Snyder Subject: new PSL!!!! To: PSL-News: ;, PSL-Users: ; cc: AS Important Change to PSL! We have installed a new version of PSL on HULK. It contains a number of significant changes which are described here. In addition, you must change your LOGIN.CMD file to TAKE PSL:LOGICAL-NAMES.CMD instead of LOGICAL-NAMES.CMD. The directory will disappear soon, so make this change right away! [These changes, except for NMODE, will appear on THOR and HEWEY shortly. There are no immediate plans to move NMODE to the Vax.] Summary of changes: * If you run "PSL", you will now get a PSL that contains the NMODE editor, which is a replacement for EMODE. PSL will start up in the editor, instead of the PSL listen loop. You can easily get back to the PSL listen loop from NMODE by typing C-] L. NMODE is a decent subset of EMACS, so if you are familiar with EMACS you should be able to use NMODE without too much difficulty. If you are familiar with EMODE, you should read the file PSL:NMODE-GUIDE.TXT, which explains the differences between NMODE and EMODE. A printed copy of this memo, including the NMODE command chart, is available in the documentation area next to Helen Asakawa's office. * The "PSL" program (what you get when you say "PSL" to EXEC) no longer contains the PSL compiler. Instead, there is a separate program for compiling (Lisp) files. To compile a file "FOO.SL", give the command "PSLCOMP FOO" to EXEC. PSLCOMP will produce a binary file "FOO.B" that can then be LOADed or FASLINed. To run the compiler interactively, just say "PSLCOMP" to EXEC. * The PSL directories that contain the source and binaries for all PSL modules have been moved to a private structure called SS: (the directories are now SS:). The old PSL directories (PS:) will disappear soon. In addition, the new directories have been reorganized somewhat to better reflect the structure of the implementation. The file PSL:-THIS-.DIRECTORY contains a brief description of the new structure. If you have used logical names to refer to PSL directories, then this change should not cause too many problems. * A number of small bug fixes and improvements have been made. The most notable improvements are (1) a more readable backtrace, (2) a better prettyprinter, and (3) the definition of a "complete" set of I/O functions taking an explicit channel argument (these functions all have names like ChannelTerpri, where Terpri is an example of an I/O function that uses the default I/O channels). The file PSL:BUG-FIX.LOG contains an exhaustive listing of the recent changes. The documentation has been updated to reflect these changes. The following new or revised documents are available in the documentation area next to Helen Asakawa's office: Notes on PSL at HP DEC-20 PSL New Users' Guide NMODE for EMODE Users How to customize NMODE We have made "documentation packets" containing copies of these documents. Users are encouraged to pick up a copy! ------- 11-Oct-82 15:55:41-PDT,5771;000000000000 Date: 11 Oct 1982 1555-PDT From: Alan Snyder Subject: new PSL installed To: PSL-News: ;, PSL-Users: ; cc: AS PSL NEWS - 11 October 1982 A new PSL has been installed on Hulk and Hewey. There are a number of improvements, plus some INCOMPATIBLE changes (see below). A most noticable change (on Hulk) is that PSL no longer automatically starts up in the NMODE editor. However, if you want PSL to start up in the editor, you can still make this happen using another new feature, INIT files (see below). Otherwise, you can explicitly enter NMODE by invoking the function NMODE, with no arguments. In addtion, NMODE now supports the extended VT52 emulator on the 9836 (get the latest version from Tracy). (No, NMODE is not yet installed on Hewey.) ------------------------------------------------------------------------------- INCOMPATIBLE CHANGES TO PSL: ------------------------------------------------------------------------------- This latest version of PSL has 3 changes which may require some application programs to be changed: 1. SAVESYSTEM SaveSystem now takes 3 arguments. The first argument is the banner, the second is the file to be written, and the third is a list of forms to evaluated when the new core image is started. For example: (SaveSystem "PSL 3.1" "PSL.EXE" '((InitializeInterrupts))) 2. DUMPLISP Dumplisp now takes 1 argument, the file to be written. For example: (Dumplisp "PSL.EXE") 3. DSKIN Dskin has been changed from a FEXPR to a single-argument EXPR. This should only affect calls to DSKIN with multiple arguments. They will have to be changed to several calls, each with one argument. 4. BR and UNBR The functions BR and UNBR are no longer part of PSL. These functions provided a facility for breaking on entry and exit to specific functions. However, they didn't work very well and no one has figured out how to make them work, so they have been removed. Send complaints to PSL. ------------------------------------------------------------------------------- MAJOR IMPROVEMENTS TO PSL: ------------------------------------------------------------------------------- The following features have been added to PSL: 1. Init files When PSL, RLISP, or PSLCOMP (note: not BARE-PSL) is executed, if a file PSL.INIT, RLISP.INIT, or PSLCOMP.INIT, respectively, is in your home (login) directory, it will be read and evaluated. This allows you to automatically customize your Lisp environment. (The init files are .pslrc, .rlisprc, and .pslcomprc on the Vax.) If you want PSL to come up in NMODE, include the statement (setf nmode-auto-start T) in your PSL.INIT file. 2. Prinlevel and Prinlength The variables PRINLEVEL and PRINLENGTH now exist, as described in the Common Lisp Reference Manual. These variables allow you to limit the depth of printing of nested structures and the number of elements of structured objects printed. These variables affect Prin1 and Prin2 (Princ) and those functions that use them (Printf, Print). They do not currently affect Prettyprint, although this may be done in the future. The Printx function now properly handles circular vectors. ------------------------------------------------------------------------------- CHANGES TO NMODE: ------------------------------------------------------------------------------- * NMODE also supports init files (this isn't new, but wasn't stressed in previous documentation). When NMODE starts up, it will read and execute the file NMODE.INIT in the user's home (login) directory. This file should contain PSL (Lisp) forms. * NMODE now reads a default init file if the user has no personal init file. The name of this default init file is "PSL:NMODE.INIT". If you make your own NMODE.INIT file, you should consider including in it the statement "(nmode-read-and-evaluate-file nmode-default-init-file-name)", which will execute the default init file. * NMODE now supports the 9836 VT52 emulator (which has recently been extended to accept commands to change the display enhancement). The default NMODE init file will set up the NMODE VT52 driver if the system terminal type is VT52. * NMODE no longer always starts up in the editor after it is RESET, ABORTed, or ^C'ed and STARTed. It will only restart in the editor if it was in the editor beforehand. * NMODE will now read and write files containing stray CRs. * M-X command completion is more like EMACS. * Typing an undefined command now tells you what command you typed. * New commands: C-X C-L (Lowercase Region) C-X C-U (Uppercase Region) C-X E (Exchange Windows) C-X ^ (Grow Window) M-' (Upcase Digit) M-C (Uppercase Initial) M-L (Lowercase Word) M-U (Uppercase Word) M-X Append to File M-X DIRED M-X Delete File M-X Delete and Expunge File M-X Edit Directory M-X Find File M-X Insert Buffer M-X Insert File M-X Kill Buffer M-X Kill File M-X List Buffers M-X Prepend to File M-X Query Replace M-X Replace String M-X Save All Files M-X Select Buffer M-X Undelete File M-X Visit File M-X Write File M-X Write Region (Case conversion commands contributed by Jeff Soreff) * Some bugs relating to improper window adjustment have been fixed. For example, when the bottom window "pops up", the top window will now be adjusted. Also, C-X O now works properly in 1-window mode when the two windows refer to the same buffer (i.e., it switches between two independent buffer positions). * Bug fix: It should no longer be possible to find a "killed" buffer in a previously unexposed window. ------- 9-Nov-82 08:17:56-PST,4505;000000000000 Date: 9 Nov 1982 0817-PST From: Alan Snyder Subject: new PSL installed To: PSL-News: ;, PSL-Users: ; A new version of PSL has been installed on Hulk. Here are the details: New PSL Changes (9 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. ------- 6-Dec-82 18:41:19-PST,1969;000000000000 Date: 6 Dec 1982 1841-PST From: Cris Perdue Subject: LOADable modules, and HELP for them To: PSL-News: ;, PSL-Users: ; NEW PACKAGES: Some relatively new packages have been made available by various people here. These belong in PU: (loadable utilities) at some point, but for now they are all on PNEW:, both the source code and the object code. See below for an explanation of PNEW:. Documentation for each of these is either in the source file or in PH:.DOC, which has been greatly cleaned up. HASH.SL HISTORY.SL IF.SL MAN.SL NEWPP.SL STRING-INPUT.SL STRING-SEARCH.SL TIME-FNC.SL DOCUMENTATION ON PH: (the HELP directory): PH: has been greatly cleaned up. It should now be reasonable to browse through PH: for information on packages not described in the PSL reference manual. TO THE USERS: These files are intended to be IMPORTed or LOADed. If you wish to use modules from PNEW:, you must put PNEW: into your definition of the "logical device" PL:. The command "INFO LOGICAL PL:" to the EXEC will tell you what the current definition of PL: is. Put a line of the form: "DEFINE PL: ,, ..., PNEW:" into your LOGIN.CMD file, including the same directories that are given when you ask the EXEC, with PNEW: added at the end as shown. GETTING MOST RECENT VERSIONS OF MODULES: PNEW: also contains the object files for new versions of existing modules where the latest version is more recent than the latest "release" of PSL. In particular, where PSL.EXE includes the module preloaded in it, PSL.EXE will not include the version in PNEW:. If you want the latest version when you LOAD or IMPORT, put PNEW: at the front of the list defining PL:. TO THE IMPLEMENTORS: If one of these is your product and you feel it is well tried and no longer experimental, please send a note to Nancy K. asking her to move the source to PU: and the object file to PL:. ------- 4-Jan-83 14:37:11-PST,1577;000000000000 Date: 4 Jan 1983 1437-PST From: Cris Perdue Subject: PSL NEWS To: PSL-News: ;, PSL-Users: ; FILES THAT DESCRIBE OTHER FILES If you need to look at the PSL directories on HULK or find something in those directories, look for files with names that start with "-", such as -THIS-.DIRECTORY or -FILE-NOTES.TXT. These files appear at the beginning of an ordinary directory listing and they describe the directory they are in, plus the files and/or subdirectories of that directory. PSL directories likely to be of interest to users are: PSL: (PSL root directory), PU: (source code for libraries), PNEW: (place to keep revisions of source files), PH: (help files and documentation for libraries). LIBRARY MODULES NOW LISTED PU: is the repository for the source code of library modules, generally contributed by users. The file PU:-FILE-NOTES.TXT contains a listing of available library modules, in most cases with a one-line description of each module. Please look here for interesting utilities. If no documentation appears to exist, bug the author of the module, also listed. (Documentation may appear in PH: or in the source file itself on PU:.) SAVESYSTEM The function SAVESYSTEM, which used to take one argument, now takes three arguments. The first is the banner, the second is the file to be written, and the third is a list of forms to be evaluated when the new core image is started. PSL.TAGS For those of you who browse through PSL source code, the file PSL.TAGS moved to p20sup: from psl:. ------- 11-Jan-83 13:09:13-PST,1516;000000000000 Date: 11 Jan 1983 1309-PST From: Cris Perdue Subject: PSL NEWS To: PSL-News: ;, PSL-Users: ; When compiled code calls a function that is undefined, the error is now continuable. If the error is continued, the function call is repeated. The function EXITLISP is now available in DEC-20 PSL, where it is currently a synonym for QUIT. Both functions cause PSL to return to a command interpreter. If the operating system permits a choice, QUIT is a continuable exit, and EXITLISP is a permanent exit (that terminates the PSL process). The functions LPOSN and CHANNELLPOSN now exist. These return a meaningful value for channels that are open for output, giving the number of the current line within the current output page. To be precise, the value is the number of newlines output since the most recent formfeed. People have been using the undocumented STRING-CONCAT function. This function is NOT actually compatible with Common LISP. It should be used as a function that applies only to string arguments, and is otherwise like CONCAT. Various bugs have been fixed, notably in the compiler and debugging facilities. A new directory of possible interest is PSYS:. This contains executable files. Executables already documented as being on PSL: will stay there for some time, but new ones are on PSYS:. DOCUMENTATION The reference manual has been significantly revised and a new version will be made available to all PSL users within a week or two. ------- 11-Jan-83 13:20:09-PST,4950;000000000000 Date: 11 Jan 1983 1319-PST From: Alan Snyder Subject: NMODE news To: PSL-News: ;, PSL-Users: ; cc: AS NMODE changes (10-Nov-1982 through 5-Jan-1983): * Bug fix: In the previous version of NMODE, digits and hyphen would insert themselves in the buffer even in "read-only" modes like Dired. They now act to specify command arguments in those modes. * Bug fix: control characters are now displayed properly in the message lines at the bottom of the screen. * Some bugs in auto fill mode have been fixed. * C-S and C-R now get you an incremental search, very much like that in EMACS. [Incremental search was implemented by Jeff Soreff.] * The window scrolling commands have been changed to ring the bell if no actual scrolling takes place (because you are already at the end of the buffer, etc.). In addition, some bugs in the scroll-by-pages commands have been fixed: (1) Previously, a request to scroll by too many pages was ignored; now it will scroll by as many pages as possible. (2) Previously, a backwards scroll near the beginning of the buffer could fail to leave the cursor in the same relative position on the screen. * A number of changes have been made that improve the efficiency of refresh, input completion (on buffer names and M-X command names), and Lisp I/O to and from buffers (Lisp-E). * Jeff Soreff has implemented the following commands: M-A (Backward Sentence) M-E (Forward Sentence) M-K (Kill Sentence) C-X Rubout (Backward Kill Sentence) M-[ (Backward Paragraph) M-] (Forward Paragraph) M-H (Mark Paragraph) M-Q (Fill Paragraph) M-G (Fill Region) M-Z (Fill Comment) M-S (Center Line) C-X = and C-= (What Cursor Position) These are basically the same as EMACS, except for M-Z, which is new. M-Z (Fill Comment) is like M-Q (Fill Paragraph), except that it first scans the beginning of the current line for a likely prefix and temporarily sets the fill prefix to that string. The prefix is determined to be any string of indentation, followed by zero or more non-alphanumeric, non-blank characters, followed by any indentation. The Fill Prefix works somewhat better than EMACS: lines not containing the fill prefix delimit paragraphs. * New EMACS commands implemented: C-M-\ (Indent Region) (for both Text and Lisp modes) C-M-C (inserts a ^C) * Defined C-? same as M-?, C-( same as C-M-(, C-) same as C-M-), for the convenience of 9836 users. * The following commands have been enhanced to obey the C-U argument as in EMACS: C-Y (Insert Kill Buffer) M-Y (Unkill Previous) M-^ (Delete Indentation) C-M-(, C-M-U, and C-( (Backward Up List) C-M-) and C-) (Forward Up List) C-M-N (Move Forward List) C-M-P (Move Backward List) C-M-A and C-M-[ (Move Backward Defun) C-M-E and C-M-] (End of Defun) * The C-X = command has been extended: if you give it a numeric argument, it will go to the specified line number. * NMODE's Lisp parsing has been vastly improved. It now recognizes the following: lists, vectors, comments, #/ character constants, string literals, ! as the escape character, and prefixes (including quote, backquote, comma, comma-atsign, and #-quote). The only restriction is that parsing is always done from the beginning of the line; thus newline cannot appear in string literals or be quoted in any way. * NMODE's Lisp indenting has also been improved. It now recognizes special cases of indenting under functional forms, and indents to match the leftmost (rather than the rightmost) of a sequence of forms on a line. It also knows about prefixes, like quote. * Inserting a right bracket in Lisp mode now displays the matching bracket, just as inserting a right paren does. * Inserting a right paren (or right bracket) now will avoid trying to display the "matching" left paren (or left bracket) when inside a comment, etc. * Changed multi-line Lisp indenting commands to avoid indenting (in fact, remove any indentation from) blank lines. * The indenting commands now avoid modifying the buffer if the indentation remains unchanged. * When a command (such as C-X K) asks for the name of an existing buffer, CR will now complete the name, if possible, and terminate if the name uniquely specifies one existing buffer. This behavior is more similar to EMACS than the previous behavior, where CR did no completion. * String input is now confirmed by moving the cursor to the beginning of the input line. ------- 11-Jan-83 17:19:31-PST,1032;000000000001 Date: 11 Jan 1983 1719-PST From: Cris Perdue Subject: More PSL News To: PSL-News: ;, PSL-Users: ; The behavior of LOAD has been modified so it is possible to use LOAD to load in ".SL" files. As in the past, LOAD searches in two places for a file to load: first in the connected directory (DSK: for the DEC-20 cognoscenti), then on PL: (or the equivalent on other machines). On each of these directories it searches through a list of file extensions (.b, .lap, and .sl) for a file with the right name and that extension. Thus LOAD looks first for .b, then .lap, then .sl, then pl:.b, then pl:.lap, finally pl:.sl. Until the latest version of PSL, LOAD would only search for .b and .lap files. The extended behavior should help people who often do not compile files. The main thing to remember is to either keep any .b file in the same directory with the .sl, or else make sure that the .b file's directory is searched before the .sl file's directory. ------- 19-Jan-83 18:28:27-PST,1437;000000000003 Date: 19 Jan 1983 1826-PST From: PERDUE at HP-HULK Subject: PSL News Update To: psl-news LOADing files The LOAD function uses two lists in searching for a file to actually load. The lists are: loaddirectories* This initially has the value: ("" "pl:"). It is a list of strings which indicate the directory to look in. Directories are searched in order of the list. loadextensions* This initially has the value: ((".b" . FASLIN) (".lap" . LAPIN) (".sl" . LAPIN)). It is an association list. Each element is a pair whose CAR is a string representing a file extension and whose CDR is a function to apply to LOAD a file of this extension. Within each directory of loaddirectories*, the members of loadextensions* are used in order in searching for a file to load. NOTES: The value of loadextensions* has recently changed. Removal of the last element of loadextensions* will restore the old behavior. Do not expect the exact strings that appear in these lists to remain identical across machines or across time, but it is reasonable to believe that the lists and their use will be stable for some time. DEBUGGING: BR and UNBR BR and UNBR were removed from the PSL system some time ago. To satisfy their devotees, they have been resurrected in a library named BR-UNBR. A bug has also been fixed and very soon the system library file will have the fix (if in a hurry see pnew:). ------- 24-Jan-83 09:42:10-PST,703;000000000000 Date: 21 Jan 1983 1909-PST From: PERDUE at HP-HULK Subject: Documentation directories To: psl-news The PSL documentation directory "pd:" has been cleaned up and there are now also machine-dependent directories p20d:, pvd:, phpd:, and pad: (Apollo). No great news of yet concerning the contents of these directories, though they do contain some rather new documents in source and final form. Note that some of these logical names are new, and there are some other new logical names as well: the group based on the root name "pdist" has been filled out, and the group based on the name "psup:" has also been filled out with a couple of new directories and their logical names. ------- 9-Feb-83 13:22:20-PST,4442;000000000000 Date: 9 Feb 1983 1317-PST From: AS at HP-HULK Subject: NMODE changes To: psl-news The following recent changes are available in PSL:NMODE.EXE on Hulk, and on the 9836 (except for Dired). Recent NMODE changes (20-Jan-1983 through 9-Feb-1983): Changes: * The Buffer Browser (C-X C-B) has changed in a number of ways. It has three new commands: F Saves the buffer in a file, if there are unsaved changes. M-~ Turns off the buffer-modified flag. N Restores all Ignored files to the display list. In addition, Backspace has been made equivalent to Rubout. Also, the commands D,U,K,I,Rubout,Backspace,F,N, and M-~ all obey a numeric argument of either sign. The Buffer Browser now starts up pointing at the previously-current buffer. After performing a sort command, the cursor now continues to point at the same buffer. * DIRED (the File browser) has been changed in a number of ways. One SIGNIFICANT INCOMPATIBLE change is that the K and C-K commands now delete the file immediately and remove the file from the display (instead of just marking them for later deletion). In addition, there are two new commands: I (Ignore File) Removes the file from the display list, without any effect on the actual file. N Restores all Ignored files to the display list. In addition, Backspace has been made equivalent to Rubout. Also, the commands D,U,K,I,Rubout,Backspace,and N all obey a numeric argument of either sign. The sort-by-filename procedure has been changed to sort version numbers in numerical, rather than lexicographic order. When Dired starts, the files are sorted using this procedure, instead of leaving them in the order returned by the file system. After performing a sort command, the cursor now continues to point at the same file. Dired will now automatically kill any buffer it had created for viewing a file as soon as you view a new file or exit Dired, unless the buffer contains unsaved changes. * M-X Insert File now takes as its default the file name used in the previous M-X Insert File command. This behavior matches EMACS. * Lisp-E (and Lisp-D, a new command) now insert a free EOL at the end of the buffer, if needed, whenever the buffer-modified flag is set. Previously the free EOL was inserted only when the current position was at the end of the buffer, regardless of the state of the buffer-modified flag. New commands: M-X Count Occurrences (aka M-X How Many) M-X Delete Matching Lines (aka M-X Flush Lines) M-X Delete Non-Matching Lines (aka M-X Keep Lines) M-X Insert Date (not on 9836 yet) M-X Kill Some Buffers M-X Rename Buffer M-X Revert File M-X Set Key M-X Set Visited Filename Lisp-D (in Lisp mode) executes the current defun (if the current position is within a defun) or executes from the current position (otherwise). Improvements: * NMODE now checks the system's terminal type every time it is restarted. This change allows you to use an NMODE that was detached from one kind of terminal and later attached on another kind of terminal. * Fixed bug in Dec-20 version: Find File could leave around an empty file if you tried to find a nonexistent file in a directory that allows you to create new files but whose default file protection does not allow you to delete them. (On the Dec-20, Find File determines the name of a new file by writing an empty file and immediately deleting it.) * A soft-key feature has been added, intended primarily for use on the 9836. The command Esc-/ will read a soft-key designator (a single character in the range '0' to 'W') and execute the definition of the corresponding softkey (numbered 0 through 39). Softkeys are defined using the function (nmode-define-softkey n fcn label-string), where n is the softkey number and fcn is either NIL (for undefined), a function ID (which will be invoked), or a string (which will be executed as if typed at the keyboard). NMODE on the 9836 sets up the keyboard so that the function keys K0 through K9 send an appropriate Esc-/ sequence (using shift and control as modifiers). * The two message/prompt lines at the bottom of the screen are now sometimes updated independently of the rest of the screen. This change makes writing messages and prompts more efficient. ------- 25-Feb-83 11:03:02-PST,2247;000000000000 Date: 25 Feb 1983 1059-PST From: AS at HP-HULK Subject: recent NMODE changes To: psl-news Recent NMODE changes (14-Feb-1983 through 24-Feb-1983): Bugs fixed: * Dired wasn't garbage collecting old buffers used to view files, as had been intended. * M-Z would enter an infinite loop on a paragraph at the end of the buffer whose last line had no terminating Newline character. * When filling with a fill prefix, the cursor would sometimes be placed improperly. * M-X Rename Buffer didn't convert the new buffer name to upper case. * The Permanent Goal Column feature (Set by C-X C-N) didn't work. * The incremental search commands did not handle bit-prefix characters (e.g., the Meta prefix) properly. Typing a bit-prefix character would terminate the search, but then the bit-prefix character would not be recognized as such. * When executing Lisp from the OUTPUT buffer in one-window mode, the window would not be adjusted if the other (unexposed) window also was attached to the OUTPUT buffer. * The cursor was being positioned improperly when the window was scrolled horizontally. Performance Improvements: * The efficiency of Lisp printing to the OUTPUT buffer has been improved significantly through the use of internal buffering. One visible change is that the screen is updated only after an entire line is written. * Insertion into text buffers has been speeded up by eliminating some unnecessary string consing that occurred when inserting at the beginning or end of a line (which is very common). EMACS Compatibility Enhancements: * M-X Set Visited Filename now converts the new name to the true name of the file, if possible. * M-X Rename Buffer now checks for attempts to use the name of an existing buffer. * Query-Replace now terminates when you type a character that is not a query-replace command and rereads that character. * C-M-D has been extended to obey the command argument (either positive or negative). It still differs from the EMACS C-M-D command in that it always stays within the current enclosing list. * M-( has been extended to obey the command argument. * The M-) command (Move Over Paren) has been implemented. ------- 18-Mar-83 16:29:39-PST,6873;000000000000 Date: 18 Mar 1983 1626-PST From: AS at HP-HULK Subject: recent NMODE changes To: psl-news cc: AS Recent NMODE changes (28-Feb-1983 through 16-Mar-1983): (Not all of these changes have been installed on all systems.) Bugs Fixed: * NMODE will now refresh the display and clear the message line when it is interrupted and restarted. * The C-X D command would list the connected directory, rather than the directory of the current file, if the current file name contained a device specification but no directory specification (e.g., "FOO:BAR.TXT"). * The 9836 color screen driver would crash if it tried to display a buffer containing characters with integer values greater than 127. * The command to write the contents of the current screen to a file would always write the main screen, even when NMODE was using multiple screens. * NMODE would crash if it encountered a file (on the 9836) with an "invalid" file name (e.g., "FOO.BAR.TEXT"). Performance Improvements: * File I/O on the 9836 has been speeded up greatly. * The 9836 color screen driver has been modified to speed up refresh. * Keyboard interaction has been speeded up significantly following the discovery that certain keyboard input functions were not compiled. New Commands: * DIRED is now available on the 9836. * There is a new command, M-X List Browsers, which brings up a Browser Browser showing all existing browsers (i.e., the Buffers browser and, on the 9836, the NMODE Documentation browser), as well as all potential browsers (i.e., File Directory browsers). Potential browsers are displayed as prototype browsers. Commands are provided to view documentation on a browser (or prototype) and to enter a browser (or instantiate a prototype). * There is a new command, M-X Print Buffer, also available as C-X C-P, which prints the contents of the current buffer in a format suitable for printing devices. A file/device name is requested from the user; the default is LPT: on the Dec-20 and PRINTER: on the 9836. This command translates tabs to spaces and control characters to ^X form. Note: using C-X C-W on the 9836 to write the buffer to PRINTER: does not work. * A Browse command has been added to Dired. This command allows one to browse thru a subdirectory. * A Create command has been added to the Buffer Browser to create new buffers. A Create command has been added to Dired to create new files. Changes: * The command to write the contents of the current screen to a file has been changed from C-X P to M-X Write Screen. In addition, this command now has its own default file name. * The Buffer Browser (C-X C-B) now always displays all named buffers. Previously, it would ignore buffers whose names began with a "+", unless an argument was specified to the C-X C-B command. The use of "+" to name "internal" buffers has been replaced by the use of "unnamed" buffers. * A number of changes have been made to the common browser mechanism, which affect the behavior of all browsers (Buffers, Files, Documentation, and the Browser Browser): Browsers now use "unnamed" buffers (a new NMODE feature) to display the lists of items. This change means that browsers no longer appear in the Buffer Browser list of buffers and cannot be selected using C-X B. Instead, the Browser Browser (M-X List Browsers) can be used to display all existing browsers and to select an existing browser. The Buffer Browser and the Browser Browser now update themselves automatically under various circumstances, most notably when you enter or select them, to take account of any items created or deleted since the browser was last updated. The File Directory Browser (DIRED) does not update itself automatically, since that operation would be too time-consuming. However, it supports a new command, Look (L), which causes it to re-read the specified directory. When you attempt to create a browser, NMODE will first look for an existing browser with the desired information. If an existing browser is found, it will be reentered. As described above, the Buffers and Browser browsers update themselves automatically when they are entered. When a File Directory browser is reused, it also updates itself automatically. Quitting a browser no longer kills the browser, but merely returns the display to its previous state. This change encourages reentering existing browsers instead of unnecessarily creating new ones. It is possible to kill a browser using the Kill (K) command of the Browser Browser, if you desperately need to reclaim the space taken up by a browser. Quitting a browser now does a better job of restoring the previous screen contents. The help line at the bottom of the screen is now automatically maintained. Previously, it was displayed only when the browser was entered and would not be restored when returning to the browser from another window or buffer. The ? command (which used to refresh the help line) now displays a buffer of documentation about the browser. Browsers now do a better job of managing the screen, especially when the split-screen option is enabled. (When the split-screen option is enabled, the top window is used to display the list of items, and the bottom window is used to display a particular item. The split-screen option is enabled by including the statement (SETF BROWSER-SPLIT-SCREEN T) in your NMODE.INIT file. Split-screen will probably become the default soon.) When the split-screen option is enabled, each browser will endeavor to ensure that the bottom window displays the most-recently selected item. When there is no selected item, the browser will display documentation in the bottom window (using an "unnamed" buffer). The window label line for a browser now displays additional information about the browser. For example, the label line for a File Directory Browser displays the name of the directory. In addition, the label line for a browser documentation buffer displays a descriptive sentence. * A number of incompatible changes have been made to the common browser mechanism to support the above changes. If you have written your own browser using these mechanisms, you should consult the sources of the standard browsers to see the kinds of changes you should make. (See Buffer-Browser.SL, Dired.SL, Doc.SL, Browser.SL, and Browser-Support.SL, all in the PN: directory.) * Another incompatible change: the function buffer-create-unselectable has been replaced by the function create-unnamed-buffer, which (as the name suggests) does not take a name-of-buffer argument. (See PN:Buffers.SL.) -------