9. Macros


9.1. General

Macros are sequences of Keyboard commands, which are stored under a name. They can be activated by calling this name. With this feature, it is easy to execute frequently used operating sequences. Macros may be nested in mbedit, the max. nesting level is limited to 10. Very often needed macros can be stored in a special macro file "MBEDIT.MAC" (see also chapter "Macro File"). The memory space for each single macro is limited to 4096 bytes.

9.2. Macro Handling

- 'M'acro Commands - 'C'reate Creation of a macro: Syntax: 'M'acro 'C'reate <macro name> <cr> ... all following keystrokes are stored in the macro ... 'M' in command mode finishes "Macro Create". - 'D'elete Delete a macro: Syntax: 'M'acro 'D'elete <macro name> <cr> - 'G'et Read macro file: Syntax: 'M'acro 'G'et <filename> <cr> The given file will be read and interpreted (see also chapter "Macro File"). A single <cr> instead of a macro filename, will interprete the actual text buffer as macro file. (For that, a help file named "MBEDIT.TMP" is created on the temp. directory.) With this option it is easy to edit and debug macros. - 'I'nsert Insert macro commands into the text: Syntax: 'M'acro 'I'nsert ... all following keystrokes will be inserted in the macro notation into the current text ... ^C finishes "Macro Insert". - 'L'ist Show a list of all macros: Syntax: 'M'acro 'L'ist Display - the actual macro filename - an enumeration of all macros with their names and (in square brackets) the length in bytes - the total number and length of all macros - 'S'ave Store a macro in the text buffer: Syntax: 'M'acro 'S'ave <macro name> <cr> The given macro will be inserted in the macro notation into the current text. From here it can be stored in a file with 'B'lock 'P'ut or with the 'Q'uit 'W'rite Command respectively. - 'E'xecute Macro Command Execution of a previously defined macro (generated with 'C'reate, or read from a macro file). Syntax: 'E'xecute <macro name> <cr> - Macro with single character name Macros with a single character name may be executed by entering this one keystroke. This can be a special character, a function key or a letter, which is not reserved for any other command. Combined key codes (e.g.: Control- or Alt-combinations) are allowed as well. Example: Input : MC*<cr> Create macro named "*" R<cr><esc><cr> <esc> Replace "<cr>" with "<cr> " i.e.: indent line by 3 <space>s M finish "Macro Create" * call macro "*" once A A A 'A'gain 3 times 7* execute macro "*" 7 times /* execute macro "*" as often as possible MS* save macro "*" into the text Display: M*\BRr\NL\BR\NL \BR\MM; ||| | | ||| | +-- end of macro ||| +-- macro Instructions ||+-- end of macro name |+-- macro name (max. 40 characters) +-- beginn of macro definition

9.3. Macro Control Codes

All entered keystrokes (also special keys like cursor keys, Control- and Alt-combinations) will be stored internally in a special macro notation as ASCII character. Translation with the following table: /* function keys */ <F1> \090 to <F10> \099 /* SHIFT function keys */ Shift <F1> \0A0 to Shift <F10> \0A9 /* CTRL function keys */ Ctrl <F1> \0B0 to Ctrl <F10> \0B9 /* ALT function keys */ <ALT F1> \0C0 to <Alt F10> \0C9 /* cursor keys */ <UP> \CU <DOWN> \CD <RIGHT> \CR <LEFT> \CL /* special keys */ <HOME> \CH <INS> \083 <DEL> \XF <END> \081 <PGUP> \080 <PGDN> \082 /* control special keys */ Ctrl <PGUP> \089 Ctrl <HOME> \088 Ctrl <PGDN> \087 Ctrl <END> \086 Ctrl <RIGHT> \085 Ctrl <LEFT> \084 /* control keys */ -- -- kein ^@ Ctrl A \XA Ctrl B \002 -- -- kein ^C Ctrl D \004 Ctrl E \XE Ctrl F \XF Ctrl G \007 <bell> Ctrl H \RB <backspace> Ctrl I \TB <tab> Ctrl J \0A <lf> Ctrl K \00B Ctrl L \00C Ctrl M \NL <cr> Ctrl N \XN Ctrl O \00F Ctrl P \010 Ctrl Q \011 Ctrl R \XH Ctrl S \XS Ctrl T \CR Ctrl U \XU Ctrl V \016 Ctrl W \017 Ctrl X \XX Ctrl Y \019 Ctrl Z \XZ Ctrl [ \BR <esc> Ctrl \ \CD Ctrl ] \CH Ctrl ^ \CU Ctrl _ \CL \ \\ <backslash> /* CTRL diverse keys */ Ctrl 2 \0D@ /* ALT diverse keys */ Alt 0 \0D0 to Alt 9 \0D9 Alt - \0DM Alt = \0DE /* ALT alpha keys */ Alt A \0EA to Alt Z \0EZ

