1 LISP LIBRARY MODULES MANUAL, MEDLEY BETA RELEASE 1 LISP LIBRARY MODULES MANUAL, MEDLEY BETA RELEASE FILEBROWSER 1 FILEBROWSER 1 FILEBROWSER 6 FileBrowser provides a convenient user interface for manipulating files stored on a workstation or file server. It enables you to see, edit, delete, print, load, copy, move, rename, compile, sort, and get several types of information about groups of files. You can also customize FileBrowser by adding your own commands. 2 Requirements 1 TABLEBROWSER In addition, the HARDCOPY commands require printer drivers and fonts, and the EDIT command requires one or more editors (TEdit, SEdit, DEdit). 2 Installation 1 Load FILEBROWSER and the other required .LCOM modules from the library. 2 User Interface 1 Starting FileBrowser 1 Once you have loaded FileBrowser, there are two ways to open a browser on a set of files: 1. Select the FileBrowser command from the background menu, in which case you are prompted for a file name pattern, or 2. Type the command FB FILEPATTERN in your Executive window. In either case, FileBrowser will prompt you to create a window by presenting you with a dashed rectangle with the mouse cursor and a small geometric design at the lower right corner. 1. Move your mouse until the upper left corner of the rectangle is where you want it on the screen. 2. Hold down the left mouse button and move your mouse down and to the right, thus expanding the window diagonally, until the window is the right size. 3. Release the mouse button. This creates a window group on your screen in the outlined area. Next, if you did not specify a pattern by using the FB command, FileBrowser prompts you for a file pattern. Type a pattern, as described in the section "Specifying What Files to Browse," below. FileBrowser enumerates the set of files matching the pattern you requested to see. While the enumeration is in progress, the RECOMPUTE command is grayed out. When the enumeration is finished, you may select files and issue commands. You can scroll the window at any time, even while the browser is busy. If FileBrowser can't find any files matching the pattern you specified, or you decide you specified the wrong pattern and want to try again, you can specify a new file name pattern from within the browser using the NEW PATTERN command; see RECOMPUTE in the section "FileBrowser Commands," below. You can have as many active FileBrowsers open at once as you like. Specifying What Files to Browse 1 A full file name in Xerox Lisp consists of a device or host (such as your local disk, a file server, or a floppy disk), a principal directory and zero or more subdirectories, a file name (possibly including an extension), and a version number. These fields are put together in the form {HOST}SUBDIRECTORY>FILENAME.EXTENSION;VERSION A file name pattern, as specified to FileBrowser, consists of a file name with one or more pieces omitted or filled with wild cards (*). All the files matching the pattern are listed by FileBrowser. Thus, you can browse all the files in a particular directory, all the files in a subdirectory of that directory, all the files in a directory with a particular extension, and so forth. The wild card * can be used to stand for zero or more consecutive characters in the file name. You can use as many wild cards in a pattern as you wish. If you leave out some of the fields in a file name pattern, the missing fields are defaulted by the system. Omitted fields in the front of the pattern, i.e., the host, device, or directory fields, are filled in by consulting your connected directory. Other omitted fields are filled in with wild cards unless they are explicitly omitted; i.e., the field is empty, but the preceding punctuation is still present. In more detail, some of the cases are as follows: If you leave out the name of the host/device, specifying FILENAME, FileBrowser will use the name of the host/device for the directory to which you are currently connected. If you leave out both the device and directory names, specifying FILENAME, FileBrowser will use the device and directory to which you are currently connected. If you do not specify a file name, FileBrowser lists all the files in the specified directory (or the connected directory if you also omitted the host and directory). If you leave out the extension of a file name, FileBrowser lists all the files with the specified file name and any extension. If you omit the extension but include the period that usually precedes the extension, FileBrowser lists only the files with the specified name and no extension. If you omit the version number of the file name, FileBrowser lists all versions of the matching files. If you omit the version number but include the semicolon that usually precedes the version, FileBrowser lists only the highest version of the matching files. Thus, the minimal pattern you can type is * (asterisk%enumerate all files in the connected directory) or ; (semicolon%enumerate just the highest version of all files). If you press the RETURN key without giving a pattern, FileBrowser aborts the prompt for a pattern, leaving you with an empty browser in which the only things you can do are change some FileBrowser parameters (see the subcommands of RECOMPUTE in the section "FileBrowser Commands," below) and then use the RECOMPUTE command to be prompted for a pattern again. Examples 1 The pattern * specifies all files in the connected directory. It is equivalent to *.* or *.*;*. The pattern BAR specifies all files in directory FOO with name BAR and any extension. It is equivalent to BAR.*;*. The pattern BAR. specifies all files in directory FOO with name BAR and no extension. It is equivalent to BAR.;*. The pattern *.TEdit specifies all files in the connected directory with the extension TEdit. It is equivalent to *.TEdit;*. The pattern *.TEdit; specifies only the newest version of all files in the connected directory with the extension .TEdit. The pattern A*E specifies all files in directory FOO whose names begin with A and end with E and have any extension. The pattern {TOAST}*MY* specifies all files in directory {TOAST} whose names contain the substring MY and any extension. Using the FileBrowser Window 1 The FileBrowser window has six major subwindows, which from top to bottom are as follows: PROMPT window This topmost subwindow is where FileBrowser prints messages about what it is doing and receives input from you. Its contents are cleared before every command. TALLY window This subwindow immediately below the prompt window keeps a running tally of the total number of files listed in the window and the number of files that you have marked for deletion. In addition, if one of the attributes you are displaying is a size attribute (Pages or Length, as in the INFO menu, described below), this window maintains a tally of the total number of pages in the files listed and the files marked for deletion. This window also has a title bar across the top identifying the pattern you specified and the time at which the directory enumeration was performed. The window is blank while the files are being enumerated. `00 0 ! 0DA@008pcsg3" w q$3%@F3@0)H%"I JDB H ) RIJ0)H!Ir"d @$ (:%@HJ0)HIDB"@D (J AIJ0pgpd2 !@6F20@@ 0@@0000000000000@@ @@ 0@! @0rZgqC8I" pA9"Tc40JUJ@ĤIJP4 HHP!@!8)0JUJ@G IK" FH @"T .0JU$J@D I*! AIT $@D(0IdBIC I Nr$x`Hc*C&0@0 @@0@@000?oww?ww~~Wϟw`ww}{:cæww/{;zO0$D"D H"$I"F@$dHA H 0$<C'>B'B"H0$dȑL$  B$$|G 0$D"D" H"DI"F $dH0:8 N:@p ӣ0@ 00A@0A@ 0A.G<0A1#"H A!!>O0A!! H 0wA!#"H0!G 0j7n~m߻0js~;07j۷v07j7nvۻn0j<<0 0@0&$@0$"0$"0$&!000>DDÈ@800 D!l$MD@"QH0 (!l$M( D"Q0H0<TJ @8PF0"A "TJ G>D P@0̟(! >T$J HD G,À0"D!"T!$JHD@ H3$@0D"D!È>G8@>"'0H"$0H"$@0G#00"8" p`8p0"D6`D@"H0*D6 D" H0*0*  8B"pH0J*@* !#H>D @  0ID * AȐD @ Ύ."0HD*0  LD@B"Q!1" 8" K8@pr!!0 !! 0  !10.0 0>xqÇ 8qp@8pp` 00HDH D@D@"H0HDH DGD"H0xP @PH8 F|0PP @P H>D  0HH0H DP@ȊD8p0HD0H DQȄD  xD DqÇ>8qG8p>p |0@ 0D0|8p00<8q |pp@8pp0H"D @H0@D@"H0H"D @HPGD"H@0<@ x`H8FH0(@ @ H>D! 0H$D @H@ȊDA:^0H"D @BHȄD FH "8q>|pC|G8p>BH0BH 0FH0:F00>@p8Àq0H& @D$@"H0H&GD$B"H0%B@8@F0%@!G>D " 0H%@AHD "0H%FHD@"H B8@pC0L 0H0LJN00>|# @q@8p> `0Ha & @D@`H0Ha & GDBH0 %B H8! F 0B %@ CH>D@! @ 0H" %@@@ȊD@!1q#0H %FȄDB Lɉ$@ #>BG8p H '0H $ 0HH$@0q#00>@pCDÈ8p@0M @D$MD@"H0M @($M(D" @H0 <@(J8p@H0 @J"JH>D @@0J @>$JȐD @@Dtp0J @H"!$JLD@B @(ĄČ0 |qH"!È>K8@>q00(Č0Dttp00"|q8q@8px0H"@!@"D@DH0H@!@"DB  GD(H0x! D@ H8F~0@! D CH>D@A 0H@!@"D@@ȊD@A8x0H@!B"DȄDBA"D̘ @q8CG8p>p~>@0@A @ 0A"D0A8x00p Ȏ@p 8p0EHQ @` @D"H0EHQ @a GD&H0ExPNJ@H8*F0H"D" @O>D*0O>D @HD2x0H"D @HD"0"x|p!8pp000x00|Èp@8p0H$M@D@HH$M(GD(HOJH8FHJ H>DH$J@ȊD H!$JȄD!È>G8p>p|"  8pH6`a@D@"HH6GD  HO* !H8< FH* !O>D"@H* !HD"@H*0 !HD""8pp @p p8p@H@`@D HH@a GD (@HO @ H8@FH@ CO>D@H@@HD@H@HD@|p!8p>q8pD@8 H"D "l@D@ "aHH"D  "l!@ HD"HHp""T @ H8B!HHB"T@ H>D @" H"  "T@ HD @" H"@!"T`@ID@B"!|qD!8@ @ BROWSER window This is the principal subwindow, in which the files matching the specified pattern are listed. Each file's name appears at the left, and various attributes of the file are displayed in columns to the right. A title bar across the top of the browser window identifies the contents of each column (e.g., Name, Pages, Created). The files are listed in alphabetical order, with multiple versions of the same file listed in decreasing version order; i.e., the newest version appears first. The width of the column listing the file names is initially chosen to be appropriate for average-sized file names. If the files you asked to browse have particularly long names, then when FileBrowser has finished listing all the files it may choose to redraw the browser window with the attribute columns moved farther to the right to accommodate the longer file names. COMMAND menu This menu appears vertically along the right side of FileBrowser window (under a title bar "FB Commands") and lists the commands that you may select to perform operations on the files in the browser, or to change the appearance of the browser. Most of the commands operate on the set of currently selected files (see the section "Selecting Files" below). Some commands have subcommands, as indicated by the small triangle alongside them, which can be selected by holding down the left mouse button and sliding the mouse to the right over the triangle. INFO menu An additional subwindow, the Info menu, is not normally displayed. It is used to change the set of file information (attributes) displayed in the browser (see the section "Getting Information About Files," below). SCROLL bar If there are more files in the listing than fit at one time in the browser window, you can scroll the browser window to view more files. Slide the mouse cursor out the left side of the window to get the scroll bar and press the left mouse button to scroll the region up and the right mouse button to scroll it down. Pressing a mouse button when the cursor is near the bottom of the scroll bar will scroll the region by larger increments than when the cursor is at the top. You can also press the middle mouse button in the scroll bar to move the listing to the place that corresponds to that position in the scroll bar. For example, pressing the middle mouse button when the cursor is at the bottom of the scroll bar will display the end of the listing. This quick-scrolling technique is called thumbing. The gray box in the scroll region indicates where the currently displayed contents are relative to the entire contents of the browser. Similarly, if there is more attribute information than fits in the browser window, you can scroll the browser window horizontally to view the rest of the attribute information. To do this, slide the mouse out the bottom of the window to get the horizontal scroll bar. The left button scrolls to the left, the right button to the right. Selecting Files 1 Most FileBrowser operations are performed by selecting a single file or set of files, then giving a command that specifies what you want to do with the selected files. The current selection is indicated by a small triangle in the left margin of the browser next to each selected file. `y0>xqÇ 8qp@8pp`0HDH D@D@"H0HDH DGD"H0xP @PH8 F|0PP @P H>D  0HH0H DP@ȊD8p0HD0H DQȄD  xD DqÇ>8qG8p>p |0@ 0D0|8p00<8q |pp@8pp0H"D @H0@D@"H0H"D @HPGD"H@0τ<@ x`H8FH0(@ @ H>D! 0τH$D @H@ȊDA:^0H"D @BHȄD FH "8q>|pC|G8p>BH0BH 0FH0:F00>@p8Àq0H& @D$@"H0H&GD$B"H0τ%B@8@F0%@!G>D " 0τH%@AHD "0H%FHD@"H B8@pC0L 0H0LJN00>|# @q@8p> `0Ha & @D@`H0Ha & GDBH0τ %B H8! F 0B %@ CH>D@! @ 0τH" %@@@ȊD@!1q#0H %FȄDB Lɉ$@ #>BG8p H '0H $ 0HH$@0q#00>@pCDÈ8p@0M @D$MD@"H0M @($M(D" @H0 <@(J8p@H0 @J"JH>D @@0J @>$JȐD @@Dtp0J @H"!$JLD@B @(ĄČ0 |qH"!È>K8@>q00(Č0Dttp00"|q8q@8px0H"@!@"D@DH0H@!@"DB  GD(H0x! D@ H8F~0@! D CH>D@A 0H@!@"D@@ȊD@A8x0H@!B"DȄDBA"D̘ @q8CG8p>p~>@0@A @ 0A"D0A8x00p Ȏ@p 8p0EHQ @` @D"H0EHQ @a GD&H0ExPNJ@H8*F0H"D" @O>D*0O>D @HD2x0H"D @HD"0"x|p!8pp000x00|Èp@8p0H$M@D@HH$M(GD(HτOJH8FHJ H>DτH$J@ȊD H!$JȄD!È>G8p>p|"  8pH6`a@D@"HH6GD  HτO* !H8< FH* !O>D"@τH* !HD"@H*0 !HD""8pp @p p8p@H@`@D HH@a GD (@HO @ H8@FH@ CO>D@H@@HD@H@HD@|p!8p>q To select one file, point to any part of the line (which lists the file name and its attributes) and press the left mouse button. If other files are already selected, this unselects them; thus, a file selected with the left mouse button is always the only selection. To add a single file to the current selection, press the middle mouse button at any place in the line. The file is selected without unselecting any other file. To remove a single file from the current selection, hold down the control key and press the middle mouse button at any place in the line. The file is unselected without affecting any other file. To extend the selection to include a group of contiguous files, that is, to select all the files between a file and the nearest already selected file, press the right mouse button on any part of the line. You can only extend the selection from the first selected file upward, or the last selected file downward. In addition, files marked for deletion are not normally selected when you extend. If you want to include all files, both deleted and undeleted, hold down the control key while extending the selection. Some lines in a FileBrowser display are directory-only lines. These lines are slightly indented and name the directory and subdirectory to which the files listed below that line belong. You cannot select in these lines, though you can copy-select them (see the section "Copy-Selecting Files," below). Commands that Require Input 1 Some FileBrowser commands require input from you. For example, the COPY command requires that you supply a destination file name. When a command requires input, FileBrowser prints a prompt message in its prompt window. This is usually followed by a default answer. If you want the default answer, you can just press the carriage return to finish the input. If you want to specify a different answer, simply start typing it; the default answer is erased and your answer replaces it. Alternatively, you can modify the default answer by backspacing over individual letters, or typing control-W to back up over complete words. Typing control-Q erases the entire answer. You can also use the mouse to edit your answer, using the same rules as followed by the Executive (see the documentation of TTYIN). Briefly, the left mouse button positions the caret at a character boundary; the middle mouse button positions the caret at the nearest word boundary; and the right mouse button deletes the characters between the caret and the mouse. In any case, when you have finished, position the caret at the end of your answer, if it isn't there already, and press the carriage return. You can also type control-X to finish your answer even if the caret isn't at the end. If you change your mind and want to abort the command, supply an empty input; i.e., if there is an answer in progress, backspace over it or type control-Q to erase it, then press the carriage return. FileBrowser prints "aborted" and aborts the command. In most situations, the control-E interrupt can also be used to abort your answer. While you are typing an answer, you can copy-select file names out of the browser (or any other browser), as described below in the section "Copy-Selecting Files". This can be useful, for example, if you wish to rename a file to a similar name in the same directory, or move a file into a subdirectory listed in the browser. Aborting Commands 1 During commands of indefinite duration, such as RECOMPUTE or COPY, FileBrowser adds another command to the browser, "Abort". `]Y@/~#$X@!$@!$@#$#@@Ç@$HX!@&H@$Hç@ Ř&dĒ X$D$D$$DĒ D@@"\B\:8~bBbFD@BBBB|@BBBB@@bFBFD"\:B:8@B@<Ȉ?""""""*"% @ 0D$ @ 0dd@"$ 0"Xi pa@p 0@ 0@ 0??????owń8b%?ww~x&@DQ&I?ww}{:c$@|!$H?;zO0$D"D H"D"$d ĉ A H 0$<C|# 0 9 B"H0$dȑL@" @ |G 0$D"D" H"D"$`" ĉ 0:8 N8ä!t000A@0A@ 0A.G<0A1#"H A!!>O0A!! H 0wA!#"H0!G 0j7n~m߻0js~;07j۷v07j7nvۻn0j<<0 0@0&$@0$"0$"0$&!000"8" p`80"D6`DG0*D6 Dǀ0*0*  8G0J*@* !#H>D G@0ID * AȐD GG,À0HD*0  LD@GH3$@08" K8@㇀"'0H"$0 H"$@0G#00>xqÇ 8qp@8pǀ0HDH D@DG0HDH DGD0xP @PH80PP @P H>D 0HH0H DP@ȊDΎ."0HD0H DQȄDQ!1" DqÇ>8qG8pr!!0 !! 0 !10.0 0<8q |pp@8pǀ 00H"D @H0@DG0H"D @HPGD0τ<@ x`H8|0 0τH$D @H@ȊD8p0H"D @BHȄDxD "8q>|pC|G8p|0@ 0D0|8p00>@p8Ç0H& @D$G0H&GD$G@0τ%B@8@H0 0τH%@AHD :^0H%FHD@FH B8@ǀBH0BH 0FH0:F00>|# @q@8p0Ha & @DG0Ha & GDG0τ %B H80 0τH" %@@@ȊDG0H %FȄDGH #>BG8p㇀C0L 0H0LJN00>@pCDÈ80M @D$MDG0M @($M(D0 <@(J8 0 @J"JH>D G@ 0J @>$JȐD G1q#0J @H"!$JLD@GLɉ$@  |qH"!È>K8@㇀H '0H $ 0HH$@0q#00"|q8q@8pǀ0H"@!@"D@D0H@!@"DB  GD0x! D@ H80@! D CH>DG0H@!@"D@@ȊDGDtp0H@!B"DȄDG(ĄČ0@q8CG8p㇀0@0(Č0Dttp00p Ȏ@p 8px0EHQ @` @D0EHQ @a GD0ExPNJ@H8~0H"D" @O>DA 0O>D @HDA8x0H"D @HDA"D̘ "x|p!8pǀ~>@0A @ 0A"D0A8x00|Èp@8pǀ0H$M@DG0H$M(GD0τOJH800τH$J@ȊDx0H!$JȄD0!È>G8p000x00|"  8pǀ0H6`a@DGH6GDτO* !H8τH* !HDH*0 !HD"8p  If you have finished with FileBrowser only temporarily and want to put it aside to work on later, you can shrink the browser (by selecting the SHRINK command from the right-button background menu). The browser shrinks to an icon which displays the file pattern inside the browser. If any files are marked for deletion, you will be prompted with the same menu of EXPUNGE options as when you close a browser. `SF``````````?`````````````````$0_ `&(" `%% `$`$b" `$" ` ``` `` J` K` P*$` 2$`>#````` ` S$T` t"8` CT` D`>GPD`H``` `# [%@`$m#`$I@`$I`# I0`` `````` Copy-Selecting Files 1 You can copy-select file names from a FileBrowser into other windows, such as Executive and TEdit windows, by holding down the Copy (or Shift) key while selecting a name in the window. The full name of the file is inserted as if you had typed it where the input caret is flashing. You can also copy-select in a directory-only line, in which case the full directory name is inserted in your type-in. Note: Most file names contain characters, in particular colon and semi-colon, that have special meaning to the Lisp reader. Thus, if your type-in point is in an Executive window, you probably want to type a double-quote character before and after the file name, so that the file name is presented to Lisp as a string. Getting Hardcopy Directory Listings 1 You can get a hardcopy listing of the directory displayed in a FileBrowser by using the regular window Hardcopy command. Press the right button in FileBrowser's prompt window or tally window and select HARDCOPY from the menu. FileBrowser will produce a hardcopy listing of the files and the attributes displayed in the browser. If the browser displays a large number of attributes, or your default printer font is too large, the listing may not accommodate all the attributes on one line, making the listing less readable. You may want to make the listing with fewer attributes, or use a smaller font for the listing (see description of FB.HARDCOPY.FONT in the section "Customizing FileBrowser and Using the Programmer Interface"). 2 FileBrowser Commands 1 DELETE, UNDELETE 1 Removing a file from the file system using FileBrowser is a two-step process. First, you mark the file or files for deletion. Then you issue the Expunge command. Any time between the deletion and the expunge you can change your mind and undelete any of the files. To mark a file or files for deletion, select them, then choose the DELETE command. FileBrowser draws a line through the deleted files. It also adjusts the numbers in the tally window to show how many files are marked deleted and how many pages they contain. It is thus easy to see how much file space you will regain when you issue the EXPUNGE command. `w>xqÇ 8qp@8pǀ0HDH D@DG0HDH DGD0xP @PH80PP @P H>D 0HH0H DP@ȊDΎ."0HD0H DQȄDQ!1" DqÇ>8qG8pr!!0 !! 0 !10.0 0<8q |pp@8pǀ 00H"D @H0@DG0H"D @HPGD0τ<@ x`H8|0 0τH$D @H@ȊD8p0H"D @BHȄDxD "8q>|pC|G8p|0@ 0D0|8p00>@p8Ç0H& @D$G0H&GD$G@0τ%B@8@H0 0τH%@AHD :^0H%FHD@FH B8@ǀBH0BH 0FH0:F00>|# @q@8p0Ha & @DG0Ha & GDG0τ %B H80 0τH" %@@@ȊDG0H %FȄDGH #>BG8p㇀C0L 0H0LJN00>@pCDÈ80M @D$MDG0M @($M(D0 <@(J8 0 @J"JH>D G@ 0J @>$JȐD G1q#0J @H"!$JLD@GLɉ$@  |qH"!È>K8@㇀H '0H $ 0HH$@0q#00"|q8q@8pǀ0H"@!@"D@D0H@!@"DB  GD0x! D@ H80@! D CH>DG0H@!@"D@@ȊDGDtp0H@!B"DȄDG(ĄČ0@q8CG8p㇀0@0(Č0Dttp00p Ȏ@p 8px0EHQ @` @D0EHQ @a GD0ExPNJ@H8~0H"D" @O>DA 0O>D @HDA8x0H"D @HDA"D̘ "x|p!8pǀ~>@0A @ 0A"D0A8x00|Èp@8pǀ0H$M@DG0H$M(GD0τOJH800τH$J@ȊDx0H!$JȄD0!È>G8p000x00|"  8pǀ0H6`a@DGH6GDτO* !H8τH* !HDH*0 !HD"8p @p p8pH@`@DH@a GDO @ H8H@ CO>DH@@HDH@HD|p!8p To undelete a file or files (i.e., to remove the deletion mark), select them, then choose the UNDELETE command. The lines through the files are removed, and the tally of deleted files is updated. The UNDELETE command has a single subcommand, UNDELETE ALL FILES, which undeletes all the files in the browser, independently of whether they are selected. This is useful if you completely change your mind about deleting any files. `K:g8ٛvvۻۻ6ۻvۻ   G8LH$DO|LH@$D 8 x0ﳷ7mۻPﷷl@ ﷷq@ ﷷ7mۻtqP8pw<Č"D@PD>G|p D@"DADtq38pq       @ p@ @    Ë0 &$L !ȉ &H $$H #   8LDdHLH$HELd$HEDdHLB :   The DELETE command has a useful subcommand, DELETE OLD VERSIONS. When you have been editing a file in the text editor and performing repeated PUT commands, or you the programmer have done many MAKEFILEs of the same file, multiple versions of the file accumulate, each more recent version denoted by a higher version number. The DELETE OLD VERSIONS command is used to delete excess versions of the files displayed in the browser. `K:g8ٛvvۻ@@ۻ6@@ۻvqq9Gۻ"D@"DH>G>@O D @H"DA"DHq3q8gGp0mۻPl>  p!  wmۻ #p H,<\8< $H I5BbD ' I  BB8 $ I  BB!$H!BBD>#p , the file is copied to that directory under its current name. If you supply a complete name, the file is copied to that exact name. `0000B10)PJ[03L@(`B_0 @1&`BU0:!PBU0J@)HHJQ06@DH10 0`0`0000000000000?owww~~Wϟ`ww}{:cæw{;zO0$D"D H"D"$d1"FDA H 0$<C|# !B|pB"H0$dȑL@" !2B@|G 0$D"D" H"D"$`1"FD0:8 N8äp.:8p0 B0 <0A@0A@ 0A.G<0A1#"H A!!>O0A!! H 0wA!#"H0!G 0j7n~m߻0js~;07j۷v07j7nvۻn0j<<""#""""" 0DDDdDDDDD@0@075Q0""*&&""" 0DDLDdfDD@0$&!00""""&#""" 0DDDDDFDDD@0<8q |pp@8pǀ0H"D @H0@DG0H"D @HPGD0<@ x`H8@0(@ @ H>DG,À0H$D @H@ȊDH3$@0H"D @BHȄD"'0"8q>|pC|G8pH"$0H"$@0G#000>@p8Ç0H& @D$G0H&GD$G0τ%B@8@ 0%@!G>D Ύ."0τH%@AHD Q!1" H%FHD@r!!0B8@ǀ !! 0 !10.0 0 00>|# @q@8p0Ha & @DG0Ha & GDG|0 %B H8 0B %@ CH>DG8p0H" %@@@ȊDGxD H %FȄDG|0#>BG8p㇀@ 0D0|8p000>@pCDÈ80M @D$MDG@0M @($M(DH0 <@(J8 0 @J"JH>D G:^0J @>$JȐD GFH J @H"!$JLD@GBH0 |qH"!È>K8@㇀BH 0FH0:F000"|q8q@8pǀ0H"@!@"D@D0H@!@"DB  GD0x! D@ H8 0@! D CH>DG0H@!@"D@@ȊDGH H@!B"DȄDGC0@q8CG8p㇀L 0@H0LJN000 Note: Unless you specify a version number in the destination file name, the version number of the new file will be 1, or one higher than the highest existing version of the file in the destination directory, independent of the version number of the old name. Even files marked for deletion can be copied. If you selected several files, FileBrowser notes how many files you wish to copy and offers as a default destination the connected directory. You can accept the default or supply a different directory. All the files are copied to that directory under the names they currently have. You must supply a directory specification, e.g., {SERVER}, rather than a complete file name, since you can't copy multiple files to the same name. If you mistakenly type a file name, rather than a directory specification, FileBrowser will complain and abort the command. If you want to copy files from different subdirectories, FileBrowser will ask, via a message in its prompt window, if you want to preserve the subdirectory structure at the destination. If you answer YES, then the names at the destination will include not just the root name of each source file, but also all the subdirectory names below the greatest subdirectory prefix common to all the selected files (this common prefix is displayed as part of the question). If you answer NO, then the names at the destination are formed solely from the root name of each file (the name displayed in the browser), ignoring any directory information each name might have. This can cause multiple files with the same root name to be copied into the same destination name (but with different version numbers, of course). `000<"0$0  @ 5H@0380p8Ggq9!=@FHg8H0JR FD"JRD"<0ЬIHP$)H@0JR` VD"CD",H$NH$H0JJ$ VD"BT,HH$H)$()03*DdA# BO0F' 80 80@@l0l0000000000000000000000?owww~~Wϟ`ww}{:cæw{;zO0$D"D H"D"$d1"FDA H 0$<C|# !B|pB"H0$dȑL@" !2B@|G 0$D"D" H"D"$`1"FD0:8 N8äp.:8p0 B0 <0A@0A@ 0A.G<0A1#"H A!!>O0A!! H 0wA!#"H0!G 0j7n~m߻0js~;07j۷v07j7nvۻn0j<<""#""""" 0DDDdDDDDD@0@075Q0""*&&""" 0DDLDdfDD@0$&!00O"88""""&#""" 06 H0@DGDDDDDFDDD@06 HPGDG0χ* @8G0Ĉ* G>D ǀ0τ* HHD G@0H* BHHD@GG,À0O"8 C|8@㇀H3$@0"'0H"$0H"$@0G#0O"8H 8q806!H D@DG06!H D GDG0χ*!SH @P@8G0Ĉ*!RH @PG>D ǀ0τ*!RȀ DPHD G 0H*!RȄ DQHD@GΎ."0O"8!G>8q8@㇀Q!1" r!!0 !! 0 !10.0O88!>88 0$DQ$DH0@DG 00 $DQ$DHPGDG0χ D ǀ|0τ"D"$DHHD G 0H"D$DBHHD@G8p0O<88C|8@㇀xD |0@ 0D0|8p0B>|Ï@p  @8ǀ0@$H@``D0@$H@a @D0υE xH@ @8@0H@"O@ C>D GH0υO@$H@ @D G 0H@$H@ @D@G:^0H|È|p!ς8@㇀FH BH0BH 0FH0:F0BDÈ80"D$M@DG0"D$M(GDG0υE |J@80H DJG>D G0υO"D$JHD G 0H"D!$JHD@G0HD!È>8@㇀H C0L 0H0LJN0B"D" p806D@6`DG06D@6Dǀ0υE*D@*  8G0H*D@* CH>D G 0υO*D@* @ȐD G@ 0H*D@*0 LD@G1q#0H"8@"K8@㇀Lɉ$@ H '0 H $ 0HH$@0q#0G8'8!80D$"D`D0D$"DB  D0B0G D@ 80BAD D CH>D 0BD!D"D @ȐD 0BD"D LD@Dtp0G88CK8@ǀ(ĄČ0@00(Č0Dttp0G"8 8p0Ȋ2($"Da@DGx0Ȋ2(D"DB0GD0υF *( D@ !PH80A*D@ D !SO>DG~0υH&|A"D!HDGA 0H&DB"D!HDGA8x0G"DC8C8p㇀A"D̘ @~>@0A @ 0A"D0A8x0Gxq"  8ǀ0ȑD6` a@DG0ȑD6GD0υFxa*  @80A"P*  CG>D 0υH>H*  HD 0H"D*0 !HD@x0G"Dq"8@00 00x0G"q@8p0H"( H0@DG0H"( HP GDGF>(  H8A"D  CH>DGȑ"| H@@ȊDGȑ"D BHȄDGG"D C|G8pppp0pǟ|pG8 8qp8fl0pHAA D@Dfl0pHAA DGDl0pFAA @P@86l0pA"B! @P!G>D 7ǘpȕ>C DPAHD pȕ"B! DQHD@pG"8B#>8q8@p8Èq@8H"D$MDH"D$M(DO0J@8J!G>D  "D$J@HD "D!$JHD@8!È>G8@ When copying (or renaming) multiple versions of the same file, FileBrowser does the copying in order of increasing version number, so that the versions at the destination are in the same relative order as at the source. As each file is copied, FileBrowser prints a message giving the full name of the new file. If a file with the chosen name already exists, the new file's version number will be one higher; otherwise it will be version 1 (one). The new file will have the same creation date as the original file. If the destination file happens to be one that matches the pattern of the files in the browser, the new file is inserted in the appropriate place in the browser display. However, if it matches the pattern of some other FileBrowser, it is not inserted in that other browser's display (in other words, FileBrowsers do not know about each other). You would have to RECOMPUTE the destination FileBrowser to see that the file was copied into it. RENAME 1 The RENAME command is used for changing the name of a file or group of files, or for moving a file or group of files to a different directory. The RENAME command is used in exactly the same way as the COPY command. If you rename a single file, you can supply a complete new name or just a directory; if you rename several files, you must specify a directory. As each file is renamed, FileBrowser prints a message giving the file's new name and removes the file from the browser display. If the new name belongs in the same browser, it is inserted in the appropriate place. If for some reason a file could not be renamed, this is noted in the FileBrowser prompt window. The reasons for the failure of a renaming operation are roughly the same as for the failure of an EXPUNGE; the file is open, or you do not have the access rights needed to rename the file. Note: If the destination of the rename is on a different file system than the original file, changing its name is equivalent to copying the file to its new name and then deleting the original file. HARDCOPY 1 You can print text files, TEdit files, Interpress or Press files, and Lisp files from FileBrowser. Select the appropriate file or files, then select the HARDCOPY command. The HARDCOPY command will determine what type of file you are printing and call the appropriate function for printing that file. Then the files will be printed one at a time on your default printer. The prompt window will display status messages telling you when files are being printed and when they are done (if your printer is one that provides this status service). `}:g8ٛvvۻۻ6ۻvۻ   G8LH$DO|LH@$D 8  @@ @@KG8LLHȒ$DHHO|LHHH@HHȒ$D GG8  q        @ p@ @    Ë0 &$L !ȉ &H $$H # }}p}L\xtw+P}{ "}{p>}{ }|\xt} "Љ@ @ P "  Kqd>P!" MLH !HHH "!2HHH!" HHH  HFq?  L? L   ?     àL$` L$ $` Ӡ @ H \HL2bI"BIL"BI"bI "\H @ @ You may specify printing to a file or to a printer other than the default printer by means of a submenu from the HARDCOPY command. This menu is the same as the one on the HARDCOPY command in the background menu. Selecting TO A PRINTER presents you with a choice of printers from a menu. Selecting TO A FILE prompts you to supply a file name. If you selected a single file, you must specify a single hardcopy file name (or accept the offered default). If you selected multiple files, then you must specify a pattern with a single asterisk somewhere in the "name" field, for example, *.INTERPRESS or Hardcopy-*.IP. The output file names are constructed by merging the pattern with each selected file name. If the name includes an extension that implies the type of print format (e.g., .IP or .INTERPRESS implies the Interpress print format), then a file of the specified type is made automatically. Otherwise, you are prompted to supply a print format type. Note: For files stored on servers not supporting random access, FileBrowser is currently unable to determine that a file is in TEdit format unless the file has the extension .TEDIT. Therefore you should use TEdit to hardcopy TEdit files with other extensions. Use FileBrowser's EDIT command (to call TEdit), then the HARDCOPY command either from the TEdit Expanded Menu or from the right-button menu. As of the Lyric release, TEdit files written directly to an NS file server are identifiable as TEdit files, so this restriction does not apply to them. Note: To obtain a hardcopy of the directory itself, use the Hardcopy command from the right-button window menu. See the section "Getting Hardcopy Directory Listings". SEE 1 When you browse a directory you sometimes want to see a file before printing or performing some other operation on it. To do this, select the file, then select the SEE command from the command menu. FileBrowser will prompt you to open a window by presenting you with a dashed rectangle and printing a message in the system prompt window. The window will be blank until FileBrowser starts printing the contents of the file in it. There are actually four different SEE commands, as shown in the submenu for the SEE command. The two FAST SEE commands are provided to let you quickly see the contents of a file, but not do anything fancy, such as scroll around at random in the file. The slower SCROLLABLE & PRETTY command does let you scroll, and if the file contains formatting information of a kind that FileBrowser knows about (via the editors you have loaded), you will see the file formatted. However, this command does much more work, and may take a bit longer to show you even the first line of the file. The FILEBROWSE command is for use on "files" that are actually directories; it is described in the next section. `:g8ٛvvۻۻ6ۻvۻ   G8LH$DO|LH@$D 8  @@ @@KG8LLHȒ$DHHO|LHHH@HHȒ$D GG8 q  @|?" @@ " @@ p@"@x~?Q""@@@ "@@ ""@@ "0|?0Ë0&$L!ȉ  "&H$  "$$H !!!! 1#!#" ?.! !  The two FAST SEE commands display the selected file in the display window one windowful at a time. When the file fills the window, a small menu appears at the bottom-left corner of the window (or top-left if your display window is at the bottom of the screen) giving you the option of seeing more of the file or aborting the SEE command. If you issued the SEE command with more than one file selected, you also have the choice of aborting just the display of this file or the entire SEE command. `0=w|0m0;;kN?mo1︎gX޻o}vk-p}{{^oopvm{o^}.oyo^mm{voo_~{oۗn?7n= {9౎Xq=x7`; 1l681ٌ`cm   |q<P p` 8€1l301 0 alm   @"P DB<0fa1 3alm   @"P D B0`1Ϝ 30al   x‚" q $8 @f`1 00alm { <  @BB"' | $D@1bA 0alm   @""  >D1c01ٌ0 alm   @B"  D!@1a1ccml >|qB<>p 8 @?a1Ϙo~mo 0 0  o| 610l 6 60 0l 6 À 7a0 6 $@ 1#0 | @ 0330 6<À 60c 0Č 6 ! @ 603 0nj 6 ! @ 610 6A$@ 307|@À    @ @ȎqO>8p#"@>8p#>8"|Ç @ (@H D!$@"@ B$ D!$H DB"@!Xqa<8  (@H D!$A"@ B$ D!$H DB"@!"d dHD (@<@!"@ B$<@!<Dx Dy'D D@ \!"@ C \! $@ D$D |@ D!dB"@ B D!d@ B@!"DdHD  D@ D!dD"@ B D!dB $B@!Dy 8 DpA>8p#| ϑ>8p# 8#|Ç @ @ @ @ @ @ @ qO>8p#>|!ȎDO" (@H D!$@ @Q"DB$B2 (@H D!$A @Q"DB$B2 (@<@!8p#>@DB"   "D"8>8DqǏ"| "(DB2D $"dH2@ "(DB2D $"dH2@@ ((*0QQLj"TaH*x@ D H(B*P@Q "TH*@ @ |Ȅ("B&D2 QD"LH&@@ DHB&D2 !$"LH&@@ DG"88!'DqǏ"@   ` @ | p>8P"D CÇ<DÏ  @D@ DPH"D`B!"!$dH,XqÈ4q (@D@ LPH"(B!"A$dH2dDHL!xQG$dH( B!"A$LH 2@@DIL!DR$@"DHD B!"!$L!H ,@p@C4xa>8$@p8DCÇ<D!È @ `  G<8A>x AÈ>D@ H"D@! DR$M d!R H"D ! Dp$M d F<0 DÈ>D    >|È<8D"8p#  !$M"@DB2DdB   $M"@DB2DdA < J<@(*0   BJ(@H(B*   B$J$@Ȅ("B&DA   B$J"@HB&DA > AÈ"8@G"8p#   8pϙx@8O D6l͛@ "DٲB* D33l"DٲB D 33olx DSB* "D 1#l{v< DRB >D1l<v "DR "D0l=v"DR "8pφ0o&@8B  @   !<8A>xÈ !H"D! DL AH"D! DL A"0 DÈ    !#qO>8p#"D !$@(@H D!$H"H6lJ A$@(@H D!$H"È6l A(@<@!H*TPJ AD@ \!*TP Ad@|@ D!dH"*T0 Ad@D@ D!dH"*T0 !#DpA>8p#"D    !#qO>8p#8p#o@ c1aÀ `=aÀ *`=a@ `mߞa `ma `ma `͜ c1͜ > À @!"È@ "@Q"($M@ "@Q"(r$M@  @Q(RJ@  @BDRJ@ "@"|r$J@ "@D$J@ |DÈ| À @ 8?l738'|#D >DÈ8@ "D1l6 17HD$"C$@"D  dHDB@" "D1ff 067HD$"C$@"T  dHDB@"  D0 fg36DB"T @ H"D! ( @ H"D! ( H |!( H.D!D ˆ"D!`| ˆ"D!`D D! D @ @ @ À À ''A 'a 'pQE#B'I"($@CP'I>'"'E $'C"($@'pADa# '''' If you select More, the SEE command displays another windowful of the file. If you select Next File, the SEE command closes this file and goes on to display the next file in the current selection. If you select Abort, the entire SEE command is aborted. You can also abort the SEE command by closing the display window. The next time you give a FAST SEE command, the same window will be reused. The only difference between the FAST SEE PRETTY and the FAST SEE UNFORMATTED commands is the manner in which the characters of the file are processed as they are displayed. The pretty (formatted) version interprets certain control characters found in Lisp source files to be font change commands, and interprets certain multibyte sequences as representing characters in the Xerox extended character set (see XSIS Character Code Standard, version XC1-2-2-0). It also squeezes out blank lines and shrinks the indentation of indented lines in order to better fit the text in a window that is generally much narrower than the standard file width. The formatted version is thus most appropriate for viewing source files and files containing plain text. The unformatted version of the SEE command does no special processing on the characters whatsoever. It simply displays each eight-bit byte as a single character, uninterpreted. This means that bytes that do not represent normal printing characters may be displayed as black boxes, in the form ^x or #x, or as a flashing of the window (for the byte that represents the ASCII bell'' character). The Unformatted version is thus most appropriate for viewing binary files that also contain text portions that might be worth seeing; e.g., compiled files (those with extension .MCOM) or Interpress masters (extension .IP or .INTERPRESS). The SEE SCROLLABLE & PRETTY command views a file in a different way. This command brings up a new read-only TEdit window for viewing a file (only if TEdit is loaded in your system; otherwise, SCROLLABLE & PRETTY reverts to FAST). You can scroll and copy-select the file's contents at will, as with any TEdit window. If the file is a Lisp source file, its contents are first formatted into a TEdit document, so that all the font information is retained. This formatting, however, can take a long time for a large file. For other kinds of files, the SEE SCROLLABLE & PRETTY command is exactly like viewing the file in a regular TEdit window, except that you can't edit it. If you want to edit a file, use the Edit command instead of the See command. You can keep the display window used by the SEE SCROLLABLE & PRETTY command open as long as you like. The command uses a different window for each file you select. Simply close the window with the standard right-button window menu when you are finished with it. FILEBROWSE 1 The FILEBROWSE command is a subcommand of SEE used to view a subdirectory in its own FileBrowser window. The selected file must be a (sub)directory. Subdirectory files appear in browsers on XNS file servers when the depth is finite (see the SET DEPTH command), and their names always end in ">". `N $HX ' $w $H.:p"D~&DD 8@>D(p`8p 2@ D(DC "D@"D6XDC 8`3*d  8p*D#>D `*DAD#a*d" D$LH ȏ*X 8pCA8@D@$LHA @D@$HH ÞA.yaD#GQ$HA1"Y$DHA!"GD@!80 HHA!"$DD a@DP$HHA!"$DH,GDPӆ>!!3D2!8@ "!>DC@" HDCqgG2 !HDCȐX,@89H D H  $ D Ȑ ,#$%DuG5 $LI&DD! !I*>D(@@p@8! &HIF D( HD ! $LIF"DD #93υ@@8GH!G>D `υHHAHD H HHD@ݻG@G8@o߿ݻn;0xmnlu\pA@!8mu_ `@DCm{ HD n8xA" H8$A  CH>D @A  @HD @/A"  ID@~#$XA@8@@!$@!$@#$#@@8D @@DCO,A@HD2@H8@ CH>D @D @HD Ç@D @ID@$HX @8@!@&H@$Hç@ On Unix servers, subdirectories are not syntactically distinguishable from ordinary files, nor is Lisp able to distinguish them internally; you simply have to know. The FILEBROWSE command prompts you for a region for a new FileBrowser window group, in which it proceeds to enumerate the contents of the selected subdirectory, to the same depth as the main browser used, if any. EDIT 1 The EDIT command invokes an editor on the selected file. To specify an editor explicitly, use one of the commands on the submenu. `=@@qgGȐX9HHȐuG>A?@8<"D` >|$ @ @A"D @/>8 ~#$ @!$ @!$@#$#`bIA8KD8II"D#8H@ @ Ç@$HX!@&H@$Hç@ Ř&dĒ X$D$D$$DĒ D To start up a TEdit editor on a selected text file, select EDIT with the left mouse button. If you have recently closed a TEdit window, then TEdit will probably reuse that window; otherwise, you will be prompted to create an editor window. TEdit only remembers the most recently abandoned window, however, so if you issue the EDIT command when you have several files selected, you will be prompted to create windows for all but the first file. The subcommand LISP EDIT is appropriate for Lisp source files produced by the file manager. It calls the Lisp structure editor on the file's coms. If the file is not yet known to the file manager, you will be asked whether you want to load it first (using LOAD PROP). If not, the operation is aborted. The editor used is the default structure editor (SEdit or DEdit, depending on your setting of *EDITMODE*). If you select the main Edit command, without sliding off to the submenu, then FileBrowser's default editor is called. This editor is initially TEdit, but you can change the default behavior by setting the variable FB.DEFAULT.EDITOR (see the section "Customizing FileBrowser and Using the Programmer Interface," below). LOAD 1 FileBrowser's LOAD command can be used to load both source (interpreted) and compiled files into your workstation's virtual memory. First select the file or files you want to load, then select Load with the left mouse button. A special display window is opened to give information about the files as they are loaded. When the load is complete, FileBrowser closes the load window. `T }{}߻.~^mmw{.wD"xp<O88!>8d!"D!"($DQ$DH0dQ!D!"( $DQ$DHPTQx!D<(G " C>D@  D"@@HD$@"$D&@HD$B" q8pÂp O88!>8GĈ$DQ$D&Ȁ $DQ$D&Ȁ D!'ȜD@d!"D!"(BDQD"( "ldQ!D!"(BDQ"( "l!@TQx!D<(BDQ"("T @T!@P!D(D@BDD"D@"T@L!!H!$|@DD"| "T@L!!D!"DAD$"D!"T`@D!Dp"DB8'DD! @p p|8p "  DÇ,8#"!LH2` L A T" #ȟ"@ T " $H"d@H2`$H" DÇ,pȀ 8 @8p>0@D@ QqaÏGD Q0ǁ" D&H8<P>"H>D@"P D"ȊD@"$D&ȄDB"qG8pG>D!'ȜÇBDQD"($H"BDQ"($H"‚DQ"(‚DD"DD‚DD"|$H"D$"D$H"8'DÇ The LOAD command also has subcommands that enable you to load files in different ways. These commands are described briefly here; see the IRM for further details. Only the LOAD and LOAD SYSLOAD commands are of interest to nonprogrammers. All load commands are placed on the history list. With the exception of LOAD SYSLOAD, all are undoable using Lisp history list commands. `z  @@ @@KG8LLHȒ$DHHO|LHHH@HHȒ$D GG8 q@ @  |@  B@ @ "(A@p@ "(A@@ DA@ |A@ B@?#|@ @@Ë0@&$L@!ȉ<@&HHB@$$H @@# @@@@@@HB @< @ @ @8P@DdHLH@$HEPA<>@d$HEA B!@DdHLBÇA !@:$H !@!A>@ &HA @$HB @çA< @@ @ P@"@>Q> A@ AH A@ "@@ 0< @r@ H@ 0AH" @> @?@ @ P@?@ P<0`@ @B0`@ !B (@?!B (@"" % @# % @DB" @<" @@p@<_@۟P@x<0g@p@B0d @۟!B ( @,_!B ( @"" %'@# %$@DB"$@@x<"$@H@@\H_2bI"BIL"BI"bI "\H @ @ ? .!. ? 1!1#" !!!!> !!!! 1#!#" ?.! !    @G,/8LH!3&$$D!"$$$|LH!"$$$@H!"&$dD G"%ã8   LOAD (same as the Lisp LOAD command) loads the file with LDFLG = NIL. If any functions or variables in the file redefine ones that are already in memory, messages such as "(FOO redefined)" are printed. This command is used for loading source files that you as a programmer plan to make modifications to, or for loading any file that you have doubts about, in which case you might want to be able to undo the load. CL:LOAD differs from IL:LOAD in that it calls the Common Lisp LOAD function, rather than that of Interlisp. In the present implementation, these two commands are essentially identical. LOAD PROP loads the file(s) with LDFLG = PROP. Interlisp functions are loaded onto property lists, rather than redefining the functions already in memory. Common Lisp functions, macros, etc. are loaded into a definitions table, again without changing the definitions currently in effect. This command is used for loading Lisp source files for which the compiled version already exists in memory, but which you plan to edit. LOAD SYSLOAD loads the file(s) with LDFLG=SYSLOAD. Function and variable redefinitions occur quietly (i.e., without printing (FOO redefined), (BAR reset), etc.). The file manager is not informed of this file. This is the fastest loading command and consumes the fewest resources, but it is not undoable. It is the best way to load compiled (extensions MCOM or MFASL) files that you are certain you want to load into your environment and are not planning to edit. LOADFROM calls the file manager's function LOADFROM. This loads variables and other expressions but not Interlisp functions, and does so in a way that informs the file manager, so that the editor knows where to find the functions. Note: The LOADFROM command is not appropriate for Common Lisp files%it is better to use LOAD PROP for them. COMPILE 1 The COMPILE command is used to compile a selected Lisp source file or files. The files do not have to be loaded. The COMPILE command uses the same compiler as CLEANUP does (the value of *DEFAULT-CLEANUP-COMPILER*), unless you select a different compiler from the COMPILE submenu. `G  L">L  "   ?  P? P?  F   %? % $ $DDD  àP$` P?|@$  D#B@$` B@Ӡ?B@ R|@ R@@ D""@@?"@~p3͝Pݽx<0g@ ?ݽpB0d"@@ ݝ("@@ ݣ("@~ ?%'@@ %$@@2 B"$@@ x<"$~???  .!.? 1!1#" !!!!> !!!! 1#!#" ?.! !    @G,/8LH!3&$$D!"$$$|LH!"$$$@H!"&$dD G"%ã8   Note that this command is placed on the history list, so that it and its subcommands are undoable. A special Executive window is opened for each file to display information about the code being compiled. When the compilation is finished, the window is closed. In the case of TCOMPL and BCOMPL, which invoke the Interlisp compiler, each compiled file is saved on your connected directory with the original file name and the extension MCOM. In the case of COMPILE-FILE, which invokes the Xerox Common Lisp compiler, the compiled file is saved on the same directory as the source file with the original file name and the extension MFASL. Note that this command compiles files found on a storage device, not the functions defined in the Lisp image. If you have made changes to any of the functions on a loaded file, you must perform a MAKEFILE to write an updated version before compiling it. For more information on making files and compiling, see the IRM. EXPUNGE 1 If you are sure you want to delete files permanently, choose the EXPUNGE command. The EXPUNGE command is grayed while FileBrowser expunges the files that were marked for deletion by the DELETE command. As each file is removed from the system, it is removed as well from the browser display, and the tally of total number of files and number of deleted files is updated, so you can see the progress of the command. If for some reason a file can not be expunged, FileBrowser prints a message saying so in its prompt window, but continues to expunge the other files. The main reasons that prevent a file from being expunged are its being opened, either by you or some other user, or your not having the access rights required to delete it (if it is on a file server). See the section "Troubleshooting Problems with FileBrowser," below. Note: The EXPUNGE command is not affected by the current selection; it operates only on files marked for deletion, whether currently selected or not. RECOMPUTE 1 FileBrowser's display shows those files that existed and matched the specified pattern at the time you created the browser. If you want the browser to reflect the latest state of the file system, use the RECOMPUTE command. For example, if you open a FileBrowser on your directory, then save several versions of a TEdit file on that directory, the file listing will not display the new versions until you RECOMPUTE. The RECOMPUTE command operates exactly as when you started up FileBrowser initially: it clears the display and tally windows, then enumerates the files matching the pattern. The RECOMPUTE command in the menu is grayed until the enumeration is finished. During this time you cannot scroll or perform any other operations on the browser. However, you can close the window if you want to abort the command and throw away the browser. If any files are marked for deletion at the time you request a RECOMPUTE, FileBrowser will present the choice of expunging or undeleting the files, just as it does when you want to quit the browser (see the section "Quitting the FileBrowser," above). The RECOMPUTE command also has a menu of subcommands that allow you to list different files or different information for the same set of files. `c $@@/~#$X@!$@!$@#$#@@Ç@$HX!@&H@$Hç@ Ř&dĒ X$D$D$$DĒ D?@ @"\B\:8 ~bBbFD!"@BBBB|""@BBBB@"8Z@bFBFD!2D""k"\:B:8 r"|">B@B "@" B@<" "D""B"8Bqætw`nݽw  ߽`0 o߽("!Ůnݽ7w$"! "&qûx$Ar#!"A"!!"$! ! |  <_ xBj  BB BB #%<BB $H&$B|@ A@ @8 <"@DČ@ >@|@  @@@ A"@DĈ@ >08h@       .x 1" !> !  1" x  ? SAME PATTERN is the same as the main RECOMPUTE command, i.e., it enumerates the files matching the same pattern as before. NEW PATTERN lets you change the pattern, i.e., browse a new set of files. FileBrowser prompts you to supply a new file name pattern and offers the old pattern as an initial default. You can either type an entirely new pattern, replacing the one offered, or delete the old pattern one character at a time by backspacing. Press the carriage return when you have finished specifying the pattern. FileBrowser then enumerates the files matching this pattern, just as with the RECOMPUTE command. You can abort the command with the Abort button, or by erasing the whole pattern (by backspacing or using control-Q) and then pressing the carriage return. NEW INFO lets you change which attributes the browser displays. It is described in the next section. SET DEPTH lets you change the depth to which FileBrowser enumerates a directory on an XNS file server. It is described in the section "SET DEPTH". SHAPE TO FIT reshapes the FileBrowser window so that all the attributes in the display are visible at once, eliminating the need to horizontally scroll the window to get at all the information. NEW INFO 1 FileBrowser displays some file attributes, or information about the file, alongside each file in the browser display. Ordinarily, the attributes displayed are the size of the file in pages, its creation date, and its author. You can change which attributes are displayed for all new FileBrowsers by changing FB.DEFAULT.INFO (see the section "Customizing FileBrowser and Using the Programmer Interface," below). You can change the attributes displayed in a particular browser window by using the NEW INFO command. To use the NEW INFO command, select it from the submenu of the RECOMPUTE command. FileBrowser opens up an additional subwindow, the Info Options window, below the display window. This subwindow contains a menu of attributes, with the current defaults shaded. Selecting a shaded item unshades it; selecting an unshaded item shades it. When you have selected all the attributes you wish to see displayed, issue either the RECOMPUTE or the NEW PATTERN command. The files will be listed with the new information you requested. The Info Options window stays open%you can close it at any time. `q@ @D 0g3@2,4H39.1g0`pHJDJ2+)H% %$JH$HHpJDJ+H! 9%$qt8H$FH$@JTJ+ H% IJ%%@@ H$AHT$0a2$1L*8  483l0`Np#@@@@@@@@qHcKJRIPYIKH`%YIJIPYIPIFHc^8?|߽_}??x0x}=_u|ne}:gLܿu\poٛ3n݀߿u_}ۻwx{o}ۻwf|?x}ۻwn݀<;wq^?<<A<!<Q 8<9) DH"< DU8DH" GG8tã< |)$D8G HȀH$D$d@< @Q$$D"HGO|$#<D!$d>D"H@H@ $ @<8gA$DD" HȀ$D@$d@<:8 G8t@ã<@ <<A<!<Q p9) DU |) @Qw D!w\xݧ<|8gAjw훷ߛwj 9߿<7j~ݿ~7j~훷ݿvۼj\x㿏<|!?@."@!1"@!!@!!<!!1<.< < 0<<>pq!>||pÀ<H Cb@@$@<H Cb@@ $<8qfx Bx@E@<Dĉ"D BO@@O<|9>D B@@@"<@ D BH@@ @"<D"xpB$H| p<8u<<<<Aϑ>xÏÏÀ<@! D$H"!!0$@<@Q D$H"!!(P$<Gtpq)DÈ!Â>|p<GPtpp@A<@<<<A>p#|8p<! H$H"D@ <Qτ HHD@ ,<À)ǂxC8p,<ÀA < <<<A>8!>|À<@!DQ$@@0$@<@QDQ$@@ P$<)0QR$x@E@<2@US@@ O<@)DR@@ @"<@QDR@@@@"<2@!8τ||@<0A<<<<AϞ|>xqpÀ<@!"@@ D @0$@<@Q"@@ D @P$<@<8t)xǀxp@|p<~<:tA<<<<AȀ8O|8p<< !"DHD@ <BQ"LHD@ ,<)"d D@"<BDHI Q"DD@2<BBDLI"!88p,<<(BB|@"< $DQH"D BB@"< $$DČ!"D C|p<DtgA<<<<8"\8K_DFo\|\DpD"bDRH$bBh0E|B|RHU5SSQ0E @B@RH$BB@0B DbD!HDLddFFDDp >8\8!Fg#B<@0@0 0@0 The Info Options items have the following meanings: CREATED The date and time that the content of the file was created. This date changes whenever the file is modified, but does not change when a file is copied or renamed. WRITTEN The date and time the file was last written to the file system. This date is never older than the Created date, but it can be newer if the file is copied, unmodified, from one file system to another. READ The date and time the file was last read. This attribute may be blank if the file has never been read. AUTHOR The login name of the person who wrote the file, or last modified it. LENGTH The length of the file in (usually eight-bit) bytes. PAGES The number of 512-byte pages in the file. On some servers, this attribute is blank if the file is empty. BYTESIZE The size (in bits) of the bytes in the file. In Xerox Lisp this is always eight, but some older computers and file servers allow other sizes. TYPE A value indicating what kind of data the file contains. The usual values of this attribute are TEXT, meaning the file contains just characters, or BINARY, meaning the file contains arbitrary data. Some servers have additional types, such as INTERPRESS for files in Interpress format. SET DEPTH 1 XNS file servers support a feature that allows enumerating a directory to a user-specifiable depth. The "depth" of a file reflects the number of subdirectories between it and the root of the enumeration, i.e., the directory or subdirectory you gave in the pattern to FileBrowser, not counting any containing wildcards (asterisks). The immediate descendants of the root are at depth 1, files in subdirectories of depth 1 are at depth 2, and so on. Ordinarily, FileBrowser enumerates a directory to the default depth, which is usually unlimited. To enumerate a directory to a different default, use the FB command with argument :DEPTH n, for some positive integer n, or T for unlimited depth. To change the depth in an existing FileBrowser, use the SET DEPTH command, a subcommand under the RECOMPUTE command. The command offers you a menu of choices: `Y>@@<\88BbD2$DBBBBdd2BbD2$D<\::t@ @ %K&$LI$$HI$$HI$$HI$$HH <"  > , 4     Ў "Global default" means use the default depth, overriding the depth at which this browser was last enumerated. "Infinite" means use no depth limit (same as depth T). "1" and "2" are common depth choices; to choose some other numeric value, select "Other" and enter the value via the displayed keypad. The SET DEPTH command does not affect the current display. It takes effect the next time you use the RECOMPUTE or FILEBROWSE commands from the same browser. During a RECOMPUTE, if a subdirectory appears at the specified maximum depth, its descendants are not enumerated; rather, the subdirectory itself appears as an entry in the browser display. This entry can be selected, just like a file, but only a small number of commands can be used on it: you can RENAME it, you can DELETE it if it has no descendants, and you can FILEBROWSE it. It has attributes, just as ordinary files do. Its page size is the size of the entire subtree rooted at the subdirectory. Note: Depth currently affects only XNS servers; all other devices ignore it and enumerate to their own default depths. In addition, due to a bug in XNS Services 10, depth is ignored for nontrivial patterns, i.e., anything but "*.*". SORT 1 The SORT command allows you to sort the files in the browser by any attribute of the files displayed in the browser. Selecting SORT brings up a menu of attributes by which to sort. This menu includes all the attributes currently displayed in the browser (such as Creation Date, Author), plus the choice Name. For some attributes you can sort forward or backwards; the choice is on a submenu, and the default is generally in the order of numerically greatest (e.g., size) or most recent (e.g., creation date) first. If the attribute you select is not Name, then the file names displayed in the browser will be reformatted to include their directory portion (if there are any subdirectories below the browser's main pattern), as the subdirectory information is no longer implicit in a file's position in the browser. The sort order Name, Decreasing Version is the default order in which browsers initially are created. 2 Customizing FileBrowser and Using the Programmer Interface 1 FileBrowsers are created programmatically by the function FILEBROWSER, or by type-in from an Executive window with the FB command. Note: All functions, variables and literals in this section are in the Interlisp package. You'll have to use the prefix IL: if you are using another Executive. FileBrowser Functions 1 (FILEBROWSER FILESPEC ATTRIBUTES OPTIONS) [Function] Creates a FileBrowser on files matching the pattern FILESPEC and displaying the values of the specified ATTRIBUTES for each file. Returns the main window of the browser. If ATTRIBUTES is missing or NIL, it defaults to the value of FB.DEFAULT.INFO (below). See FB.INFO.MENU.ITEMS for the complete set of allowable attributes. OPTIONS is a list in property-list format. The currently implemented properties and their values are as follows: :REGION A screen region in which FILEBROWSER will open the browser; if this option is omitted, FileBrowser will prompt you for a region. :DEPTH The depth to which the enumeration should be performed. Affects only XNS servers (see SET DEPTH). :TITLE The title for the main browser. If this is omitted, the title derives from FILESPEC, and is updated whenever the RECOMPUTE command is used. :MENU-TITLE The title for the command menu. Defaults to "FB Commands". :MENU-ITEMS The set of ITEMS composing the command menu. The default is the value of FB.MENU.ITEMS, which see for a description of the format. FB FILESPEC ATTR1 . . . ATTRN [Command] This is an Executive command for creating FileBrowsers. FB creates a FileBrowser on files matching the pattern FILESPEC and displaying the attributes ATTR1 through ATTRN, or the value of FB.DEFAULT.INFO if no attributes are specified. It prompts you for a window region. If a keyword appears in the command line, the remainder of the line from that point on is interpreted as the OPTIONS argument to FILEBROWSER. For example, the Executive command FB *.MCOM LENGTH CREATIONDATE browses all files on the connected directory with extension MCOM, displaying the length in bytes and creation date for each. The command FB * :DEPTH 1 browses the connected directory to depth 1, displaying the default attributes. FB always returns NIL. FileBrowser Variables 1 There are several global variables that can be altered to affect FileBrowser's behavior. You can set them by typing (SETQ VARIABLENAME NEWVALUE) to your Executive window, and can save their values with a VARS command in your initialization file. FB.DEFAULT.INFO [Variable] A list specifying which attributes should be displayed for each file. The elements of this list are the Lisp names for the attributes you want displayed. The choices are CREATIONDATE, WRITEDATE, READDATE, LENGTH, SIZE, BYTESIZE, AUTHOR, and TYPE. The attribute SIZE corresponds to the info item "Pages". For example, (SETQ FB.DEFAULT.INFO '(CREATIONDATE LENGTH)) would cause all new FileBrowsers to display exactly the attributes creation date and length in bytes for each file. FB.INFO.MENU.ITEMS [Variable] The list of items in the menu used by the NEW INFO command. Each element of the list is of the form (LABEL ATTRIBUTE "DOCUMENTATION"). If you add new attributes to this variable, you should also add corresponding entries to FB.INFO.FIELDS. FB.INFO.FIELDS [Variable] A list describing, for each attribute, the format in which it is displayed. In addition, the order of attributes in this list is the order in which they are displayed in a browser window. Each element is of the form (ATTRIBUTE HEADER WIDTH FORMAT PROTOTYPE), where ATTRIBUTE is the name of the attribute, which must be a valid attribute for GETFILEINFO; HEADER is a string displayed in the header line above the main browser window; WIDTH is the total width in pixels to allocate for printing the values of this attribute, including trailing space; FORMAT is NIL for ordinary values, DATE for attributes whose value is a date, or (FIX N) for integer values; PROTOTYPE is a string describing the widest value you expect the field to have. All values are printed left-justified in the allotted space, except for format (FIX N), used for integer values, which are right-justified in a field N pixels wide, with WIDTH$N pixels left for trailing space. If PROTOTYPE is present, then the WIDTH and N fields for the item are ignored, and the width is taken to be the width of the prototype string in the browser's font (FB.BROWSERFONT), plus two characters' worth of space between columns. FB.DEFAULT.NAME.WIDTH [Variable] The amount of space, in points, to use for displaying file names in a browser, initially 140. The name column is automatically expanded if enough names are too wide. You can set this larger if you routinely browse directories of long file names. FB.ICONFONT [Variable] The font in which the file pattern is displayed on the browser icon, initially eight-point Helvetica. The value of this variable should be a font descriptor, as returned by FONTCREATE. For example, (SETQ FB.ICONFONT (FONTCREATE 'MODERN 10 'BOLD)) FB.BROWSERFONT [Variable] The font in which the information in the main display window is printed, initially 10-point Gacha. FB.PROMPTFONT [Variable] The font in which prompt messages are printed, initially eight-point Gacha. FB.PROMPTLINES [Variable] The number of lines in the prompt window, initially three. FB.HARDCOPY.FONT [Variable] Specifies the font to use when producing hardcopy directory listings. Initially NIL, which means to use the font class DEFAULTFONT. FB.HARDCOPY.DIRECTORY.FONT [Variable] Specifies the font to use for subdirectory names, if there are any, in hardcopy directory listings. Initially NIL, which means to use the font class ITALICFONT. FB.DEFAULT.EDITOR [Variable] Specifies the editor to call by default when the main Edit command is selected. Its value is one of the following: TEDIT Use the TEdit text editor. LISP Use the Lisp structure editor, as in the Lisp Edit subcommand. NIL Use the Lisp structure editor if the selected file is a File Manager Lisp source file, TEdit otherwise. Other Names the entrypoint function of the editor of choice. The editor is called with a single argument, the file name. The initial value of FB.DEFAULT.EDITOR is TEDIT. FILING.ENUMERATION.DEPTH [Variable] The system variable that controls the default depth to which a directory is enumerated. The value is a positive integer, or T for unlimited depth. The initial value is T. Adding FileBrowser Commands 1 You can add your own commands to FileBrowser by adding items to FB.MENU.ITEMS and writing functions to handle the commands. This section describes the format of menu commands and a set of functions that are useful for the implementation of FileBrowser commands. FB.MENU.ITEMS [Variable] A list of the items that appear on FileBrowser's command menu. You can add new FileBrowser commands by adding new elements to the end of this list. After your change, any new FileBrowser will have the added commands. Each element of FB.MENU.ITEMS is of the form (LABEL YOURFN EXPLANATION''), where LABEL is the name of the command, as it is to appear in the menu; YOURFN is the name of the function to be called when the command is selected, and EXPLANATION is the explanation to be printed when the mouse cursor is held over the command. While YOURFN is Executing, the menu command is grayed out, and FileBrowser is locked'' so that no other commands or processes can access it. You can have subcommands as well if you make the menu command be of the form (LABEL YOURFN ``EXPLANATION'' (SUBITEMS item1. . . itemN)), where each itemJ is recursively of the same form as a menu command. FileBrowser calls YOURFN with four arguments: (YOURFN BROWSER KEY ITEM MENU), as follows: BROWSER is FileBrowser object in control of this browser window. KEY is the mouse key pressed (left or middle). ITEM is the menu item that was selected. MENU is the command menu. YOURFN can also be a list of two elements, (FN ARG), where ARG is an arbitrary value that is passed, unevaluated, as the fifth argument to FN. This is useful for writing one function that implements several subcommands that are similar to the original command. Any additions to FB.MENU.ITEMS should be saved with the file manager command APPENDVARS, so that the new items are added to the end of the menu, and your changes will not interfere with any changes to built-in FileBrowser commands in new FileBrowser releases. (FB.TABLEBROWSER BROWSER) [Function] Returns the TABLEBROWSER object belonging to FileBrowser BROWSER. See the documentation for the module TABLEBROWSER for further operations you might perform on one of these browsers. (FB.SELECTEDFILES BROWSER NOERRORFLG) [Function] Returns a list of table items representing the files currently selected in BROWSER. If there are no selected files, this prints No files are selected in the prompt window, unless NOERRORFLG is true, in which case this function quietly returns NIL. (FB.FETCHFILENAME ITEM) [Function] Returns the full name of the file denoted by ITEM, one of the table items returned by FB.SELECTEDFILES. (FB.PROMPTWPRINT BROWSER X1. . .XN) [Function] Prints the strings X1 through XN in BROWSER's prompt window. The item T is printed as a carriage return (i.e., a command to go to a new line). (FB.PROMPTW.FORMAT BROWSER FORMAT-STRING &REST ARGS) [Function] Prints to BROWSER's prompt window by applying the Common Lisp function FORMAT to FORMAT-STRING and ARGS. (FB.PROMPTFORINPUT PROMPT DEFAULT BROWSER ABORTFLG DONTCLEAR) [Function] Prompts for your input in BROWSER's prompt window. PROMPT is the prompt string, DEFAULT is the default answer. Returns your input as a string, or NIL if there is no input, or if it was aborted with control-E. If there is no input and ABORTFLG is true, prints "...aborted". The prompt window is first cleared (as at the beginning of a command), unless DONTCLEAR is true. (FB.ALLOW.ABORT BROWSER) [Function] Enables the Abort button on BROWSER. This should be called from the function implementing any FileBrowser command of indefinite duration. 2 Troubleshooting Problems with FileBrowser 1 When FileBrowser returns the message "No files in group FILENAMEPATTERN" when you know those files exist, the file server is probably down or rejecting connections. If this is so, your only option is to wait until the server is functioning again, and then give the Recompute command. In the case of an NS file server, the enumeration of files can also fail if you do not have sufficient access privileges; this condition is usually noted by a message in the system prompt window. When you try to expunge a file and FileBrowser displays the message "Can't expunge FILENAME," it may be because you don't have write access to the file, or someone else is reading the file. However, the most common reason is that the file is still open. Be sure to close any TEdit windows in which you may still be viewing the file. If you have recently issued a HARDCOPY command for the file, a background process may still be working on the file. If that's not the problem, you can get a list of open streams by typing (OPENP) at the prompt in an Interlisp Executive window. If one of them is open on the file you want to delete, you can close it by passing the stream to the function CLOSEF. To close all open streams (not recommended unless you're sure it is okay), you can type (MAPCAR (OPENP) 'CLOSEF). If you don't find an open stream, and the server is a Leaf or XNS file server, you may have a disagreement between Lisp and the server on what files are open, something that can occur if you had aborted an OPENSTREAM operation. Call (BREAKCONNECTION "servername") to reset the connection, then try again. [This page intentionally left blank] (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "") STARTINGPAGE# 69) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (TEXT NIL NIL (54 54 504 723) NIL))) (PAGE NIL (PAPERSIZE NIL) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD LEFT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (54 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGV) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE VERSOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))) (PAGE NIL (PAPERSIZE NIL) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD RIGHT) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO NIL) (270 15 288 36) NIL) (HEADING NIL (HEADINGTYPE FOOTINGR) (54 27 558 36) NIL) (HEADING NIL (HEADINGTYPE RECTOHEAD) (54 762 558 36) NIL) (TEXT NIL NIL (54 54 504 684) NIL))))) - T-T-T-T2 2 25,, ,, -T3 T-T-T,22 ,, ,,,2@ PAGEHEADING VERSOHEAD@ PAGEHEADING RECTOHEAD? PAGEHEADINGFOOTINGV? PAGEHEADINGFOOTINGR,, 5,MODERN TERMINAL ?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8)) MODERN  TIMESROMAN MODERNMODERN MODERN MODERN MODERN MODERN MODERNMODERN  HELVETICA  HRULE.GETFNMODERN 2  HRULE.GETFNMODERN 2   HRULE.GETFNMODERN   HRULE.GETFNMODERN   HRULE.GETFNMODERN C  HRULE.GETFNMODERN  HRULE.GETFNMODERN   HRULE.GETFNMODERN  HRULE.GETFNMODERNH HRULE.GETFNMODERN HRULE.GETFNMODERN HRULE.GETFNMODERN Z v  c_  4  (  C  HRULE.GETFNMODERN  9     9   m  A  V        5a-7 '  HRULE.GETFNMODERN a  ~  M  .  }  z  z   HRULE.GETFNMODERN Z     :  9 BMOBJ.GETFN3MODERN  \   *     q  B  R  HRULE.GETFNMODERN  h BMOBJ.GETFN3?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8))        w  /  HRULE.GETFNMODERN   (   R  F  HRULE.GETFNMODERN } 8 BMOBJ.GETFN3MODERN   HRULE.GETFNMODERN  (z BMOBJ.GETFN3MODERN  T BMOBJ.GETFN3MODERN  HRULE.GETFNMODERN B$ HRULE.GETFNMODERN J  HRULE.GETFNMODERN HRULE.GETFNMODERN HRULE.GETFNMODERN   e J BMOBJ.GETFN3?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8))   @ BMOBJ.GETFN3?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8))   @ BMOBJ.GETFN3MODERN  c    .O  HRULE.GETFNMODERN   :  BMOBJ.GETFN3MODERN  /    )-\ BMOBJ.GETFN3MODERN     HRULE.GETFNMODERN      HRULE.GETFNMODERN !   BMOBJ.GETFN3?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8))   ,  HRULE.GETFNMODERN     BMOBJ.GETFN3?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8))   @ BMOBJ.GETFN3 HELVETICA  B  K     '  |       HRULE.GETFNMODERN *  BMOBJ.GETFN3MODERN { HRULE.GETFNMODERN  BMOBJ.GETFN3 TIMESROMAN     A HRULE.GETFNMODERN    BMOBJ.GETFN3 HELVETICA      p BMOBJ.GETFN3 TIMESROMAN      C- HRULE.GETFNMODERN  BMOBJ.GETFN3 TIMESROMAN  c    <    HRULE.GETFNMODERN       HRULE.GETFNMODERN        BMOBJ.GETFN3?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8))  {  f    HRULE.GETFNMODERN  3 -  BMOBJ.GETFN3 HELVETICA 5   m M < p   #  HRULE.GETFNMODERN     BMOBJ.GETFN3MODERN . HRULE.GETFNMODERN  , f HRULE.GETFNMODERN; HRULE.GETFNMODERN HRULE.GETFNMODERN      4 , :    kkT 9I    p     $    O  HRULE.GETFNMODERN v   e  4   / t  f   n '  O  I o P  G T A   !    !       1  c   L   ;  &  t7 S;<  3$  HRULE.GETFNMODERN   .        >  L   T     N              4                :  ,  %     &     M  y     9 x   K /   ;  - 6        e       @     )         n      h  HRULE.GETFNMODERN* HRULE.GETFNMODERN8   c%rz