═══ 1. General information & Technical support ═══ RimStar Programmer's Editor Version 2.0 Copyright 1989-1993 Brian L. Smith Copyright 1993 RimStar Technology, Inc. All rights reserved internationally. Unauthorized use, duplication, or importation is a violation of applicable laws. Technical support is available Monday - Friday 9:00am - 5:00pm EST by calling 1-603-778-2500. Support is also available via e-mail on Compuserve 73150,143. Be sure to register your copy so you can receive upgrade notifications, free bug fixes and useful add-on macros as they become available. Mailing address: 91 Halls Mill Road P.O. Box 938 Newfields, NH 03856-0938 USA ═══ 2. Main menu entries ═══ Each pulldown menu is documented for the editor's default menu setup. ═══ 3. The File Menu ═══ The File choice on the main menu allows you to perform the following actions: New Creates a new untitled buffer. You must give the buffer a name before you can save it to disk. Open Presents a dialog box which allows you to select a file to load into a buffer. If the file does not exist you are prompted whether to create it or ignore the request. Close Deletes the buffer displayed in the current window. If the buffer has been modified you are presented a dialog box which allows you to save the buffer before deleting it. Save Save the buffer displayed in the current window to disk. Save as Renames the buffer displayed in the current window and then saves the buffer to disk under the new name you gave. Print Prints the entire contents or the selected text in the buffer displayed in the current window. Load macro file Presents a dialog box which allows you to select a compiled macro file to be loaded into the editor. Exit Exits the editor, displaying a dialog box if there are unsaved buffers, giving you the option of saving them before exiting. ═══ 3.1. Creating a New (Untitled) Buffer ═══ The New action on the File menu pulldown creates an UNTITLED buffer. You are prompted to give the buffer a name when you save the file to disk. ═══ 3.2. Opening a file for editing ═══ The Open... action on the File menu pulldown presents a dialog box which allows you to open an existing file(s) and load it in an edit buffer, or create a new file if the file you specify does not exist. ═══ 3.3. Close Buffer ═══ The Close action on the File menu pulldown deletes the current buffer attached to the currently active window. If the buffer has unsaved modifications you are presented a dialog box which permits you to save the buffer before deleting, delete without saving or cancel the delete buffer operation. The next buffer in the buffer list will be displayed in any window which was displaying the deleted buffer. ═══ 3.4. Saving a modified buffer to disk ═══ The Save action on the File menu pulldown saves a modified buffer to disk. If the buffer has not been modified a popup message informs you that the file has not been modified and the save request is ignored. If you are saving an UNTITLED buffer you are presented the Save As dialog box. ═══ 3.5. Save as - renaming a buffer ═══ The Save as... action on the File menu pulldown presents a dialog box which permits you to change the path and file name of the current buffer. The buffer is saved to the new path and file name when you select the OK push button. If the file already exists on disk you are asked if it is OK to over-write the existing file. ═══ 3.6. Print ═══ The Print action on the File menu pulldown prints the currently selected text in the current buffer or the entire text of the buffer, if no text is currently selected. Print requests are performed using a separate thread so you don't have to wait for the print request to complete. A popup message informs you when the print request has been completed. ═══ 3.7. Load Macro File ═══ The Load Macro File... action on the File menu pulldown presents a dialog box which allows you to select a compiled macro file to be loaded into the editor. ═══ 3.8. Exit Editor ═══ The Exit action on the File menu pulldown exits the editor. If there are unsaved buffers a dialog box is presented which allows you to choose whether to save all, save selected, cancel the exit request or exit without saving unsaved buffers. If you elect to exit with unsaved buffers you will receive a popup message giving you one final chance to cancel the exit request. ═══ 4. The Edit Menu ═══ The Edit choice on the main menu allows you to perform the following actions: Undo Undo the last editing action which moved the cursor or changed the contents of the buffer. Undo/Redo information is saved for each buffer. All your editing actions are saved. When you save the buffer to disk undo/redo information is discarded (this default can be overridden by changing the setting in the Options - Global Settings dialog box.) Redo Redo the action or actions you just backed out by using the undo command. Cut Copies the selected text to the scrap and then deletes the selected text from the buffer. Brief: If no text is selected the current line is copied to the scrap and then deleted. Copy Copies the selected text to the scrap. Brief: If no text is selected the current line is copied to the scrap. Paste Inserts the contents of the scrap at the current cursor position. Delete Deletes the selected text from the buffer. Cut (append) Appends the current selection to the existing contents of the scrap buffer and then deletes the current selection. Copy (append) Appends the current selection to the existing contents of the scrap. Insert file Presents a dialog box to select the file whose contents you want inserted at the current position in the current buffer. Import clipboard Copies the contents of the OS/2 clipboard to the scrap buffer. After performing this action you can then paste the scrap buffer into the current buffer. Export clipboard Copies the contents of the current scrap buffer to the OS/2 clipboard. ═══ 4.1. Undo ═══ The Undo action on the Edit menu pulldown undoes (backs out) the last editing command which changed the contents of the current buffer's text. Undo information is retained for all your editing actions except scrolling performed by using the mouse. Undo information is separately maintained for each edit buffer. If you accidently undo something which you wanted to keep use the Redo command to reverse the effect of your undo action. By default, when you save the buffer to disk the undo information is discarded. If you wish undo information to be retained across buffer saves, you may change the default behavior using the Global settings choice on the Options menu pulldown menu. ═══ 4.2. Redo ═══ The Redo action on the Edit menu pulldown redoes (reverses the effect of undoing) the last editing command which was undone. Redo is available only after you have used undo, if there are undoable actions (ie. you have moved the cursor or changed the buffer's contents since you last used undo) you will have to undo to the point of your last undo in order to use redo. Redo information is separately maintained along with undo information for each edit buffer. If you accidently redo something which you wanted to keep undone use the Undo command to reverse the effect of your redo action. Note: Once you redo what you have undone and then resume editing the undo/redo information for what you have just redone will be discarded (ie. you can not undo a redo after you have moved the cursor or edited the buffer.) By default, when you save the buffer to disk the redo information is discarded. If you wish redo information to be retained across buffer saves, you may change the default behavior using the Global settings choice on the Options menu pulldown menu. ═══ 4.3. Cut to Scrap ═══ Copies the selected text to the scrap and then deletes the selected text from the buffer. If no text is selected the current line is copied to the scrap and then deleted. ═══ 4.4. Copy to Scrap ═══ Copies the selected text to the scrap. If no text is selected the current line is copied to the scrap. ═══ 4.5. Paste Scrap ═══ Inserts the contents of the scrap buffer at the current position. ═══ 4.6. Delete Selected Text ═══ Deletes the selected text from the buffer. ═══ 4.7. Insert file into buffer ═══ Presents a dialog box to select the file whose contents you want inserted at the current position in the current buffer. ═══ 4.8. Import Clipboard to Scrap ═══ Copies the contents of the OS/2 clipboard to the scrap buffer. After performing this action you can then paste the scrap buffer into the current buffer. ═══ 4.9. Export Scrap to Clipboard ═══ Copies the contents of the current scrap buffer to the OS/2 clipboard. ═══ 4.10. Indent selection ═══ Indents the selected text. If no selection exists a tab is inserted. ═══ 4.11. Unindent selection ═══ Unindents the current selection. If no selection exists moves back to the previous tab position. ═══ 5. The Search Menu ═══ The Search choice on the main menu allows you to perform the following actions: Search Forward Presents a dialog box allowing you to specify the search pattern. Searches forward from the current cursor position. Search Backward Presents a dialog box allowing you to specify the search pattern. Searches backward from the current cursor position. Search Again Uses the last search pattern and direction to search for the next match in the buffer. Replace Forward Presents a dialog box allowing you to specify the search pattern and the replacement text. Searches forward from the current cursor position. Replace Backward Presents a dialog box allowing you to specify the search pattern and the replacement text. Searches backward from the current cursor position. Replace Again Uses the last search pattern, replacement text, and direction to search for the next match in the buffer to be replaced. NextError Jump to the location of the next error. Previous Error Jump to the location of the previous error. ═══ 5.1. Search Forward ═══ Presents a dialog box allowing you to specify the search pattern. Searches forward from the current cursor position. ═══ 5.2. Search Backward ═══ Presents a dialog box allowing you to specify the search pattern. Searches backward from the current cursor position. ═══ 5.3. Search Again ═══ Uses the last search pattern and direction to search for the next match in the buffer. ═══ 5.4. Replace Forward ═══ Presents a dialog box allowing you to specify the search pattern and the replacement text. Searches forward from the current cursor position. When a match is found the matching text is highlighted and a dialog box is displayed which permits you to Replace All, Replace One, Skip, Undo Last, or Cancel the operation. ═══ 5.5. Replace Backward ═══ Presents a dialog box allowing you to specify the search pattern and the replacement text. Searches backward from the current cursor position. When a match is found the matching text is highlighted and a dialog box is displayed which permits you to Replace All, Replace One, Skip, Undo Last, or Cancel the operation. ═══ 5.6. Replace Again ═══ Uses the last search pattern, replacement text, and direction to search for the next match in the buffer to be replaced. When a match is found the matching text is highlighted and a dialog box is displayed which permits you to Replace All, Replace One, Skip, Undo Last, or Cancel the operation. ═══ 5.7. Jump to Next Error ═══ Jump to error processing is performed by the "NextError" and "PrevError" commands. When you invoke these commands (default key assignments are CTRL+N for NextError and CTRL+P for PrevError) four actions are possible: 1. No error output buffer exists - the command is ignored. 2. The end (for NextError) or beginning (for PrevError) of the temporary file has been reached - no action is taken. A subsequent invocation will reposition to the beginning or end of file and display the first or last error message (ie. treats the error buffer as a circular list). 3. An error line is found and the error is in the current buffer - you are positioned to the line specified in the error message and a popup message box containing the contents of the error line message is displayed. 4. An error line is found but the file is not the current buffer's: a. If the file is currently loaded in the editor a popup message box asks you if you want to jump to the line in error in the other file. b. If the file is not currently loaded a popup message box asks you if you want to have the file loaded and then jump to the error in that file. The message box displays the file which will be jumped to/loaded if you press the "Yes" pushbutton. If you don't want to see the error in the other file press the "No" pushbutton. This makes it possible to step thru errors generated by a MAKE of multiple source files. ═══ 5.8. Jump to Previous Error ═══ Jumps to previous error. See Next Error ═══ 6. The Browse Menu ═══ The Browse choice on the main menu allows you to perform the following actions: Go to definition of symbol under the cursor Jumps you to the file and line containing the definition of the symbol under the cursor. Show all information for the symbol under the cursor Presents a dialog box showing all the symbol information available for the symbol under the cursor. Browse Definitions Presents a dialog box containing all the definition information for symbols which have been loaded into the editor from browser databases. Browse References Presents a dialog box containing all the reference information for symbols which have been loaded into the editor from browser databases. Browse Module Presents a dialog box containing all the symbols defined in the current buffer. Load a database Presents a dialog box for you to select a browser database to load into the editor. Clear all currently loaded databases Deletes all symbol information from the editor. Jump to next occurrence of the symbol last jumped to Jump to previous occurrence of the symbol last jumped to Go to absolute or relative line in current buffer ═══ 6.1. Go to Definition of Symbol ═══ If the symbol under the cursor is found in the browser information currently loaded in the editor and a defintion entry exits for the symbol the editor will jump directly to the file and line containing the definition of the symbol. ═══ 6.2. Browse Symbol Under Cursor ═══ The Symbol... action on the Browse menu pulldown menu will present a dialog box containing all the browser information available for the symbol under the cursor. If there are no records found no dialog box is displayed. See Browse Symbol Dialog Box ═══ 6.3. Browse Definitions ═══ The Definitions... action on the Browse menu pulldown menu will present a dialog box containing all the browser information available for all symbols which have definition records. See Browse Defintions Dialog Box ═══ 6.4. Browse References ═══ The References... action on the Browse menu pulldown menu will present a dialog box containing all the browser information available for all symbols which have reference records. See Browse References Dialog Box ═══ 6.5. Browse Module ═══ The Module... action on the Browse menu pulldown menu will present a dialog box containing all symbols which are defined in the current buffer. See Browse Module Dialog Box ═══ 6.6. Load Browser Database ═══ The Load database... action on the Browse menu pulldown menu will present a dialog box from which you select a database file to be loaded. You can also load individual module browser files (file extension ._sb.) To have the dialog display the individual module files specify *._sb in the entry field for the filename and press Enter. ═══ 6.7. Clear Browser Data ═══ The Clear database action on the Browse menu pulldown menu will delete from the editor all currently loaded symbol information. ═══ 6.8. Jump to Next Use of Symbol ═══ The Next action on the Browse menu pulldown jumps you to the next location of the current symbol. The current symbol is set when you initially jump to a symbol. If no further information records exist for the symbol you will jump to the first record found for the symbol. ═══ 6.9. Jump to Previous Use of Symbol ═══ The Previous action on the Browse menu pulldown jumps you to the previous location of the current symbol. The current symbol is set when you initially jump to a symbol. If no previous information record exists for the symbol you will jump to the last record found for the symbol. ═══ 6.10. Go to line ═══ The Goto line... action on the Browse menu pulldown menu will present a dialog box in which you can enter the absolute line number you wish to jump to in the current buffer. You may also specify a relative jump by preceeding the number with a plus or minus sign. ═══ 7. The Buffer Menu ═══ The Buffer choice on the main menu allows you to perform the following actions: Next Brings the next buffer into the current window. Previous Brings the previous buffer into the current window. Execute Allows you to execute an associated program if an association exists for the buffer's file extension. This association is established by selecting the Associate action on the Options pulldown menu or calling the ConfigAssociate function. Close Deletes the buffer displayed in the current window. The buffer is only removed from the editor, it is not deleted from the disk. If the buffer has been modified you are presented a dialog box which allows you to save the buffer before deleting it. List Presents a dialog box which allows you to perform various actions on the buffers currently loaded in the editor. Following the above choices is a list of all buffers. The buffer being displayed in the current window has a check mark in front of it. Selecting one of these displays that buffer in the current window. Buffer names followed by an asterisk indicate that the buffer has unsaved changes. ═══ 7.1. Bringing next buffer into window ═══ The Next action on the Buffer menu pulldown attaches the next buffer in the list of buffers to the currently active window. If there is no next buffer the first buffer in the list is attached. ═══ 7.2. Bringing previous buffer into window ═══ The Previous action on the Buffer menu pulldown attaches the previous buffer in the list of buffers to the currently active window. If there is no previous buffer the last buffer in the list is attached. ═══ 7.3. Executing an Associated Program ═══ The Execute... action on the Buffer menu pulldown is used to invoke an executable program based on the current buffer's file extension. If more than one executable has been associated with the file extension, you are presented a dialog box which permits you to select which program you want to start. Output from the invoked program is redirected to an edit buffer as the program executes, allowing you to monitor its progress. A window is created for the output buffer if one does not already exist. See Associate for further information on associating programs with file extensions. ═══ 7.4. Close Buffer ═══ The Close action on the Buffer menu pulldown closes (deletes) the current buffer attached to the currently active window. If the buffer has unsaved modifications you are presented a dialog box which permits you to save the buffer before deleting, delete without saving or cancel the delete buffer operation. The next buffer in the buffer list will be displayed in any window which was displaying the deleted buffer. ═══ 7.5. Buffer List ═══ Presents a dialog box which allows you to perform various actions on the buffers currently loaded in the editor. ═══ 8. The Window Menu ═══ The Window choice on the menu allows you to perform the following actions: Cascade Causes all edit windows (except for minimized windows) to be sized and positioned from the upper left corner of the main window towards the lower right corner of the main window overlapping each other so that just the title bar of overlapped windows is displayed. The current window becomes the topmost window. Tile across Causes all edit windows (except for minimized windows) to be sized to fill the main window without overlapping each other. The windows are sized in such a way as to give windows greater width than height. Tile down Causes all edit windows (except for minimized windows) to be sized to fill the main window without overlapping each other. The windows are sized in such a way as to give windows greater height than width. Keep tiled When this selection is checked, resizing the main window, closing or creating an edit window causes all edit windows to be re-tiled as above. The tiling orientation (across or down) is that of the default or the last tiling orientation selected using the Tile across or Tile down actions. Keep cascaded When this selection is checked, resizing the main window, closing or creating an edit window causes all edit windows to be re-cascaded as described above. Next Makes next window the current (active) window. This window is made the topmost edit window. If there is only one edit window this action is ignored. Previous Makes previous window the current (active) window. This window is made the topmost edit window. If there is only one edit window this action is ignored. New Duplicates the current window, creating a new edit window of the same size and position as the current window. The new window displays the same buffer as the current window. The new window becomes the current window. If either the Keep tiled or Keep cascaded item is checked then all edit windows are readjusted accordingly. Close Closes the current window. Does not delete the buffer, just the window. Following the above items is a list of all edit windows (shows the name of buffer associated with the window) Selecting one of these items makes that window the current (active) window. ═══ 8.1. Cascade Windows ═══ Causes all edit windows (except for minimized windows) to be sized and positioned from the upper left corner of the main window towards the lower right corner of the main window overlapping each other so that just the title bar of overlapped windows is displayed. The current window becomes the topmost window. ═══ 8.2. Tile Across ═══ Causes all edit windows (except for minimized windows) to be sized to fill the main window without overlapping each other. The windows are sized in such a way as to give windows greater width than height. ═══ 8.3. Tile Down ═══ Causes all edit windows (except for minimized windows) to be sized to fill the main window without overlapping each other. The windows are sized in such a way as to give windows greater height than width. ═══ 8.4. Keep Tiled ═══ When this selection is checked, resizing the main window, closing or creating an edit window causes all edit windows to be re-tiled as above. The tiling orientation (across or down) is that of the default or the last tiling orientation selected using the Tile across or Tile down actions. ═══ 8.5. Keep Cascaded ═══ When this selection is checked, resizing the main window, closing or creating an edit window causes all edit windows to be re-cascaded as described above. ═══ 8.6. Next Window ═══ Makes next window the current (active) window. This window is made the topmost edit window. If there is only one edit window this action is ignored. ═══ 8.7. Previous Window ═══ Makes previous window the current (active) window. This window is made the topmost edit window. If there is only one edit window this action is ignored. ═══ 8.8. New Window ═══ Duplicates the current window, creating a new edit window of the same size and position as the current window. The new window displays the same buffer as the current window. The new window becomes the current window. If either the Keep tiled or Keep cascaded item is checked then all edit windows are readjusted accordingly. ═══ 8.9. Close Window ═══ Closes the current window. Does not delete the buffer, just the window. ═══ 9. The Keys Menu ═══ The Keys choice on the main menu allows you to perform the following keystroke macro actions: Play Plays back the last loaded or recorded keystroke macro. Record Toggles recording of keystrokes on or off, if the menu item has a check in front of it - keystroke recording is on, and selecting the item will complete the recording of that keystroke macro. Save keystroke macro Presents a dialog box for you to give a filename in which to save the current keystroke macro. Load keystroke macro Presents a dialog box for you to give a filename from which to load a previously saved keystroke macro recording. ═══ 9.1. Play Keystroke Macro ═══ Plays back the last loaded or recorded keystroke macro. ═══ 9.2. Toggle Recording of Keystroke Macro ═══ Toggles recording of keystrokes on or off, if the menu item has a check in front of it - keystroke recording is on, and selecting the item will complete the recording of that keystroke macro. ═══ 9.3. Save Keystroke Macro ═══ Presents a dialog box for you to give a filename from which to load a previously saved keystroke macro recording. ═══ 9.4. Load Keystroke Macro ═══ Presents a dialog box for you to give a filename from which to load a previously saved keystroke macro recording. ═══ 10. The Options Menu ═══ The Options choice on the main menu allows you to perform the following configuration actions: Global settings Set default tab stops, backups, state save, autosave, regular expression syntax, and keyboard speed. Fonts Set the default font to use for displaying buffer text. Colors Set the foreground and background colors for displaying buffer text. Cursors Set the cursor size and type for insert / overtype and virtual insert / virtual overtype edit modes. Associate Associate executables with file name extensions for compiling within the editor. ═══ 10.1. Configure Global Settings ═══ Set default tab stops, backups, state save, autosave, regular expression syntax, and keyboard speed. ═══ 10.2. Configure Fonts ═══ Set the default font to use for displaying buffer text. ═══ 10.3. Configure Colors ═══ Set the foreground and background colors for displaying buffer text. ═══ 10.4. Configure Cursors ═══ Set the cursor size and type for insert / overtype and virtual insert / virtual overtype edit modes. ═══ 10.5. Associating Programs with File Extensions ═══ The Associate... choice on the Options pulldown menu allows you to tell the editor which executable program(s) (compilers/make, etc.) to associate with a particular filename extension. When you select this option a dialog box File Extension Associations showing the current file extensions and program associations is displayed. Add an extension To add a new filename extension click or press the Add... pushbutton under the Extension list box. A dialog box will prompt you for the filename extension, enter the extension including the leading dot/period (eg. .c or .asm or .rc etc.) and press the OK pushbutton. The extension is added to the Extension listbox. If you change your mind and don't want to add an extension press the Cancel pushbutton. Delete an extension To delete a filename extension select the extension you wish to delete in the Extension list box then click or press the Delete... pushbutton under the Extensions list box. A dialog box prompts to confirm that you wish to proceed. Pressing Yes deletes the extension and all executables associated with the extension. Pressing No cancels the delete operation. Adding an executable program to an extension Select the filename extension in the Extension list box with which to associate with the new program you are about to add. To add (associate) a new program to the extension currently selected in the Extension listbox press the Add... pushbutton under the Associated programs list box. A dialog box prompts you for the following information: Program title Enter a descriptive title for this program. This description appears in the Associated programs list box and is used to build the title of the window which will display output from executing the program. For example: MSC 6.0 Syntax Check Only Path and file name Enter the full path and file name including the extension to the program to be executed. (If this program is in your PATH environment you may omit the path.) Batch files (.CMD) requires the executable CMD.EXE. Specify the batch file name in the parameters field preceeded with /C. For example: CMD.EXE C:\OS2\CMD.EXE Working directory If you wish to have the current working directory changed before invoking the program enter the directory path to be switched to. This field is optional. Parameters Enter the command line arguments to pass to the program. To have the path and filename excluding the file's extension of the current buffer (file) inserted in the arguments string passed to the program enter %s at the appropriate position in the parameter field. Please note that the extension is not inserted so if the program requires the extension you must place it after the %s ( eg. %s.c .) the editor will substitute the full path and filename excluding the extension for the %s. You may omit the %s from the parameter string and the editor will use the Parameters just as you specify them. Parameters are optional. Some examples follow: -c -AL %s.c For CL.EXE -mx -zi %s.asm; For MASM.EXE mypjt.mak For MAKE.EXE "/C DIR *.C" For CMD.EXE "/C BATCH.CMD" For CMD.EXE Regular Expression You can use this field to enter a regular expression which will match an error line output by the program. The editor will use this regular expression for Next Error, Prev Error, and Jump To Error processing. The regular expression must be constructed so that: 1. the first group ie. { } [Brief syntax] or ( ) [Unix syntax] matches the pathname of the file containing the error 2. the expression matching the line number is immediately preceeded by \c. For example: Brief syntax: {?+} (\c[0-9]+) : Unix syntax: {.+} \(\c[0-9]+\) : will match an error line formatted like this: d:\mypjt\main.c (101) : error - syntax error, missing ; When all fields are completed press the OK pushbutton to add this entry to the Associated programs list box. If you change your mind and don't want to perform the add, press the Cancel pushbutton. Changing an executable program's information Select the extension and program in their respective list boxes and press the Change... pushbutton under the Associated programs list box. A dialog box will present you with the current settings of the fields for this entry. (See above for a description of the fields.) Change any fields that you wish and press the "OK" pushbutton when you are satisfied with your changes. If you change your mind and don't want to save the changes you have made, press the Cancel pushbutton, any changes you have made are discarded. Copying an associated program To copy an Associated programs entry select the entry you wish to copy in the Associated programs list box and press the Copy... pushbutton. You are presented a dialog box which allows you to choose which file extension you wish to copy the entry to. Select the file extension and press the OK pushbutton. The entry is added to the list of associated programs for the extension you selected. If you change your mind and don't want to perform the copy operation press the Cancel pushbutton. A fast way to add multiple entries for an extension is to add the first and then copy the first as many times as you wish and then change the copied entries. Deleting an associated program Select the extension and program in their respective list boxes and press the Delete... pushbutton under the Associated programs listbox. You are prompted to confirm that you really want to perform the deletion, press the Yes pushbuton to perform the deletion or No pushbutton to cancel the delete operation. When you complete your modifications to the File Extension Association dialog box you have two choices: Press the OK pushbutton to permanently save the changes to the configuration file. OR Press the Cancel pushbutton which does not perform a save to the configuration file, the changes you have made are retained until you change them again or exit the editor. You can go back at a later time and permanently save them by selecting the OK pushbutton. ═══ 11. Compile and Jump to Error ═══ When you invoke the "ExecAssoc" command, either from the "Buffer" pulldown ("Execute..." option) or via a keystroke association one of three things will occur. 1. If the file extension for the current buffer (file) is not found in the file extension associations data you receive a popup message telling you that no association exists. 2. If only one association exists for this extension the editor immediately executes the associated executable. 3. If more than one association exists the editor presents a dialog box from which you may select which executable association you want to execute. The dialog box shows the "Program title" which you entered in the "Associate..." dialog box. Select the title you wish to execute and press the "Execute" pushbutton. Press the "Cancel" pushbutton if you change your mind and don't want to execute any of the selections. When the editor invokes an executable the following actions are performed: o If the current buffer has been modified, it is written to disk. o A temporary buffer and a window for this buffer is created, if one does not already exist, for output from the executing program. The window's title is a concatenation of the "Program title" and the full path and filename of the current buffer. Note: stdout and stderr are both redirected to this window. o Associates the temporary buffer with the current buffer. o Locks the current buffer and the temporary buffer so that they can not be deleted until the program completes execution. You can delete the windows but not the buffers. o Creates a thread which executes the program and redirects its output to the temporary buffer. The program is exec'd asynchronously to the editor. o Creates a thread which waits for the completion of the executing program. While the program is executing, its output to stdout and stderr is redirected to the temporary buffer (and displayed in the window attached to this buffer, if any) as the program executes so you can monitor the progress of the executing program. When the program completes execution the following actions occur: o A popup message notifies you of the completion and if the program returned with a non-zero result code. o The temporary buffer and the buffer associated with the temporary buffer are unlocked. You may now delete these buffers if you wish. o You may invoke multiple concurrent program executions, but each must be on an unlocked buffer (ie. you can not start two executions on the same buffer, you must wait until the first completes before starting another). If you attempt to do so you will receive a message telling you the buffer is locked by a process. JUMP TO ERROR The editor supports jumping to errors for programs which format their error messages in the same way as Microsoft compiler products, ie. pathname(error line) : text {error}|{warning} You can also specify a regular expression to match the error line format for most compilers. In the following discussion error line includes lines containing warning messages as well as errors. Jump to error processing is performed by the "ErrNextError" and "ErrPrevError" commands. When you invoke these commands (default key assignments are CTRL+N for ErrNextError and CTRL+P for ErrPrevError) four actions are possible: 1. No error output buffer exists - the command is ignored. 2. The end (for Next Error) or beginning (for Previous Error) of the temporary file has been reached - no action is taken. A subsequent invocation will reposition to the beginning or end of file and display the first or last error message (ie. treats the error buffer as a cicular list). 3. An error line is found and the error is in the current buffer - you are positioned to the line specified in the error message and a popup message box containing the contents of the error line message is displayed. 4. An error line is found but the file is not the current buffer's: a. If the file is currently loaded in the editor a popup message box asks you if you want to jump to the line in error in the other file. b. If the file is not currently loaded a popup message box asks you if you want to have the file loaded and then jump to the error in that file. The message box displays the file which will be jumped to/loaded if you press the "Yes" pushbutton. If you don't want to see the error in the other file press the "No" pushbutton. This makes it possible to step thru errors generated by a MAKE of multiple source files. ═══ 12. The Help Menu ═══ The Help choice on the menu allows you to get help on the following items: Help for help Help on how to use the Help system. Extended help Displays extended help (if it is available) for a topic. Keys help Gives help on editor functions and key assignments Help index Presents an index of help entries for the editor ═══ 12.1. Help for Using Help ═══ Select Help for help on the Help pull-down to get help on using the help system. ═══ 12.2. Help for Extended Help ═══ Select Extended help on the Help pull-down to get further help information, if available, on a topic. ═══ 12.3. Help for Keys help ═══ Select Keys help on the Help pull-down for help on the keys you use to perform a specific task. ═══ 12.4. Help for Help index ═══ Select Help index on the Help pull-down to see the help index for the RimStar Editor. ═══ 13. Dialog boxes ═══ Dialog boxes are used to gather needed information to perform the operation you have requested. ═══ 13.1. Open for editing ═══ The Open for editing dialog is used to load files into the editor. You may select multiple files from the files list-box. Each file you select is loaded into an edit buffer. The last file loaded becomes the current buffer. When the dialog opens you are presented a list of files in the editor's current working directory. If you enter a wildcard pattern in the filename field and press OK the files list will update to show only those files matching the wildcard specification. The last wildcard specification is remembered throughout your editing session. To change the current directory double-click on the subdirectory you want in the directories list box. The editor will remember the subdirectory if you check the Make default directory check box. The Open in current window check box tells the editor not to create a new window for each file you have selected. Each file is loaded into a buffer and the last file selected in the list will become the current buffer displayed in the current window. If you want the file to be loaded so that it can not be modified check the Read only check box. If the file on disk is read only the file will be loaded as read only whether this setting is specified or not. This setting does not affect the read only status of the file on disk even when the file is being newly created. By default the editor replaces carriage-return line-feed sequences with a single line-feed when it loads a file and translates a single line-feed to a carriage-return line-feed pair when it writes the file back to disk. If you do not want the editor to perform this translation (eg. you are editing a binary file or a UNIX file) check the No translation check box. ═══ 13.1.1. Open in current window ═══ The Open in current window check box tells the editor not to create a new window for each file selected in the Open for editing dialog. This setting can be permanently saved using the Editor configuration dialog box Open files in same window setting. ═══ 13.1.2. Make default directory ═══ The Make default directory check box setting in the Open files dialog changes the current working directory of the editor to the directory you have selected. The next time you invoke the Open files dialog it will display the files in this directory. If this item is not checked the editor will return to its original current working directory when you are finished. This may affect where the save editor state file is placed when you exit the editor if you have specified an ambiguous path for the state file eg. .\rs_state.ini. ═══ 13.1.3. Read only ═══ If you want the files you have selected to be loaded so that they can not be modified check the Read only check box in the Open for editing dialog. If the file on disk is read only the file will be loaded as read only whether this setting is specified or not. This setting does not affect the read only status of the file on disk even when the file is being newly created, it only affects whether the editor will permit you to modify it. ═══ 13.1.4. No translation ═══ The No translation checkbox item determines how the editor loads and saves the files you have selected. When it is checked the editor does not translate carriage-return line-feed sequences to a single line-feed, the file is read in just as it appears on disk. With no translation set for the file when the editor writes the file back to disk it does not add a carriage-return before writing the line-feed. This setting affects only the files you have selected for loading in the Open for editing dialog, other files retain their original settings. Note: For macro writers: Sets the SYSTEM_RAW flag. ═══ 13.2. Save As ═══ The Save As dialog box allows you to change the name of the current buffer(file.) When you press OK the file is immediately saved under the new file name. If a buffer already exits in the editor by the same name the request will fail. You must delete that buffer and then perform the action again. If a file already exists on disk with this name you will be prompted as to whether or not you want to over-write the existing file. ═══ 13.3. Exiting with unsaved changes ═══ The Exiting editor dialog is displayed when you have requested to exit the editor but there are buffers with unsaved changes. This dialog allows you to choose the buffers you wish to save before the editor exits. You can save all the displayed buffers, select those you wish to save, or save none. If you do not save all the buffers the editor will display a message notifying you that you are about to exit with unsaved buffers, and gives you one final chance to cancel exiting the program. o Save all o Save selected files o Exit now ═══ 13.3.1. Save All ═══ The Save All push button will save all the buffers (files) displayed in the list box. If an Untitled buffer is in the list you will be presented the Save As dialog box to give the file a new name. This is the default action that will be performed if you press Enter for the Exiting editor dialog. ═══ 13.3.2. Save Selected Files ═══ The Save Selected Files push button in the Exit editor dialog causes the editor to save the files you have selected in the list box to disk before exiting the program. ═══ 13.3.3. Exit Now ═══ The Exit Now push button in the Exit editor dialog tells the editor that you don't want to save any of the modified buffers. The editor will still give one final message before exiting the program. ═══ 13.4. Search forward & backward dialogs ═══ The Search dialog allows you to search for text using a simple text search or using regular expressions. The search is performed from your current position in the buffer unless you check the Search All Buffers check box. The search is case sensitive by default, check the Ignore case check box to perform a case insensitive search. Previous search strings are saved (up to 50) and can be displayed by pressing the down arrow key or clicking on the drop down arrow. o Ignore regular expressions o Ignore case o Search all buffers o Search forward o Regular expression syntax ═══ 13.4.1. Ignore regular expressions ═══ The Ignore regular expressions check box when checked treats the search expression as a string. No characters in the expression are interpreted as special regular expression characters. See regular expression syntax for more information on using regular expressions. ═══ 13.4.2. Ignore case ═══ The Ignore case checkbox, when checked, causes the search to be performed without regard to upper-case or lower-case distinctions. ═══ 13.4.3. Search All Buffers ═══ The Search All Buffers checkbox enables the editor to search for the expression in all currently loaded buffers. When searching forward the search in each buffer begins at the start of the buffer, when searching backwards the search begins at the end of each buffer. The current position in the buffer is not changed unless a match is found. ═══ 13.4.4. Search forward ═══ The Search forward checkbox when checked, means the search will be performed from the current position in the buffer towards the end of the buffer. When not checked, searches backwards from your current position towards the start of the buffer. ═══ 13.5. Replace (Translate) dialog ═══ The Replace dialog allows you to search for text matching your search expression and replace it with the replacement you specify. The search can be a simple text search or use regular expressions. If you are using regular expressions you can use portions of the text that is matched in the replacement string. o Regular expression syntax o Ignore regular expressions o Ignore case o Search all buffers o Search forward ═══ 13.5.1. Ignore regular expressions ═══ The Ignore regular expressions check box when checked treats the search expression as a string. No characters in the expression are interpreted as special regular expression characters. When this option is checked you can not use portions of the matched text in the replacement expression. See regular expression syntax for more information on using regular expressions. ═══ 13.5.2. Ignore case ═══ The Ignore case checkbox, when checked, causes searches to be performed without regard to upper-case or lower-case distinctions. ═══ 13.5.3. Search All Buffers ═══ The Search All Buffers checkbox enables the editor to search for the expression in all currently loaded buffers. When searching forward the search in each buffer begins at the start of the buffer, when searching backwards the search begins at the end of each buffer. The current position in the buffer is not changed unless a match is found. ═══ 13.5.4. Search forward ═══ The Search forward checkbox when checked, means the search will be performed from the current position in the buffer towards the end of the buffer. When not checked, searches backwards from your current position towards the start of the buffer. ═══ 13.5.5. Replace Confirmation Dialog ═══ The Search Replace Confirmation dialog box is displayed when text is found that matches your search expression. The matching text is highlighted so you can see what will be replaced. You have the following options available to you: o Perform the replacement o Skip this match, find next match o Replace all - replace this and all following matches o Undo the last replacement o Cancel the entire action ═══ 13.6. Goto line ═══ Enter the absolute line number you wish to jump to in the current buffer. You may also specify a relative jump by preceeding the number with a plus or minus sign. ═══ 13.7. Browse Definitions or References ═══ The Browse Definitions and the Browse References dialog boxes show all the symbols for which there are definition records or reference records respectively. Select a symbol from the list or enter a symbol in the entry field. The listbox to the right of the symbol list shows you the records for that symbol. You can select the record you want to jump to or just press the enter key if you want to jump to the first record in the list. ═══ 13.8. Browse Symbol ═══ The Browse Symbol dialog box shows you all the records available for the symbol under the cursor. Each record in the list box shows you the line the symbol is used on, whether it is a defining use or a reference to the symbol, and the full pathname of the module. To jump to a particular usage of the symbol: o Select the record in the list box. o Press the Jump push button or press Enter. ═══ 13.9. Browse Module ═══ The Browse Module dialog box shows you all the functions and global variables defined the current buffer. You can jump to any symbol's definition by selecting it in the list box and pressing the Jump push button or pressing Enter. ═══ 13.10. Run Associated Program ═══ The Run Associated Program dialog box is presented when you have more than one program associated for the file extension of the current buffer. Select which program you want to run in the list box and press the Execute push button or press Enter. If the current buffer has been modified, it will be saved to disk before the program is invoked. Note: if you are running a make file that will affect other buffers you have loaded in the editor and those buffers have been modified, you should save them yourself before running the make. When the buffer has been saved the program is started. The output from the program is piped into a temporary edit buffer as the progrm executes. A window is created to display this output buffer. When the program completes you will be notified by a popup message. ═══ 13.11. Delete Buffer ═══ The Delete Buffer dialog box is presented when you request deletion of a buffer that has been modified. You can: o Save the buffer before deleting it o Delete the buffer, discarding any changes you have made since you last saved the buffer o Cancel the deletion request ═══ 13.12. Buffer List ═══ The Buffer List dialog box may be used to: o Select a different buffer into the current window o Write one or more modified buffers to disk o Delete one or more buffers from the editor ═══ 13.12.1. Select ═══ Pressing the Select push button causes the buffer selected in the list box to become the current buffer in the current window. If no buffer is selected in the list box, no action is taken. ═══ 13.12.2. Write ═══ Pressing the Write push button causes all selected buffers in the list box to be written to disk. If no buffer is selected in the list box, the list is refreshed. Since the editor uses multiple threads to perform file saves, the list box will not reflect that the buffer has been saved if the thread doing the save has not completed by the time the list box is refreshed. It can take a number of seconds to save the file. Pressing the push button again with no buffers selected will update the list box, showing you which buffers still have the modified flag set. The modified flag is not reset until the buffer is successfully written to disk. ═══ 13.12.3. Delete ═══ Pressing the Delete push button causes all selected buffers in the list box to be deleted from the editor. If a buffer has been modified you will be prompted whether you want save the buffer before deleting it, delete it without saving the changes or cancel deleting that buffer. ═══ 13.13. Editor Configuration ═══ The Editor Configuration dialog box is used to change a number of configuration setting for the editor. You can: o Set whether tabs are used, or the appropriate number of spaces inserted when you press the Tab key. o Set the default tab stops, or the tab stops for the current buffer. o Determine whether backup files are created when you save a buffer to disk. o Set the directory in which the backup files are placed. o Enable or disable the state save/restore feature of the editor. o Enable or disable the autosave feature of the editor. o Change the appearance of certain editor control windows. o Determine whether the editor retains undo/redo information across file saves. o Determine how the editor creates windows when loading a file, jumping to errors, or browsing. o Select which regular expression syntax to use. o Change the speed of the keyboard. o Disable or change the orientation of the tool bar. o Save the current editor configuration to the configuration file. ═══ 13.13.1. Tab Handling ═══ When the Use tab characters check box is checked the editor will insert tab characters into the file, and use tabs & spaces to fill virtual space. When this box is not checked, the appropriate number of spaces are inserted to reach the next tab stop or fill virtual space. ═══ 13.13.2. Setting Tab Stops ═══ Tab stops can be set at varying column positions. Specify the columns in which you want a tab stop, column 1 is by default the first tab stop. The editor uses the distance between the last two tabs stop settings to set tab stops at the same interval for the remainder of the line, up to the maximum tab stop column (256 by default.) If you want tab stops set every 8 characters you only need to specify one tab stop column - column 9. You could also specify 9, 17. To set tabs every 3 columns you could specify one tab stop column - column 4, and the editor will set the remainder at 7, 10, 13, etc. Changing the maximum tab stop column can only be done from the macro language, see BufSetMaxTabColumn in the Macro Reference Guide. ═══ 13.13.3. Backing Up Your Work ═══ If you check the Make backups check box, the editor will create a backup before saving the buffer to disk. Backup files are given a .BAK file extension. ═══ 13.13.4. Setting the Backup Directory ═══ Enter the path to the directory where you want the editor to save backups of your files. If you want backups placed in the same directory as the file leave the field blank. A trailing backslash is not required. ═══ 13.13.5. Restoring the State of the Editor ═══ When this check box is checked the editor will save the current state of the editor on exit from the program. The buffers and window positions are saved along with: o Search, Replace, and Execute Command history o Keep tiled or cascaded settings o Open in same window settings The next time you invoke the editor without specifying any files to load, the editor will use the state file to restore the editor to the previous state. ═══ 13.13.6. Setting the State Restore Pathname ═══ Enter the path and filename to use for saving the editor state information. You can specify a relative path like .\RS_STATE.INI to create a state file in the current working directory, or specify a fixed path like C:\RSE\RS_STATE.INI. ═══ 13.13.7. Enabling Autosave ═══ The Autosave feature is enabled when the Autosave checkbox is checked. The autosave feature will periodically save any buffers that have been modified since the last time autosave performed its check. The buffers are written to a file in the same directory as the buffer with a modified file extension. If the buffer has no file extension the extension autosave uses is .__! If the buffer's extension is a single character, '_!' is appended to the extension. If the buffer's extension is two characters long, '!' is appended to the extension. If the buffer's extension is three characters long the last character is replaced by an '!', eg. main.cpp would be autosaved as main.cp! ═══ 13.13.8. Setting the Autosave Interval ═══ Enter the interval (number of minutes) autosave should wait before checking for modified buffers. Valid values are 1 to 99. Once a file has been autosaved it will not be autosaved again unless further modifications are performed. Autosave files are deleted when you save the buffer to disk or delete the buffer from the editor. ═══ 13.13.9. Horizontal Scroll Bar Position ═══ The Horiz Scroll Bar in Left half checkbox determines the positioning of the horizontal scroll bar. When checked the horizontal scroll bar is placed in the botton left of the window, when not checked the status information is placed in the bottom left and the horizontal scroll bar in the bottom right of the window. ═══ 13.13.10. Flush undo/redo on buffer write ═══ The Flush undo/redo on buffer write checkbox determines whether or not the editor discards undo information when you save the buffer to disk. If you disable discarding the undo information, then you will be able to undo changes you have made to a buffer even after you have saved the buffer to disk. Undo information is always discarded when you delete the buffer or exit the editor. Keeping undo information can cause very large swap file requirements if you do extensive editing. ═══ 13.13.11. Open files in same window ═══ The Open files in same window check box, when checked, tells the editor not to create a new window for each file loaded into the editor. This setting can be over-ridden in the Open for editing dialog box. Jump to error - use same window The Jump to error - use same window check box determines how the editor creates windows when you jump to errors. If this box is checked, when you jump to an error that is not located in the current buffer, the editor will display the buffer containing the error in the current window, if the buffer containing the error does not already have a window attached to it. When this check box is not checked, the editor will create a new window for the buffer containing the error, if that buffer is not already attached to a window. Browse - use same window The Browse - use same window check box determines how the editor creates windows when you jump to a symbol. If this box is checked, when you jump to a symbol that is not located in the current buffer, the editor will display the buffer containing the symbol in the current window, if the buffer containing the symbol does not already have a window attached to it. When this check box is not checked, the editor will create a new window for the buffer containing the symbol, if that buffer is not already attached to a window. ═══ 13.13.12. Set Brief Regular Expression Syntax ═══ Sets the regular expression syntax to be Brief compatible. ═══ 13.13.13. Set Unix Regular Expression Syntax ═══ Sets the regular expression syntax to be Unix compatible. ═══ 13.13.14. Set Keyboard Repeat Rate ═══ Enter the rate (chars per second) the keyboard should generate characters when a key is held down. ═══ 13.13.15. Set Keyboard Repeat Delay ═══ Enter the delay (in milliseconds) the keyboard should wait before automatically repeating when a key is held down. ═══ 13.13.16. Hide/Show the Tool Bar ═══ Checking this check box will turn off the display of the tool bar. ═══ 13.13.17. Orient Tool Bar Vertically ═══ The Vertical radio button, when selected, positions the tool bar vertically along the left side of the main window. ═══ 13.13.18. Orient Tool Bar Horizontally ═══ The Horizontal radio button, when selected, positions the tool bar below the main menu. ═══ 13.13.19. Permanently save changes ═══ The Permanently save changes checkbox, when checked, will save the information in the editor's configuration file. If not checked, the changes you make only affect the current session. ═══ 13.14. Font Selection ═══ The Font Selection dialog box is used to set the font used to display the text of a buffer. Select the font face and size. Check the Permanently save selection check box to save your font selection to the editor configuration file. Only monospaced fonts are supported by the editor. ═══ 13.15. Color Settings ═══ The Color Settings dialog box is used to change the foreground and background colors used to display the text of a buffer. ═══ 13.16. Cursor Settings ═══ The Cursor Settings dialog box is used to change the size, shape and appearance of the cursor for each of the four modes it can display. ═══ 13.17. File Extension Associations Dialog ═══ The File Extension Associations dialog box is used to configure the editor to run compilers and other utilities based on the file extension of the current buffer. This dialog displays the current associations and allows you to add, change or delete associations. When you invoke the ExecAssoc function (from the keyboard, the Execute item on the Buffer pulldown menu, or from a macro) the editor uses this information to execute a program for the current buffer. If more than one association has been set up for a particular file extension the editor will display a dialog box containing the titles of the programs which are associated with the file extension of the current buffer. You can select which program you want to execute from this dialog. The dialog gets it information from the associations you set up using the File Extension Associations dialog. Using this dialog you can: o Add a file extension o Delete a file extension o Associate a program with a file extension o Change the program information for an existing association o Delete a program associated with a file extension o Copy program information for an extension to another extension ═══ 13.17.1. Add Extension Dialog ═══ The Add Extension dialog box is presented when you press the Add push button under the file extenstions list box. To add a new filename extension click or press the Add... push button under the Extension list box. A dialog box will prompt you for the filename extension, enter the extension including the leading dot/period (eg. .c, .asm or .rc etc.) and press the OK pushbutton. The extension is added to the Extension listbox. If you change your mind and don't want to add an extension press the Cancel push button. ═══ 13.17.2. Deleting an Extension ═══ To delete a filename extension select the extension you wish to delete in the Extension list box then click or press the Delete... push button under the Extensions list box. A dialog box prompts to confirm that you wish to proceed. Pressing Yes deletes the extension and all programs associated with the extension. Pressing No cancels the delete operation. ═══ 13.17.3. Add Program Dialog ═══ The Add Program dialog box is used to add a new program association to a file extension. Select the filename extension in the Extension list box with which to associate with the new program you are about to add. To add (associate) a new program to the extension currently selected in the Extension listbox press the Add... push button under the Associated programs list box. A dialog box prompts you for the following information: Program title Enter a descriptive title for this program. This description appears in the Associated programs list box and is used to build the title of the window which will display output from executing the program. For example: IBM C Set/2++ Syntax Check Only Path and file name Enter the full path and file name including the extension to the program to be executed. (If this program is in your PATH environment you may omit the path.) Batch files (.CMD) requires the executable CMD.EXE. Specify the batch file name in the parameters field preceeded with /C. For example: CMD.EXE C:\OS2\CMD.EXE Working directory If you wish to have the current working directory changed before invoking the program enter the directory path to be switched to. This field is optional. By default the editor changes to the directory of the current buffer. Parameters Enter the command line arguments to pass to the program. Parameters are optional. Some examples follow: -c -AL %s.c For CL.EXE -mx -zi %s.asm; For MASM.EXE /f mypjt.mak For NMAKE.EXE "/C DIR *.C" For CMD.EXE "/C BATCH.CMD" For CMD.EXE The following special substitution sequences may be used in the parameters field: %p substitutes the path (including drive) of the current buffer %f substitutes the file name of the current buffer %s substitutes the path and file name of the current buffer %e substitutes the extension of the current buffer (including the leading period) Regular Expression You can use this field to enter a regular expression which will match an error line output by the program. The editor will use this regular expression for Next Error, Prev Error, and Jump To Error processing. The regular expression must be constructed so that: 1. the first group ie. { } [Brief syntax] or ( ) [Unix syntax] matches the pathname of the file containing the error 2. the expression matching the line number is immediately preceeded by \c. For example: Brief syntax: {?+} (\c[0-9]+) : Unix syntax: {.+} \(\c[0-9]+\) : will match an error line formatted like this: d:\mypjt\main.c (101) : error - syntax error, missing ; When all fields are completed press the OK pushbutton to add this entry to the Associated programs list box. If you change your mind and don't want to perform the add, press the Cancel push button. ═══ 13.17.4. Change Program Information Dialog ═══ The Change Program Information dialog is used to change the existing information for a program association. See Add Program for complete information on each field in this dialog. ═══ 13.17.5. Deleting a Program Association ═══ Select the extension and program in their respective list boxes and press the Delete... pushbutton under the Associated programs list box. You are prompted to confirm that you really want to perform the deletion, press the Yes pushbuton to perform the deletion or No pushbutton to cancel the delete operation. ═══ 13.17.6. Copy Program Information Dialog ═══ To copy an Associated programs entry select the entry you wish to copy in the Associated programs list box and press the Copy... push button. You are presented a dialog box which allows you to choose which file extension you wish to copy the entry to. Select the file extension and press the OK push button. The entry is added to the list of associated programs for the extension you selected. If you change your mind and don't want to perform the copy operation press the Cancel pushbutton. A fast way to add multiple entries for an extension is to add the first and then copy the first as many times as you wish and then change the copied entries. ═══ 13.18. Execute command ═══ The Execute command dialog is used to execute macro functions directly. Enter the name of the macro function (function names are case sensitive) and any required arguments for the function and press Enter or the OK push button. The last 50 enties you make are retained by the editor and may be called back by using the up or down arrow keys, or clicking on the down arrow button and selecting an entry from the list box. The argument list may be enclosed with ( ) and each argument may be separated by a comma or spaces. String arguments should be enclosed in double quotes and single character arguments in single quotes, numeric arguments are specified as decimal digits. ═══ 13.19. Regular Expression Syntax ═══ The RimStar Programmer's Editor provides two syntaxes for specifying regular expressions - Brief and Unix (Extended GREP/EMACS). Choose the syntax that you are most familiar with. If neither syntax is familiar to you, we suggest you learn the EGREP syntax since it is used in other software products, eg. lex, grep, etc. The EGREP syntax supported is: ┌──────┬──────────────────────────────────────────────────┐ │* │Matches zero or more occurrences of the preceeding│ │ │pattern. │ ├──────┼──────────────────────────────────────────────────┤ │+ │Matches one or more occurrences of the preceeding │ │ │pattern. │ ├──────┼──────────────────────────────────────────────────┤ │. │Matches any single character. │ ├──────┼──────────────────────────────────────────────────┤ │^ │Matches the beginning of a line. │ ├──────┼──────────────────────────────────────────────────┤ │$ │Matches the end of a line. │ ├──────┼──────────────────────────────────────────────────┤ │( ) │Used to group expressions. │ ├──────┼──────────────────────────────────────────────────┤ │| │Matches either the preceeding or following │ │ │character or expression (eg. ha|it matches hat or │ │ │hit) If you want to match 'bat' or 'cat' you must │ │ │group the expressions like this (bat)|(cat). │ ├──────┼──────────────────────────────────────────────────┤ │\ │escapes next character so that it is not treated │ │ │as a regular expression character. │ ├──────┼──────────────────────────────────────────────────┤ │\c │Does not match anything, it says move the cursor │ │ │to this point in the match. Normally the cursor is│ │ │placed before the first character of the match. │ ├──────┼──────────────────────────────────────────────────┤ │\n │Matches a newline. │ ├──────┼──────────────────────────────────────────────────┤ │\t │Matches a tab. │ ├──────┼──────────────────────────────────────────────────┤ │\b │Matches a backspace. │ ├──────┼──────────────────────────────────────────────────┤ │\f │Matches a form-feed. │ ├──────┼──────────────────────────────────────────────────┤ │\r │Matches a carriage return (NOTE: there are │ │ │normally no carriage return characters in a buffer│ ├──────┼──────────────────────────────────────────────────┤ │\xNN │Matches a character having the hex value specified│ │ │by the two hexidecimal digits 'NN' │ ├──────┼──────────────────────────────────────────────────┤ │[ ] │Defines a character class. A character class │ │ │matches any single character which is found in the│ │ │class. Special characters may be used to define a │ │ │character class. │ │ │^ │ │ │when the first character following the '[' means │ │ │match any character not in the class. eg. [^A-Z] │ │ │will match any single character that is not an │ │ │upper-case letter. │ │ │] │ │ │when the first character following the '[', it is │ │ │treated as the character itself not the closing │ │ │bracket of the character class. │ │ │- │ │ │used to specify a range of characters. eg [A-Z0-9]│ │ │matches a single character that is either an │ │ │upper-case letter or a digit. │ │ │\n │ │ │newline ( \x0a ) │ │ │\t │ │ │tab ( \x09 ) │ │ │\b │ │ │backspace ( \x08 ) │ │ │\f │ │ │form-feed ( \x0c ) │ │ │\r │ │ │carriage return ( \x0d ) │ │ │\xNN │ │ │character whose hexadecimal value is 'NN' │ └──────┴──────────────────────────────────────────────────┘ The Brief regular expression syntax supported is: ┌──────┬──────────────────────────────────────────────────┐ │@ │Matches zero or more occurrences of the preceeding│ │ │pattern. │ ├──────┼──────────────────────────────────────────────────┤ │+ │Matches one or more occurrences of the preceeding │ │ │pattern. │ ├──────┼──────────────────────────────────────────────────┤ │? │Matches any single character │ ├──────┼──────────────────────────────────────────────────┤ │{ } │Used to group expressions │ ├──────┼──────────────────────────────────────────────────┤ │| │Matches either the preceeding or following │ │ │character or expression (eg. ha|it matches hat or │ │ │hit) If you want to match 'bat' or 'cat' you must │ │ │group the expressions like this {bat}|{cat} │ ├──────┼──────────────────────────────────────────────────┤ │< OR %│Matches the beginning of a line │ ├──────┼──────────────────────────────────────────────────┤ │> OR $│Matches the end of a line │ ├──────┼──────────────────────────────────────────────────┤ │\ │escapes next character so that it is not treated │ │ │as a regular expression character. │ ├──────┼──────────────────────────────────────────────────┤ │\c │Does not match anything, it says move the cursor │ │ │to this point in the match. Normally the cursor is│ │ │placed before the first character of the match. │ ├──────┼──────────────────────────────────────────────────┤ │\n │Matches a newline │ ├──────┼──────────────────────────────────────────────────┤ │\t │Matches a tab │ ├──────┼──────────────────────────────────────────────────┤ │\b │Matches a backspace │ ├──────┼──────────────────────────────────────────────────┤ │\f │Matches a form-feed │ ├──────┼──────────────────────────────────────────────────┤ │\r │Matches a carriage return (NOTE: there are │ │ │normally no carriage return characters in a buffer│ ├──────┼──────────────────────────────────────────────────┤ │\xNN │Matches a character having the hex value specified│ │ │by the two hexadecimal digits 'NN' │ ├──────┼──────────────────────────────────────────────────┤ │[ ] │Defines a character class. A character class │ │ │matches any single character which is found in the│ │ │class. Special characters may be used to define a │ │ │character class. │ │ │~ │ │ │when the first character following the '[' means │ │ │match any character not in the class. eg. [~A-Z] │ │ │will match any single character that is not an │ │ │upper-case letter. │ │ │] │ │ │when the first character following the '[', it is │ │ │treated as the character itself not the closing │ │ │bracket of the character class. │ │ │- │ │ │used to specify a range of characters. eg [A-Z0-9]│ │ │matches a single character that is either an │ │ │upper-case letter or a digit. │ │ │\n │ │ │newline ( \x0a ) │ │ │\t │ │ │tab ( \x09 ) │ │ │\b │ │ │backspace ( \x08 ) │ │ │\f │ │ │form-feed ( \x0c ) │ │ │\r │ │ │carriage return ( \x0d ) │ │ │\xNN │ │ │character whose hexadecimal value is 'NN' │ └──────┴──────────────────────────────────────────────────┘ ═══ 13.20. Brief Regular expression syntax ═══ The Brief regular expression syntax supported is: ┌──────┬──────────────────────────────────────────────────┐ │@ │Matches zero or more occurrences of the preceeding│ │ │pattern. │ ├──────┼──────────────────────────────────────────────────┤ │+ │Matches one or more occurrences of the preceeding │ │ │pattern. │ ├──────┼──────────────────────────────────────────────────┤ │? │Matches any single character │ ├──────┼──────────────────────────────────────────────────┤ │{ } │Used to group expressions │ ├──────┼──────────────────────────────────────────────────┤ │| │Matches either the preceeding or following │ │ │character or expression (eg. ha|it matches hat or │ │ │hit) If you want to match 'bat' or 'cat' you must │ │ │group the expressions like this {bat}|{cat} │ ├──────┼──────────────────────────────────────────────────┤ │< OR %│Matches the beginning of a line │ ├──────┼──────────────────────────────────────────────────┤ │> OR $│Matches the end of a line │ ├──────┼──────────────────────────────────────────────────┤ │\ │escapes next character so that it is not treated │ │ │as a regular expression character. │ ├──────┼──────────────────────────────────────────────────┤ │\c │Does not match anything, it says move the cursor │ │ │to this point in the match. Normally the cursor is│ │ │placed before the first character of the match. │ ├──────┼──────────────────────────────────────────────────┤ │\n │Matches a newline │ ├──────┼──────────────────────────────────────────────────┤ │\t │Matches a tab │ ├──────┼──────────────────────────────────────────────────┤ │\b │Matches a backspace │ ├──────┼──────────────────────────────────────────────────┤ │\f │Matches a form-feed │ ├──────┼──────────────────────────────────────────────────┤ │\r │Matches a carriage return (NOTE: there are │ │ │normally no carriage return characters in a buffer│ ├──────┼──────────────────────────────────────────────────┤ │\xNN │Matches a character having the hex value specified│ │ │by the two hexadecimal digits 'NN' │ ├──────┼──────────────────────────────────────────────────┤ │[ ] │Defines a character class. A character class │ │ │matches any single character which is found in the│ │ │class. Special characters may be used to define a │ │ │character class. │ │ │~ │ │ │when the first character following the '[' means │ │ │match any character not in the class. eg. [~A-Z] │ │ │will match any single character that is not an │ │ │upper-case letter. │ │ │] │ │ │when the first character following the '[', it is │ │ │treated as the character itself not the closing │ │ │bracket of the character class. │ │ │- │ │ │used to specify a range of characters. eg [A-Z0-9]│ │ │matches a single character that is either an │ │ │upper-case letter or a digit. │ │ │\n │ │ │newline ( \x0a ) │ │ │\t │ │ │tab ( \x09 ) │ │ │\b │ │ │backspace ( \x08 ) │ │ │\f │ │ │form-feed ( \x0c ) │ │ │\r │ │ │carriage return ( \x0d ) │ │ │\xNN │ │ │character whose hexadecimal value is 'NN' │ └──────┴──────────────────────────────────────────────────┘ ═══ 13.21. EGREP Regular expression syntax ═══ The EGREP syntax supported is: ┌──────┬──────────────────────────────────────────────────┐ │* │Matches zero or more occurrences of the preceeding│ │ │pattern. │ ├──────┼──────────────────────────────────────────────────┤ │+ │Matches one or more occurrences of the preceeding │ │ │pattern. │ ├──────┼──────────────────────────────────────────────────┤ │. │Matches any single character │ ├──────┼──────────────────────────────────────────────────┤ │^ │Matches the beginning of a line │ ├──────┼──────────────────────────────────────────────────┤ │$ │Matches the end of a line │ ├──────┼──────────────────────────────────────────────────┤ │( ) │Used to group expressions. │ ├──────┼──────────────────────────────────────────────────┤ │| │Matches either the preceeding or following │ │ │character or expression (eg. ha|it matches hat or │ │ │hit) If you want to match 'bat' or 'cat' you must │ │ │group the expressions like this (bat)|(cat) │ ├──────┼──────────────────────────────────────────────────┤ │\ │escapes next character so that it is not treated │ │ │as a regular expression character. │ ├──────┼──────────────────────────────────────────────────┤ │\c │Does not match anything, it says move the cursor │ │ │to this point in the match. Normally the cursor is│ │ │placed before the first character of the match. │ ├──────┼──────────────────────────────────────────────────┤ │\n │Matches a newline │ ├──────┼──────────────────────────────────────────────────┤ │\t │Matches a tab │ ├──────┼──────────────────────────────────────────────────┤ │\b │Matches a backspace │ ├──────┼──────────────────────────────────────────────────┤ │\f │Matches a form-feed │ ├──────┼──────────────────────────────────────────────────┤ │\r │Matches a carriage return (NOTE: there are │ │ │normally no carriage return characters in a buffer│ ├──────┼──────────────────────────────────────────────────┤ │\xNN │Matches a character having the hex value specified│ │ │by the two hexadecimal digits 'NN' │ ├──────┼──────────────────────────────────────────────────┤ │[ ] │Defines a character class. A character class │ │ │matches any single character which is found in the│ │ │class. Special characters may be used to define a │ │ │character class. │ │ │^ │ │ │when the first character following the '[' means │ │ │match any character not in the class. eg. [^A-Z] │ │ │will match any single character that is not an │ │ │upper-case letter. │ │ │] │ │ │when the first character following the '[', it is │ │ │treated as the character itself not the closing │ │ │bracket of the character class. │ │ │- │ │ │used to specify a range of characters. eg [A-Z0-9]│ │ │matches a single character that is either an │ │ │upper-case letter or a digit. │ │ │\n │ │ │newline ( \x0a ) │ │ │\t │ │ │tab ( \x09 ) │ │ │\b │ │ │backspace ( \x08 ) │ │ │\f │ │ │form-feed ( \x0c ) │ │ │\r │ │ │carriage return ( \x0d ) │ │ │\xNN │ │ │character whose hexadecimal value is 'NN' │ └──────┴──────────────────────────────────────────────────┘