9.4. Macro File

The macro file "MBEDIT.MAC" contains all settings and macros, which are required frequently for editing. - the user macros, - the default settings (to be manipulated with the 'S'et Command) and - some settings like screen dimensions and colors. Invoking the editor, this file will be loaded by default. Thus, all contained macros and settings are available automatically. The following entries are allowed: - Comments ( \* ... *\ , not /* ... */ ) - Include Files (syntax: "INCLUDE macrofilename", exactly one <space> !) - Macros (indicated by 'M' in the 1st column) - the implemented set options ('S' in the 1st column) Example: SBN \* Set Bak_files NO *\ - the color attributes for VGA or VT100/ANSI (see Appendix also !) AFNV=1B4DF0; or AFNV=="?[0;30;48m" \* Normal Video *\ AFRV=1B4D0F; or AFRV=="?[7;30;48m" \* Reverse Video *\ AF1V=1B4D30; or AF1V=="?[0;30;46m" \* Status Line 1 *\ AF2V=1B4D4F; or AF2V=="?[0;38;41m" \* Status Line 2 *\ AFCV=1B4DF2; or AFCV=="?[0;32;48m" \* Comments *\ AFKV=1B4DF1; or AFKV=="?[0;34;48m" \* Keywords *\ AFSV=1B4DF4; or AFKV=="?[0;31;48m" \* Strings *\ In case of VGA, only the last byte is regarded, e.g.: Normal Video 1f: background color = 1 (blue) and foreground color = f (white). For VT100/ANSI, the complete <esc> sequence is given. '?' means <esc> or 0x1b. - the screen dimensions (attention ! no <space> before '='), and other parameters AV= 25 \* number of rows *\ AC= 80 \* number of columns *\ AG= 1 \* semi grafik: 0=AUS, 1=VGA/VT100, 2=ANSI *\ AM= 1 \* mouse driver ON *\ AS= 1 \* Automatic Shift of Screen with Cursor *\ AE=200 \* wait time for <esc> sequences in msec *\ The number of rows should be <= screen height, larger numbers are senseless. The number of columns in vt100 mode may be <= actual screen width, in vga mode it must correspond to the correct value, otherwise we get garbage on the display. The instructions AV and AC are used to tell the editor the real screen dimensions, and not to pretend something wrong. With mbedit a macro file with some useful macros and settings is delivered. Each user is free to modify this file for his own requirements.

9.5. Macro Types

mbedit distinguishes between two different types of macros: - modeless macros indicated by the end sequence "\MM;" This macro can be executed from every mode (Command, Insert or Exchange Mode). After finish of the macros, the editor is again in the same mode as before. - non-modeless macros indicated by the end sequence "\EM;" If the mode is altered during the macro execution, the new mode is preserved after finishing. Macros generated with 'M'acro 'C'reate are always of type modeless, first of all. As required, the type may be modified by editing the macro file.

9.6. The Macro "INIT"

If there exists a macro named "INIT" in the file, it will be executed automatically after entering mbedit. From here it can start other macros recursively. With this special macro, it is possible to activate particular commands after starting the editor, without the need to strike any key.

9.7. The Macro "EXIT"

Analogous, if there exists a macro named "EXIT" in the file, it will be executed prior to the quit of mbedit automatically. From here it can start other macros recursively. With this special macro, it is possible to activate particular commands before leaving the editor, without the need to strike any key.