$Elite .no flags substitute .PAGE SIZE 58,80 .LM 5 .AUTOPARAGRAPH .PARAGRAPH 0,1,2 BUILDING YOUR COPY OF EVE_PLUS This mail/memo is addressed to ISD programming staff only. It describes how to build your copy of EVE_PLUS, which contains many nice new features that are listed briefly below. Each user must build it for him or herself. I am having the EVE_PLUS manual printed and copies made for each of you, so that you will have a full description of the new features. I felt the installation procedure in the manual was slightly unclear, and so I have written my own version, which will follow. Building EVE_PLUS takes only a minute or two of your time, and is WELL worth the effort. It will create a TPU section file of about 405 blocks in your login directory, which will become your private copy of EVE to modify at your pleasure. FEATURES OF EVE_PLUS: The following commands (which can be accessed via the DO key) are defined: .LITERAL DESCRIBE KEY -- requests a key, returns a one-line description. DESTROY BUFFER -- deletes contents of a buffer and the buffer itself; asks confirmation if buffer is modified. DISPLAY CHARACTER -- produces readable interpretation of control characters. ELIMINATE TABS -- removes tabs, substitutes correct number spaces (assumes tabs set every 8 positions) FIX CRLFS -- remove carriage returns/line feeds from Runoff output type files LIST BUFFERS -- produces list of all buffers currently in use. LIST COMMANDS -- produces list of EVE and EVEPLUS commands in alpha order NUMBER LINES -- inserts line numbers at beginning of each line PRINT BUFFER -- sends buffer to SYS$PRINT. (May change to use LN03 later) PRINT FILE -- prints a file on printer attached to terminal PRINT FF -- Prints form feed on printer attached to terminal PRINT RANGE -- prints select range on printer attached to terminal PRINT SCREEN -- prints contents of screen on printer attached to terminal RELEASE BUFFERS -- writes all modified buffers, deletes all remaining buffers from session. Useful if you run EVE in subprocess. SEARCH -- enhanced search command allowing wildcards SET EAG WINDOW KEYS -- alternate windowing and key definitions to help out see manual for details SET FLASHING -- flashes matching characters, e.g. parentheses, quotes SET MAPPING -- provides subset of SET EAG WINDOWS keys SET MATCHING -- automatically inserts matching characters, e.g. parentheses SET WRITE or SET NOWRITE -- set a buffer read only, reset as writable SET RECTANGULAR -- changes Select and Remove to allow cut/paste of rectangular regions. SET VMS LINE EDITING -- gives set of key definitions similar to VMS line-edit SORT BUFFER -- does what it says, line by line STATUS LINE -- turn off/on the EVE status line TRIM BUFFER -- removes all trailing spaces/tabs from lines in current buffer WHAT LINE -- reports current line position in buffer **************************************************************** .END LITERAL .S HOW TO BUILD YOUR COPY OF EVE_PLUS: .LIST .LE;The logical name TPU$EVEPLUS is defined on all systems to point to the directory containing the TPU source files for EVE PLUS. You need do nothing about that. .LE;Issue the following copy command to get your copy of the EVEplus include file: .S.I5 COPY TPU$EVEPLUS:EVEPLUS_INPUT.TPU SYS$LOGIN:EVEPLUS_username.TPU .S Substitute your own username where you see "username". (Here and later) .LE;Edit this file, reading the comments. If you do NOT want to include one of the standard EVEplus commands (for example the ones about local terminal printers have no use to us), you can comment out or delete those lines. The lines to edit should be fairly obvious. .LE;If you have already customized your EVE with DEFINE KEY commands, you will need to create a file called DEFINE_KEYS.TPU in your login directory with the appropriate TPU define_key commands. If you are not sure how to do this, see the example of my DEFINE_KEYS.TPU file appended at the end of this document. You can get more information by entering EVE, typing "HELP TPU", hitting the DO key, and then requesting info on DEFINE_KEY and KEYDEFS. Put your personal key definitions into the DEFINE_KEYS.TPU file, and UNCOMMENT the line in your EVEPLUS_username.TPU file that includes the file DEFINE_KEYS.TPU. If you have actually written TPU procedures that you want included in your copy of EVEplus, follow the comments in EVEPLUS_username.TPU for including those TPU source files into the build procedure. .LE;Exit from your edit, and issue the following two DCL commands. This will take a minute or two and will build your copy of EVEplus. .S.I5 $ DEFINE/USER TPUSECINI SYS$SHARE:EVESECINI.GBL .I5;$ EDIT/TPU/COMMAND=TPU$EVEPLUS:EVEPLUS_BUILD - .I8;SYS$LOGIN:EVEPLUS_username.TPU .LE;To use your new EVEplus, do the following: .LITERAL (put this in your LOGIN.COM) $ DEFINE TPUSECINI SYS$LOGIN:EVEPLUS.GBL $ eve == "EDIT/TPU" or to use a spawned EVE in a subprocess that you can keep around: $ EVE == "@SYS$COM:SPAWNEVE" .END LITERAL .LE;If you are interested in writing some of your own TPU procedures, the sources for EVEplus are all in .TPU files in the TPU$EVEPLUS directory on the system disk. PLEASE DO NOT ALTER ANY OF THESE FILES! Copy them to your own directory if you want to play around with them. .END LIST EXAMPLE OF AL WATSON'S "DEFINE_KEYS.TPU" file .LITERAL ! Keypad and key definition file for "Watson Keypad Layout" ! This file undefines all keys before defining them to be sure existing ! definitions are not kept in memory. Keypad keys are defined first in ! order from top to bottom, left to right across the rows ! ! Undefine all keypad keys ! undefine_key(PF1); undefine_key(PF2); undefine_key(key_name(pf2,shift_key)); undefine_key(PF3); undefine_key(key_name(pf3,shift_key)); undefine_key(pf4); undefine_key(key_name(pf4,shift_key)); undefine_key(kp0); undefine_key(key_name(kp0,shift_key)); undefine_key(kp1); undefine_key(key_name(kp1,shift_key)); undefine_key(kp2); undefine_key(key_name(kp2,shift_key)); undefine_key(kp3); undefine_key(key_name(kp3,shift_key)); undefine_key(kp4); undefine_key(key_name(kp4,shift_key)); undefine_key(kp5); undefine_key(key_name(kp5,shift_key)); undefine_key(kp6); undefine_key(key_name(kp6,shift_key)); undefine_key(kp7); undefine_key(key_name(kp7,shift_key)); undefine_key(kp8); undefine_key(key_name(kp8,shift_key)); undefine_key(kp9); undefine_key(key_name(kp9,shift_key)); undefine_key(minus); undefine_key(key_name(minus,shift_key)); undefine_key(comma); undefine_key(key_name(comma,shift_key)); undefine_key(enter); undefine_key(key_name(enter,shift_key)); undefine_key(period); undefine_key(key_name(period,shift_key)); ! ! Watson Keypad Definitions ! set(shift_key,PF1); define_key ("eve_set_nowrite",PF2,"Set_no_write"); define_key("eve_set_write",KEY_NAME(PF2,SHIFT_KEY),"Set_write"); ! Find commmand on keypad because CTRL keys won't do FIND NEXT function! define_key("eve_find('')",PF3,"find"); define_key("eve_occurs('')",KEY_NAME(PF3,SHIFT_KEY),"Occurs"); define_key("aaw_erase_line",pf4,"Erase_line"); define_key ("eve_restore",key_name(PF4,shift_key),"Restore"); define_key ("eve_move_by_word",KP7,"Move_by_Word"); define_key("eve_mark('')",key_name(kp7,shift_key),"Mark"); define_key ("eve_move_by_sentence",KP8,"Move_by_sentence"); define_key("eve_go_to('')",key_name(kp8,shift_key),"Go_To"); define_key ("aaw_move_by_paragraph",KP9,"Move_by_paragraph"); define_key ("eve_fill_paragraph",KEY_NAME(kp9,SHIFT_KEY),"Fill_Paragraph"); define_key("eve_erase_word",minus,"Erase_Word"); define_key("eve_what_line",key_name(minus,shift_key),"What_Line"); define_key("eve_dcl(read_line('DCL command: '))",kp4,"DCL"); define_key("eve_bottom",key_name(kp4,shift_key),"Bottom"); define_key("eve_buffer('')",kp5,"Buffer('')"); define_key("eve_top",key_name(kp5,shift_key),"Top"); define_key("eve_include_file('')",kp6,"Include_File"); define_key("eve_include_buffer('')",key_name(kp6,shift_key),"Include_buffer"); define_key("eve_erase_character",comma,"Erase_character"); ! Key GOLD-COMMA defined by SET EAG as 'Write New File'. define_key ("eve_only_window",KP1,"Only window"); define_key ("eve_noonly",KEY_NAME(KP1,SHIFT_KEY),"NoOnly"); define_key ("eve_split_window",KP2,"Split_Window"); define_key ("eve_delete_window",KEY_NAME(KP2,SHIFT_KEY),"Delete_window"); define_key ("eve_next_window",KP3,"Next_Window"); ! GOLD-KP3 defined at end after SET EAG command, defined as Expand Window define_key ("aaw_nextline",KP0, "Aaw_nextline"); define_key ("aaw_openline",KEY_NAME(KP0,SHIFT_KEY), "AAW_openline"); define_key ("eve_mark('last')",PERIOD,"Mark_as_Last"); define_key ("eve_go_to('last')",KEY_NAME(PERIOD,SHIFT_KEY),"Go_To_last"); ! ENTER key and GOLD-ENTER defined by SET EAG as Get File, Write File ! ! End of KEYPAD definitions ! ! Alternate definition of GRAY KEYS for use with VT100 terminals ! define_key("eve_help('keypad')",key_name("h",shift_key),"Help"); define_key("eve_do('')",key_name("d",shift_key),"Do"); define_key("eve_change_direction",CTRL_D_KEY,"Change_Direction"); define_key("eve_move_by_line",CTRL_L_KEY,"Move_by_line"); define_key("eve_change_mode",key_name("o",shift_key),"Change_mode"); define_key("eve_search('')",CTRL_F_KEY,"search"); define_key("eve_insert_here",key_name("i",shift_key),"Insert_here"); define_key("eve_remove",KEY_name("r",shift_key),"Remove"); define_key("eve_copytext",key_name("x",shift_key),"Copytext"); define_key("eve_copytext",key_name(E3,shift_key),"Copytext"); ! Gold Remove define_key("eve_select",key_name("s",shift_key),"Select"); define_key("eve_previous_screen",CTRL_P_KEY,"Previous_screen"); define_key("eve_next_screen",CTRL_N_KEY,"Next_screen"); define_key("eve_delete",del_key,"Delete"); ! Key GOLD DELETE defined as Destroy buffer by EVEplus define_key ("eve_start_of_line",CTRL_A_KEY,"Start_of_line"); define_key("eve_start_of_line",BS_KEY,"Start_of_line"); !define_key("eve_erase_start_of_line",LF_KEY,"Erase_start_of_line"); define_key("eve_erase_start_of_line",key_name("a",shift_key), "Erase_start_of_line"); ! ! Additional non-keypad key definitions ! define_key ("eve_attach",F20,"Attach"); define_key ("eve_eof",KEY_NAME("z",SHIFT_KEY),"Send_EOF_to_DCL"); define_key ("eve_read_mail",KEY_NAME("m",SHIFT_KEY),"Read_mail"); define_key ("eve_list_buffers",KEY_NAME("b",SHIFT_KEY),"List_buffers"); define_key ("eve_capitalize_word",KEY_NAME("c",SHIFT_KEY),"Capitalize_word"); define_key ("eve_uppercase_word",KEY_NAME("u",SHIFT_KEY),"Uppercase_word"); define_key ("eve_lowercase_word",KEY_NAME("l",SHIFT_KEY),"Lowercase_word"); define_key ("eve_transpose_lines",KEY_NAME("t",SHIFT_KEY),"Transpose_lines"); define_key("aaw_erase_line",ctrl_k_key,"Erase_line"); define_key("eve_transpose_char",key_name("<",shift_key),"transpose_char"); ! ! Other setup commands ! set (shift_key, PF1); eve_set_eag_window_keys; ! Next two lines must follow eag_window_keys to undo key definition undefine_key(KEY_NAME(KP3,SHIFT_KEY)); define_key ("eve_expand_window",KEY_NAME(KP3,SHIFT_KEY),"Expand_window"); ! ! Key definitions that duplicated keys; they need a new key perhaps ! !define_key("eve_release_buffers",key_name("r",shift_key),"Release_buffers"); !define_key ("eve_time",KEY_NAME("d",SHIFT_KEY),"Show_date_and_time"); !define_key ("eve_send_to_dcl", KEY_NAME("s",SHIFT_KEY),"Send_buffer_to_DCL"); !define_key ("eve_mail_a_buffer",KEY_NAME("m",SHIFT_KEY),"Mail_a_buffer"); .END LITERAL .flags substitute $Courier10.0