═══ 1. Preface ═══ This document describes the features and function of EBOOKIE2 version 2.2, a tool for editing tagged files. It supports the following tag languages: o BookMaster version 2 and 3 o GML Starter-Set release 3.2 o FOILS5 version 5.3 o APAFOIL release 2.1 o IPF of OS/2 version 1.2 and above. EBOOKIE2 is based on the "E" family of editors, and is available for all flavors of "E" (E3 for DOS, EOS2 for OS/2 full screen sessions, and EPM for the OS/2 Presentation Manager). ┌────────────────────────────────────────────────────────────┐ │Note │ │ │ │ │ │A version of EBOOKIE for E3, the DOS version of the E │ │editor, is available as EBOOKIE PACKAGE on PCTOOLS. │ └────────────────────────────────────────────────────────────┘ ═══ 1.1. Related Manuals ═══ The following manuals contain additional information about the "E" editors: o The E3 Editor User's Guide available as E3 SCRIPT in the E3 PACKAGE on the PCTOOLS disk. o The E OS/2 Editor User's Guide available as EOS2 SCRIPT in the EOS2 PACKAGE on the OS2TOOLS disk. o The EPM Editor User's Guide available as EPM SCRIPT in the EPM PACKAGE on the OS2TOOLS disk. The following manuals have been used during the implementation of EBOOKIE2: o BookMaster User's Guide (SC34-5009-02) o BookMaster Creating Named Styles (SC34-5008-03) o Generalized Markup Language Starter Set Reference Release 3.2 (SH20-9187-05) o FOILS5 Version 5.3 Language Reference o APAFOIL Release 2.1 Quick Reference Summary o OS/2 Version 1.2 Programming Guide (PN 00F8833) ═══ 1.2. Acknowledgements ═══ Special thanks to Erwin Uit de Bos from IBM Nederland for his assistance during the transition from the EGML package to EBOOKIE, Mike Temple from IBM U.S.A. for his BookMaster help support, numerous appenders of the EBOOKIE FORUM on IBMPC for keeping me busy, and my wife Maria for her patience... ═══ 1.3. About EBOOKIE2 ═══ EBOOKIE2 has been developed in various stages. The first incarnation of the tagged-file support on PCTOOLS was called "EGML", and supported GML Starter-Set tags only. Then came "EBOOKIE" and "EBOOKIE2" (for the OS/2 family of the E editors), which supported at first BookMaster, then other tagged files like GML Starter-Set, FOILS5, APAFOIL, and IPF. The current implementation of variable tag delimiter characters allows EBOOKIE to be used for all kinds of tagged files, as long as a tag definition file is written for the tag language. For example, this allows the implementation of DTL (Dialog Tag Language), a tag language which is used by the SAA Dialog Manager. This language does not use the same tag-delimiters (":"to start a tag, "." to end it) as for instance BookMaster, the tags are enclosed within "<" and ">" characters as defined in SGML, the ANSI standard for tagged files. Note: Although EBOOKIE supports various tag-languages, this document uses BookMaster tags for most of the examples. This is mainly because most of the users of EBOOKIE currently use it for editing BookMaster or GML Starter-Set documents. ═══ 2. What EBOOKIE Does For You ═══ The EBOOKIE package allows you to easily edit tagged files with the "E" family of editors. Tags start with a one-character delimiter, and end with a one-character delimiter. Those tag-start and tag-end characters, together with all tags and their parameters, are defined in so called "tag definition files". EBOOKIE includes tag definition files for the following tag languages: o BookMaster version 2 (as described in: SC34-5009-02 BookMaster User's Guide, and SC34-5008-03 BookMaster Creating Named Styles). o GML Starter-Set (as described in: SH20-9187-05 Generalized Markup Language Starter Set Reference Release 3.2). o FOILS5 (as described in: FOILS5 Version 5.3 Language Reference). o APAFOIL (as described in APAFOIL release 2.1 Quick Reference Summary). o IPF (as described in: PN 00F8833 OS/2 Version 1.2 Programming Guide The features include: o Tag checking. If the entered text is not a valid tag the tag-start character is automatically replaced by a variable defined for the current tag language. For example: BookMaster uses a colon (":") to start a tag. If you type an invalid tag (like ":xxx") the colon is replaced by the variable "&colon.". This feature is configurable, and can be turned off. o Adding of the required and optional parameters. The required parameters are always inserted into your text, and the cursor is positioned in the correct place (usually the first parameter). Optional parameters are only displayed if you press the "space" bar. When you press the "enter" key or the "tag-end" character, the optional parameters are not inserted into your text. There are two stages of optional parameters, the "common", and "all" parameters. The "space" key expands only the common parameters, the "c_space" key in EPM, or the "c_enter" key in EOS2 and E3, expand all parameters. o Automatic tag-structure creation. If a tag requires additional tags, like end-tags, they are inserted into your text. o Free editing. Tags can be entered anywhere in the text. EBOOKIE positions the tag in the correct location (for instance, some tags must start in column one). o The margins are changed to allow only 70 character per line, and word-wrapping is turned on. This allows you to type continually, without worrying about line ends. The number of characters per line is configurable. o Tabbing is set to tab one word at a time. o Dynamic margins. If you enter text you usually want to have the margins set to something which allows you to see the entire line without scrolling to the right. However, some language constructs like ":cgraphic." or ":xmp." require wider margins. EBOOKIE checks for such language constructs and changes the margins dynamically to "1 254 1" if the cursor is between tags which require other margins. Note: This feature is not perfect. It would require a big effort to intercept all keys and commands which change the position of the cursor within the file ("find" for example). It might therefore happen, that the margins are set incorrectly. Because of this, and because of the performance of the feature (there is a noticeable delay when you press the page up/down keys), it is not in the default configuration. If you want to activate this feature refer to Changing the Dynamic Margins. o "Remember tag" facility to assign a commonly used tag to a keystroke (alt_2). Every tag may define a tag or text which is assigned to this key. This is implemented for all tags which use the ":li" tag, like ":ol", ":sl", ":ul", etc. o "Boilerplate" facility to pull text into your document by typing a tag. This feature is used to create default document layouts. o Full configurability of the tags. The parameters, and the formatting results can be modified with up to 9 additional user-defined tag definition files. o Replacement of keys with symbols. In BookMaster for example, if you type the "\" key, the variable "&bsl." is inserted into your text. All ASCII codes from X'01' to X'FE' can be re-defined in EPM or EOS2, in E3 you can only define symbols for the codes from X'21' to X'FE'. You may use the command "bkmsym" to replace all special characters of your document with the symbols defined in the symbol table. Different symbol tables are used depending on the current codepage and tag definition file. EBOOKIE supplies two symbol tables for BookMaster, one for codepage 850, and one for codepage 437. There are no symbol tables supplied for other tag languages. However, you may create your own symbol files following the procedure in Changing the Symbol Definition File. o User-exits after the processing of the "enter", "page-up", "page-down", "up", and "down" keys. Please note that this feature is designed for power users who want to write their own E macros. o Index creation. You may mark a block of text and press the "alt_i" key, and the index tags are created for you. Or you just move the cursor under a word and press "alt_i" and this single word is put in the index. o Help for all BookMaster tags and their attributes. You move the current writing position under a tag or tag attribute and press the "alt_h" key and you will be presented with the help dialog (in EPM) or a new file in your ring (all other implementations of "E") which contains the help information. o Edit imbedded files. If you position the cursor at a line which contains a ".im", ".config" or ".setup" macro, the file is pulled in the ring. ═══ 2.1. Starting the Tag Support ═══ The support is started automatically under the following conditions: 1. The EBOOKIE footprint (the character string ".* EBOOKIE" together with the name of one or more tag definition files) is found. This flag is automatically created, and must be somewhere at the beginning of the file, but not necessarily in the first line, to allow other tools to occupy the first line. 2. The extension of the file is SCR, BKM, SCT, FOI, IPF, SCRIPT, or STYLE. The file extensions can be changed by using the procedure listed in Changing the Default File Extensions. 3. A valid tag is found in the first 100 lines of the file. This type of checking is optional, and is not included in the standard configuration. If none of the above methods result in starting the tag support, there is a command "bookie" supplied as a last resort. This command starts the support, regardless of the file extension or the findings of the tag-checking initialization function. Refer to Additional Commands and Keys for more information about the "bookie" command. 1. On slow machines (like my XT at home) searching of the first 100 lines results in a slight delay when any file is loaded into the editor. Therefore this feature is not included in the default configuration. Refer to Changing the Number of Lines Searched for a description of how include this feature. 2. EBOOKIE tries its best to keep the environment of non-tagged files clean. But only the implementation of EOS2 and EPM allow this to a full extent. For example, in E3 the margins are set for all files in the ring. EBOOKIE resets the margins and tabs to the configured default when a file which requires other language assist support is moved to the active position in the ring. This "feature" creates only one problem: if you have changed the tabs or margins manually, they are reset to the default value. Refer to Margin Changes in E3 for a way to force EBOOKIE not to change the margins. ═══ 2.2. Additional Commands and Keys ═══ EBOOKIE includes the following additional "E" commands and keys: o bookie o bookief o bkmattr (optional) o bkmsym (optional) o bkmdebug (optional) o alt_1 o alt_2 o alt_i (optional) o alt_h (optional) o ctrl_h (optional) If you are using EPM the macro creates an entry in the action bar called "Ebookie". You may use all commands from there too. ═══ 2.2.1. The "bookie" Command ═══ The "bookie" command can be used to turn the formatting on or off. The command bookie on turns the formatting support for the current file on, the command bookie off turns the support off. ═══ 2.2.2. The "bookief" Command ═══ The "bookief" command allows you to switch to a different set of tag definition files after the support has been started. This might be useful in environments where files using different tag languages are edited. You may specify up to 10 definition files with this command to include your personalized tag definition files. Those definition files are concatenated, and used concurrently. Please note that duplicate definitions of tags are allowed, but the definitions in the last file in your list override the definitions in previous files. For a description of the format of the tag definition file refer to Changing the Tag Definition File. This command also inserts the name of the tag definition files into the current file. When you save the file, and edit it again, the support is automatically started using those tag definition files. Let's make one example. The default tag definition file is for BookMaster, but you want to edit a file which contains FOILS5 tags. When you edit a tagged file, you will notice the EBOOKIE "footprint" somewhere at the beginning of your file (usually in the first line): .* EBOOKIE (BKMTAGS.DEF) This means that BookMaster formatting is used for this file. Now you enter the command: bookief foils5.def in the command line. This changes the footprint to: .* EBOOKIE (FOILS5.DEF) and FOILS5 formatting is turned on for this file. When you save this file, and edit it again, the formatting is automatically set for FOILS5. ═══ 2.2.3. The "bkmattr" Command ═══ This command is only available in EPM, and is optional. It is not available by default. If the attribute support is configured (refer to Attribute Support for EPM for more information about the configuration and installation of the support), the "bkmattr" command searches for all tags in the file, and highlights them. Please note that searching for all tags in a larger file may take some time. All new tags typed are highlighted. The attribute support can be switched off with the command: bkmattr off ═══ 2.2.4. The "bkmsym" Command ═══ If the symbol support is configured (refer to Replacing Keys with BookMaster Symbols for configuration instructions) and active, this command changes all occurrences of all special characters in the file or mark to the appropriate BookMaster symbol. To change the entire file, you have to specify the "all" parameter, without having set a mark. ═══ 2.2.5. The "bkmdebug" Command ═══ EBOOKIE has some limited debugging support. If something goes wrong, you may use the "bkmdebug" command to get some information about the current internal variables, or trace through the subroutines and look at the parameters. This command is included in the EOS2 and EPM versions, excluded (because of the limited macro space) in E3. To include the debugging support refer to Including the Debugging Support. The "bkmdebug" command accepts on parameter which can be (minimum abbreviations shown in upper case): Parameter Description On Turns debugging on. All subroutines report the input parameters upon entry. All messages have to acknowledged with a key. To review the messages refer to Messages Issued During Debugging. OFf Turns debugging off. Trace Turn "echo" on. Refer to the User's Guide of the editor for more information about the "echo" command. Endtrace Turns "echo" off. Display Adds about a page of information about internal variables into your document (as script comments). To interpret the debugging information refer to Debugging EBOOKIE. ═══ 2.2.6. The "alt_1" Key ═══ If you are editing a file which imbeds other files you can position the cursor on the line which contains the ".im" or ".setup" macro, and the file is pulled into the ring. If the file is a PC file it is searched in the following directories: 1. The directory where the current file is located. 2. Along the EPATH. 3. Along the PATH in DOS, or DPATH in OS/2. The extension of the file computed in the following manner: 1. If the imbed macro does not specify a file type, .SCR is assumed. 2. If the imbed macro contains a file type (like .im (myfile foils) the first three letters from the file type are used as extension. If the current file is a host file, the imbedded file will be taken from the host. The file type is SCRIPT if the ".im" macro didn't specify a file type. The file mode is the same as the file mode of the current file. ═══ 2.2.7. The "alt_2" Key ═══ This key allows you to insert a sequence of characters, usually tags, into your file. The tags inserted depend on the definition in the tag definition file. For example, if you started a definition list with the ":dl" tag, the alt_2 key will generate a ":dt.:dd" line, with the cursor positioned after the ":dt." tag. If you start an ordered list with ":ol", the alt_2 key inserts a ":li" tag. The default text assigned to the alt_2 key is determined by the tag definition file, usually it is ":p" for paragraph. This default may be changed using the procedure in Changing the Tag Definition File ═══ 2.2.8. The "alt_i" Key ═══ If the index support is included (refer to The Index Support), you may use the "alt_i" key to create an index tag for the word the cursor is under. If you mark a block of words, all words are included in the index, including all permutations. ═══ 2.2.9. The "alt_h" Key ═══ The "alt_h" can be used to get help about the tags and the valid tag attributes for the currently active tag language. The "Help Manager" is used when you work with EPM. In E3 or EOS2 EBOOKIE creates an additional file in the ring. The help facility is included in the default configuration, refer to The Help Support for configuration options. For the format of the help file for EOS2 and E3 refer to The Help File. Note: EPM uses the OS/2 Help Manager to display the help information. This means that you have to tell the Help Manager where the help files are located. This is done by setting the "BOOKSHELF" environment variable in the file C:\CONFIG.SYS. For example: SET BOOKSHELF=D:\EBOOKIE; would tell the Help Manager to search for the help files in the directory D:\EBOOKIE. Usually you have already a BOOKSHELP variable in your CONFIG.SYS, in this case just add the directory to the environment variable. ═══ 2.2.10. The "ctrl_h" Key ═══ This key acts exactly the same way as the "alt_h" key in EOS2 and E3. If you use EPM it does not use the Help Manager to display the help text, it uses the same method as E3 or EOS2, that means the help text is displayed as a separate file in the ring. ═══ 2.3. Formatting Examples ═══ Tags can be entered anywhere in the text, but most of the tags usually appear only at specific places. Basically there are three types of tags: 1. Tags that must start in the first position of a line, which don't have any text after the end of the tag (like ":body."). 2. Tags which must start in the first position of a line which might have some text after the tag (like ":p."). 3. Tags which can be anywhere in the text (like ":hdref."). Additionally, each tag might have some properties like: o required parameters o optional parameters o tag constructs, where one tag requires a series of other tags (like end-tags). EBOOKIE supports all three types of tags in combination with all properties the tags might have. You can type tags anywhere in the text, even in the wrong places. The support determines the type of the tag, and positions the tag in the text depending on the type. ═══ 2.3.1. Type 1 Tags ═══ Type 1 tags are always moved to the beginning of a new line. If you enter the tag somewhere in the text, it is removed, and the text is reflowed. If the text is: :p.This is some text. and a ":xmp." tag is typed anywhere on the line, it always results in: :p.This is some text. :xmp. :exmp. ═══ 2.3.2. Type 2 Tags ═══ Type 2 tags are also moved to a new line, but depending on where you have typed of the tag within the line, the results are different. If you enter the tag in an empty line, it is left there. If you enter the tag at the end of a line, it is moved to a new line like: :p.This is some text.:p. results in: :p.This is some text. :p. If you enter the tag at the beginning of the line, it is inserted in this place. This is some text. Now the ":p." tag is inserted at the beginning of the line. This results in: :p.This is some text. If you insert the tag in the middle of a line, the line is split at the tag position, and the remainder is moved after the tag: :p.This is a sentence. Another sentence, should be a paragraph. Now the cursor is moved to the beginning of the word "Another", and a tag is entered: :p.This is a sentence. :p.Another sentence, should be a paragraph. This results in: :p.This is a sentence. :p.Another sentence, should be a paragraph (now it is). ═══ 2.3.3. Type 3 Tags ═══ Type 3 tags can be anywhere in the text. Therefore they are expanded exactly at the position where they are entered. If the text is: :p.This is some text. and a ":hdref" tag is inserted after the word "some" it results in: :p.This is some :hdref refid=. text. If the tag has an end-tag, the end-tag is always positioned at the end of the line. :p.This is some text which is :hp1 results in: :p.This is some text which is :hp1.:ehp1. If the tag is inserted in the middle of a line, the remainder of the line to the right of the tag is enclosed within the start- and end-tag. One example: :p.This is a line. Now you position the cursor at the beginning of the word line, and ":hp1." is entered. This results in: :p.This is a :hp1.line.:ehp1. If this type of tag is inserted at the beginning of the line, the entire line is imbedded between the tags. ═══ 2.3.4. Tag Parameters ═══ Most of the tags have attributes which control their function. Some of the attributes are required, some are optional. Usually you don't need all parameters, therefore EBOOKIE has three stages of tag expansion: 1. Required parameters 2. "Usual" parameters 3. All parameters. All tags have a defined start character (":" in BookMaster), and a defined end character ("."). In addition to the defined tag-end character, you may also use the "enter" key to end a tag. ═══ 3. Installation ═══ The installation of EBOOKIE consists of a few easy steps. First you have to download and install the editor, then the EBOOKIE2 PACKAGE. Finally you have to include the support into your editor definitions, or you just copy the supplied default installation files. These steps will be different, depending on the version of the editor you are using. The following steps are common for all flavors of the editor: 1. Download the version of the editor most suitable for your environment, if you have not done so already. EBOOKIE has been tested only with the latest versions of the editor, which are: o EPM Version 5.50, available as an "Applet" in OS/2 2.0. o EPM Version 5.51 (EPM PACKAGE from OS2TOOLS), also available outside IBM via OS2EWS. o EPM Beta Version 5.60 o EPM Beta Version 6.00 o EOS2 Version 4.13A (EOS2 PACKAGE from OS2TOOLS) Don't forget to download the file EMACROS FLSBIN, it contains the required "E" macros. The macros are also available in the EPM and EPS2 package. Unload the macros with LOADRAM2.EXE (found on OS2TOOLS) 2. Download EBOOKIE2 PACKAGE from OS2TOOLS. You may use any downloading method suitable for your type of terminal emulation. I suggest you download all package files to the directory where your editor resides. 3. Run the EBOOKIE2.EXE to expand it. 4. You may now delete the file EBOOKIE2.EXE. ═══ 3.1. Installing EBOOKIE2 With EPM ═══ The following steps describe the procedure to install EBOOKIE into EPM. You have two options: 1. The default installation. If you are using EPM version 5.51 or 5.50 (supplied as an "Applet" in OS/2 2.0), and no add-on packages or private configuration files, you may install EBOOKIE by just renaming one file and issuing one EPM command. Please note that the default installation is not available if you use any beta releases of EPM. 2. The extended installation. If you are using a beta version of EPM, or you want to re-configure EBOOKIE to your personal preferences, you have to create a new version of the .EX files. ═══ 3.1.1. The Default Installation ═══ The default installation is the easiest way to use EBOOKIE, you just have to rename one file, and issue one EPM command. 1. Switch to the directory where your editor is installed, for example: d: cd \editor 2. Rename one of the BKEYS.??? files to BKEYS.EX. o If you are using EPM 5.50 rename the file BKEYS.550 to BKEYS.EX. o If you are using EPM 5.51 rename the file BKEYS.551 to BKEYS.EX. 3. Start EPM for any file (for example TEST.SCR) and press CTRL-I to get an EPM command prompt. 4. Type the command "PROFILE ON" in the command entry field. 5. Press the Enter key to execute the command. 6. Save the options by selecting "Options->Save options" from the EPM action bar. 7. Exit EPM by pressing F3. You may now verify the installation using the procedure in Verifying the Installation. ═══ 3.1.2. The Extended Installation ═══ If you are using any add-on packages for EPM, or if you want to change some defaults of the editor or EBOOKIE you have to use the extended installation procedure. EPM allows you to define EBOOKIE as external module. This has the advantage that EBOOKIE doesn't use storage out of the primary macro file (EPM.EX, or EXTRA.EX) which is limited to 64KB. If you want to include EBOOKIE as an external module you have to add the following line to your MYCNF.E: WANT_EBOOKIE = 'DYNALINK' Then compile EPM, EXTRA, and BKEYS. If you want EBOOKIE to be included into EPM, which as the advantage of faster loading, you have to add the following line to your MYCNF.E:. WANT_EBOOKIE = 1 Then compile EPM and EXTRA. ═══ 3.2. Installing EBOOKIE2 With EOS2 ═══ To install EBOOKIE with EOS2 you have to set some configuration options, and compile the editor and EBOOKIE: 1. Edit your MYCNF.E (or create a new one), and add the following line: WANT_EBOOKIE = 'DYNALINK' 2. Rename the file MYMAIN.413 to MYMAIN.E, or add the contents of MYMAIN.413 to MYMAIN.E. 3. Compile the editor and EBOOKIE: ET E ET BKEYS You may now test your installation using the procedure outlined in Verifying the Installation. Note: You may also include EBOOKIE in your main EOS2 definitions, but i don't recommend it, because you only have 64KB in E.EX, and usually you are running short of space. ═══ 3.3. Verifying the Installation ═══ You may now try EBOOKIE. Just edit a file with the command: epm test.scr and you should receive the following message from EBOOKIE: Initializing tag support, creating tag index, please wait... This means that EBOOKIE is active and correctly installed. Please note that you will see this message only once, unless you change the tag definition files. You may also notice that the first line of the file now contains the EBOOKIE "footprint", a line which looks like: .* EBOOKIE (BKMTAGS.DEF) This means that EBOOKIE is active for this file, and that you are using the definitions for BookMaster, which are located in the file BKMTAGS.DEF. When you save this file, and edit it again, EBOOKIE will know how to process it. ═══ 4. EBOOKIE PACKAGE Contents ═══ The EBOOKIE package consists of the following files: EBOOKIE PACKAGE The package header file. EBOOKIE DOCUMENT A short description, and installation instructions EBOOKIE EXEBIN The executables and the data files. This file has to be downloaded in binary as EBOOKIE.EXE and processed by simply running it. All files should go into the directory where EPM resides. It expands to the following: BKEYS.E The key processing macro. MYCNF.XMP An example of a user configuration file. This file can be used as an example of your MYCNF.E file and contains basically my private setup of E3, EOS2, and EPM. MYMAIN.413 You need this file only if you want to use EBOOKIE with EOS2. BKEYS.550 The key processing macro compiled for EPM version 5.50. BKEYS.551 The key processing macro compiled for EPM version 5.51. APAFOIL.DEF A tag definition file for APAFOIL. (APAFOIL is a foils package available on TXTTOOLS). APAFONT.SKL The ":font." tag of APAFOIL. APAFSET.SKL Stuff which is included if you type the ":foilset." tag. APAGDOC.SKL A sample foils document layout for APAFOIL. It is included when you type the ":gdoc." tag. BKMTAGS.DEF This file contains all BookMaster tags with the defaults. BKMTAGS.437 A symbol file for BookMaster and codepage 437 (the "PC" codepage). BKMTAGS.850 A symbol file for BookMaster and codepage 850 (the "international" codepage). BKMTAGS.INF The help file for BookMaster tags used under EPM (the alt_h command). You may delete this file is you don't use EPM. BKMTAGS.HLP The help file for BookMaster tags used by the Ctrl_h (help) command. This file is required if you use EOS2 or E3, and optional if you use EPM (where you may use the alt_h command to get help). EBOOKIE.INF The online version of the EBOOKIE User's Guide. FOILSDOC.SKL A sample foils document layout which is included when the ":gdoc." or ":foildoc" tag is typed. FOILS5.DEF This file contains all FOILS5 tags in GML notation with the defaults. GMLTAGS.DEF This file contains all GML Starter-Set tags with the defaults. IPFTAGS.DEF This file contains all GML Starter-Set tags with the USERDOC.SKL A sample document layout which is included when BookMaster formatting is selected, and a :userdoc tag is typed. ZDOCPROF.SKL A file which contains the ":zdocprof." tag definition. ZSTYLE.SKL A file which contains a BookMaster style template. ═══ 5. Changing the Defaults ═══ EBOOKIE is designed for great flexibility. Things that can be tailored include: o the tag definition files, where you can: - define the tag delimiters, and end-tag characters - define the tag you want to have inserted when you press the "alt_2" key - define the name of the symbol file - add new tags - remove tags you don't want to use - change the defaults of standard tags (required and optional parameters, cursor position, etc.) o the name of the default tag definition file(s) o the number of lines which should be searched if the file extension does not indicate a tagged file, and the file doesn't contain the EBOOKIE footprint. o the editing margins o the dynamic margins feature o the behavior of the macro when invalid tags are found o the debugging support o the user-exits during page-up, page-down, up, down, or enter-key processing o the symbol support o the contents of the symbol file o the parameter expansion of the space key o the file extensions which trigger the activation of the support o the attribute support o the margin changes in E3 o the index support o the cases of the index entries o the help support o the help files o the BookMaster reference support o the colors used by the attribute support o the default codepage for DOS versions below 3.3. The following chapters describe the procedures to change the various options. ═══ 5.1. Changing the Tag Definition File ═══ The following section describes how you can change the formatting of every tag. All tags are defined in tag definition files. EBOOKIE currently supplies five definition files: o bkmtags.def for BookMaster o gmltags.def for GML Starter-Set. o foils5.def for FOILS5. o apafoil.def for APAFOIL. o ipftags.def for IPF. You should not change those files. If you want to add some tags, or change the defaults provided for some tags, you may create you own tag definition file. These files consists of two parts. The first line is the "configuration" line, the rest of the file describes the tags. In the configuration line you can define: o The tag-start delimiter (":" in BookMaster, GML Starter-Set, IPF, and FOILS5, "<" in SGML). o The tag-end delimiter ("." in BookMaster, GML Starter-Set, IPF, and FOILS5, ">" in SGML). o The end-tag header (":e" in BookMaster, GML Starter-Set, IPF, and FOILS5, " >. 063 ? &quest. 064 @ &atsign. 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 [ &lbrk. 092 \ &bsl. 093 ] &rbrk. 094 ^ &caret. 095 _ &us. 096 ` &grave. 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 { &lbrc. 124 | &vbar. 125 } &rbrc. 126 ~ &tilde. 127  &house. 128 А &Cc. 129 Б &ue. 130 В &ea. 131 Г &ac. 132 Д &ae. 133 Е &ag. 134 Ж &ao. 135 З &cc. 136 И &ec. 137 Й &ee. 138 К &eg. 139 Л &ie. 140 М &ic. 141 Н &ig. 142 О &Ae. 143 П &Ao. 144 Р &Ea. 145 С æ. 146 Т Æ. 147 У &oc. 148 Ф &oe. 149 Х &og. 150 Ц &uc. 151 Ч &ug. 152 Ш &ye. 153 Щ &Oe. 154 Ъ &Ue. 155 Ы &os. 156 Ь &Lsterling. 157 Э &Os. 158 Ю &mult. 159 Я &florin. 160 а &aa. 161 б &ia. 162 в &oa. 163 г &ua. 164 д &nt. 165 е &Nt. 166 ж &aus. 167 з &ous. 168 и &invq. 169 й ®tm. 170 к &lnot. 171 л ½. 172 м ¼. 173 н &inve. 174 о &odqf. 175 п &cdqf. 176 ░ &box14. 177 ▒ &box12. 178 ▓ &box34. 179 180 181 ╡ &Ag. 182 ╢ &Ac. 183 ╖ &Aa. 184 ╕ &copr. 185 186 187 188 189 Ы ¢. 190 Э ¥. 191 192 193 194 195 196 197 198 ╞ &at. 199 ╟ &At. 200 201 202 203 204 205 206 207 ╧ ¤cy. 208 ╨ ð. 209 ╤ &Eth. 210 ╥ &Ec. 211 ╙ &Ee. 212 ╘ &Eg. 213 ╒ &idotless. 214 ╓ &Ia. 215 ╫ &Ic. 216 ╪ &Ie. 217 218 219 220 221 | &splitvbar. 222 ▐ &Ig. 223 ▀ &BOXTOP. 224 р &Oa. 225 с &beta. 226 т &Oc. 227 у &Og. 228 ф &ot. 229 х &Ot. 230 ц &mu. 231 ч þ. 232 ш &Thorn. 233 щ &Ua. 234 ъ &Uc. 235 ы &Ug. 236 ь &ya. 237 э &Ya. 238 ю &overline. 239 я ´. 240 - &minus. 241 ё &pm. 242 243 є ¾. 244 Ї &par. 245 ї &dbls. 246 Ў &div. 247 248 ° &sup0. 249 250 · &smultdot. 251 √ ¹. 252 № ³. 253 ¤ ². 254 ■ &sqbul. ═══ 7.1.2. The BKMTAGS.437 File ═══ 001  &face. 002  &FACE. 003  &HEART. 004  &DIAMOND. 005  &CLUB. 006  &SPADE. 007  &bul. 008  &revbul. 009 010 011 &male. 012 &female. 013 014  ¬e1616. 015 016  &rahead. 017  &lahead. 018  &udarrow. 019  &dblxclm. 020 Ї &par. 021 ї &dbls. 022  &dblus. 023  &udarrowus. 024  &uarrow. 025  &darrow. 026  &rarrow. 027  &larrow. 028  &lnotusd. 029  &lrarrow. 030  &TRIANGLE. 031 032 033 ! &xclm. 034 " &sdq. 035 # &numsign. 036 $ &dollar. 037 % &percent. 038 : &gml. 039 ' &ssq. 040 ( &lpar. 041 ) &rpar. 042 * &asterisk. 043 + &plus. 044 , &comma. 045 - &minus. 046 . &period. 047 / &slash. 048 049 050 051 052 053 054 055 056 057 058 059 ; &semi. 060 < <. 061 = &eq. 062 > >. 063 ? &quest. 064 @ &atsign. 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 [ &lbrk. 092 \ &bsl. 093 ] &rbrk. 094 ^ &caret. 095 _ &us. 096 ` &grave. 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 { &lbrc. 124 | &splitvbar. 125 } &rbrc. 126 ~ &tilde. 127  &house. 128 А &Cc. 129 Б &ue. 130 В &ea. 131 Г &ac. 132 Д &ae. 133 Е &ag. 134 Ж &ao. 135 З &cc. 136 И &ec. 137 Й &ee. 138 К &eg. 139 Л &ie. 140 М &ic. 141 Н &ig. 142 О &Ae. 143 П &Ao. 144 Р &Ea. 145 С æ. 146 Т Æ. 147 У &oc. 148 Ф &oe. 149 Х &og. 150 Ц &uc. 151 Ч &ug. 152 Ш &ye. 153 Щ &Oe. 154 Ъ &Ue. 155 Ы ¢. 156 Ь &Lsterling. 157 Э ¥. 158 159 Я &florin. 160 а &aa. 161 б &ia. 162 в &oa. 163 г &ua. 164 д &nt. 165 е &Nt. 166 ж &aus. 167 з &ous. 168 и &invq. 169 й &lnotrev. 170 к &lnot. 171 л ½. 172 м ¼. 173 н &inve. 174 о &odqf. 175 п &cdqf. 176 ░ &box14. 177 ▒ &box12. 178 ▓ &box34. 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 р &alpha. 225 с &beta. 226 т &Gamma. 227 у &pi. 228 &sum. &sum. 229 х &sigma. 230 ц &mu. 231 &tau 232 ш &Phi. 233 &theta. &theta. 234 ъ &Omega. 235 ы &delta. 236 ь &infinity. 237 э &phi. 238 &memberof. &memberof. 239 &meet. &meet. 240 Ё &identical. 241 ё &pm. 242 Є &ge. 243 є &le. 244 Ї &inttop. 245 ї &intbot. 246 Ў &div. 247 248 ° &sup0. 249 &lmultdot. &lmultdot. 250 · &smultdot. 251 √ &sqrt. 252 № &supn. 253 ¤ ². 254 ■ &sqbul. ═══ 7.2. Debugging EBOOKIE ═══ EBOOKIE has some debugging features which might be useful in determining erroneous behavior. If you have configured EBOOKIE for debugging (refer to Including the Debugging Support for more information), you have one additional command "bkmdebug" which controls the (few) debugging features. The command accepts one parameter (minimum abbreviations are shown in uppercase) which can be: ON Turns on debugging mode. EBOOKIE displays additional messages. All messages have to be acknowledged with the press of a key. OFf Return debugging to the default state (off). Display This option adds a few lines to the current file after the cursor position. The information displayed looks like: .**EBOOKIE**DEBUGGING**INFO**START** .* version: 2.2, DOS (OS/2) version=330 .* def: .D1 .* idx: .I1 .* avail: 1 .* save_file: BKMTAGS.DEF .* num: 2 .* cur_num: 1 .* rep_tag: :p. .* tag_start: : .* tag_end: . .* end_tag: :e .* inv_tag_rep: &colon. .* Files known to EBOOKIE: .* C:\E3\EBOOKIE\BKEYS.E == 0 || || || : || . || :e || &colon. || BKMTAGS.437 .* C:\E3\EBOOKIE\EBOOKIE.SCR == 1 || || :p. || : || . || :e || &colon. || BKMTAGS.437 .* symbols: [a lot of crazy looking characters] .* codepage= 437 .* sym_file= BKMTAGS.437 .* bkm_temp_path= C:ОTEMPО .* bkm_did_bkmattr= 1 .**EBOOKIE**DEBUGGING**INFO**END** version: The version of EBOOKIE and of the operating system you use. def: The internal tag definition file name. It consists of a ".D" followed by a number which should correspond to the number shown in "cur_num". idx: The internal name of the index. It consists of a ".D" followed by a number which should correspond to the number shown in "cur_num". avail: The "support available" flag. This flag is usually "1". If it is "0" the initialization routine could not locate the primary tag definition file, and the support is not available. If it "-1", the support has not been initialized. save_file:The name of all tag definition files used for this file. This is the same as show in the first line of the document. num: The internal number used for the next set of definition files and index. cur_num: The number of the current set of definition files and index. rep_tag: The tag which will be inserted and interpreted if you press the "alt-2" key. tag_start The first character of the tags. tag_end The terminating character of the tags. end-tag The character sequence which is common to all end-tags. inv_tag_repThe character sequence which replaces the tag-start character when an invalid tag is found. Files known to EBOOKIEA list of files known to the support. This might not include all files in the ring, some are excluded. The layout of this information is: name The name of the file. == Delimiter flag This shows the current editing status of the file. If this flag is zero, the file will not be touched by EBOOKIE. If it shows any other positive number, it is the number of the tag definition file and index used to format the file. || Delimiter tag The "between" tag which triggered a change in margins for this file. || Delimiter a_2 The text assigned to the "alt-2" key for this file. || Delimiter tag_start The first character of the tags. tag_end The last character of the tags. end_tag The character sequence which is common to all end-tags. inv_tag_repThe character sequence which replaces the tag-start character when an invalid tag is found. symbol_fileThe name and extension of the symbol file which is associated to this file. symbols A list of all characters which will be replaced by the appropriate BookMaster symbol. This line is blank when: 1. the support is not configured 2. no symbol file has been defined in the tag definition files 3. the defined symbol file has not been found. This line is shown only when the support for symbols is included. codepage The current codepage. This is used to determine the symbol file name. This line is shown only when the support for symbols is included. sym_file The name of the current symbol file. If this field is blank, the symbol support is inactive, even though it has been included into the configuration. between: The starting tag of a language construct which triggered a change in margins. If this is not blank, the margins have been changed to "1 254 1". This variable is shown only if you have included the dynamic margins feature. bkm_temp_pathThe path where EBOOKIE stores its index. bkm_did_bkmattrUsed in EPM only. This flag may have the following values: Flag Value 0 Support not active for this file. 1 Support active for this file. Trace Sets "echo on". Etrace Sets "echo off". ═══ 7.3. Procedures of EBOOKIE ═══ EBOOKIE is structured in various subroutines called procedures. The following list should assist you to find your way through the code. Procedure Function bkm_pgup() This procedure is called when you press the "page-up" key. Depending on your definition of the dynamic margins feature this routine does: 1. a normal page-up then 2. check each skipped line and change the margins if necessary. Note: This routine is only included if the dynamic margins feature is configured. bkm_pgdn() Same as "bkm_pgup", only in the other direction. bkm_up() Note: This routine is only included if the dynamic margins feature is configured. Called when you press the "up" key, or by the procedure "bkm_pgup". The current line is checked, and the margins are changed if required. Note: This routine is only included if the dynamic margins feature is configured. bkm_down() Same as "bkm_up", only in the other direction. Note: This routine is only included if the dynamic margins feature is configured. bkm_expansion(char) The main procedure of the macro. Something which could be a tag has been found, and has to be checked. First the line is parsed into three parts, the stuff before the tag, the tag itself, and the stuff after the tag. Then the index is searched (via the routine "bkm_find_tag)", and the tag is processed. Depending on the input parameter "char", which can be a space, or a period, the default and optional parameters are selected. Finally the tag-processing procedure ("bkm_process_tag") is called to insert the tag, the parameters, and the additional lines into the text. bkm_process(line,tag,char,force,parms,xother,beforelines) This routine is called from "bkm_expansion" and inserts the tag, the parameters, and the additional lines into the text. bkm_find_tag(tag) This routine searches the index for tag defined in the parameter. It returns "0" when the tag could not be found, otherwise it returns the line number of the tag in the tag definition file. bkm_say(msg,flag) Displays the message in the status line. If the flag is "1" it also waits for the pressing of a key. bkm_init() This procedure is called from the "DEFLOAD" processing in EOS2 and EPM, and from the "select_edit_keys" processing in E3. It checks the file and starts the support if necessary. bkm_select() Called during DEFSELECT or select_edit_keys() processing. Restores the environment for the current file. bkm_chg_def_file(file,force) This procedure opens the definition file(s) and the index. If the index is invalid, or does not exist, it is rebuilt. bkm_upd_line_one() Updates or creates the EBOOKIE footprint. bkm_switch(num) This routine is called during the "DEFSELECT" or "select_edit_keys" processing. It activates the current definition file and the corresponding index by setting the necessary global variables. bkm_findfile Searches the disk for the specified file. bkm_get(file) This routine is called when the support wants to "get" a file. In E3 and EOS2 it just does a "get", in EPM it does not use the command, it does it internally. This is because of some problems i have had with the "get" command in EPM. bkm_find_file(name) Called to find the current file in the internal (hidden) file ".BKM". bkm_upd_files(bkm,tag) Called to save some information in the ".BKM" file. Refer to Debugging EBOOKIE for a the layout of the data in this file. bkm_make_bkm() Called to open a hidden file with the name ".BKM". bkm_get_parms(line,flag) This routine parses the first line of the tag definition files, and sets the global variables accordingly. bkm_defload() This routine is called during "DEFLOAD" processing. bkm_defselect() This routine is called during "DEFSELECT" processing. bkm_upd_line_attr(linenum) Updates the attributes of the tag in the line with the number given as parameter. This routine is included only if the attribute support is configured. ═══ 7.4. Summary of Changes ═══ Version Date 1.00 10/05/89 First release to PCTOOLS. 1.01 10/13/89 Bug fixes: 1. Tags entered in any position on empty lines should be moved to position one. Additional functions: 1. Implementation of GML Starter-Set tags. 2. Configurable margins. 3. Use of DPATH, EPATH, or PATH to find tag definition file. This removes the requirement of specifying the constant "my_bkm_path" in MYCNF.E. 4. Tab-word changes. Within the text the tabs are one word at a time, right of the text it uses regular tabstops. 1.02 10/16/89 Additional functions: 1. Dynamic margins implementation. 1.10 10/24/89 Bug fixes: 1. When the tag was moved to a new line by the automatic word-wrap feature of "E", it was not processed properly. Additional functions: 1. Primary and optional tag definition files. 2. Footprint stored in user dataset, to restore correct tag definition files. 3. Automatic creation of the index to the tag definition file(s). 4. Debugging and message facilities. 5. The up, down, page-up, and page-down keys are treated like a period (end the tag). The left, right, and end keys are not intercepted any more, to allow the user more freedom during editing of the line. 6. Dynamic margins (optional). 1.11 10/28/89 Bug fixes: 1. The ":ledi" macro has an invalid flag. 2. Even though the manual indicates that the dynamic margins feature is not included by default, it is. 3. The "bookie" command doesn't work as expected. 4. Editing a file which contains anything which looks like a tag, results in the footprint being stored in the first line of the file. 1.12 10/30/89 Bug fixes: 1. Use the "message()" or "messageNwait()" routines instead of "sayerror" to get rid of the offending "getkey()" call in EPM. 2. Search for the tag definition files modified: EPM First use the "EPMPATH", then "DPATH". EOS2 First use the "EPATH", then "DPATH". E3 First use "EPATH", then "PATH". 3. The ":ledi" macro has an invalid flag (again!). 1.13 10/31/89 Bug fixes: 1. If more than one tag definition file is specified, EPM looses the "Esc" key or gets a trap 00D due to a problem in GET.EX. 1.20 11/13/89 Bug fixes: 1. Adding a new file to the ring with the "e" command in E3 or EOS2 results in the command line to scroll down by one entry. 2. After a type 4 tag has been processed the support is not active in E3. 3. When a colon of a tag has been accidentally erased and re-typed, it is replaced by "&gml.". Additional functions: 1. Every file in the ring may have its own set of tag definition files. 2. EBOOKIE can be an externally linkable module in EPM. 3. If the dynamic margins option is selected, restore the margins when the file is moved back to the active position in the ring. 4. Type 5 tags include a file into the document without the tag itself. 5. Each tag may also create lines before the tag. 6. Debugging code is now optional. 7. Detection of incorrect versions of the editor during compilation of EBOOKIE. 8. Allow more files per ring. 9. Each tag can define a tag or text which is assigned to the "alt-2" key. 1.30 11/24/89 Bug fixes: 1. Fix installation procedure documentation in Changing the Name of the Default Tag Definition Files. 2. Fix the colors in EPM. 3. Fix ":cletter." tag. Additional functions: 1. Support to switch off EBOOKIE with the "bookie off" command. 2. Implement third stage of expansion. Key Expansion level period required parameters. enter required parameters (same as period). space required and common optional parameters. c_space required and all optional parameters in EPM. c_enter required and all optional parameters in EOS2 and E3. 3. Implement a user-exit during page_up, page_down, and enter-key processing. 4. Replace special keys with the appropriate BookMaster symbols. 5. Ship EPM module compiled with version 5.15. 1.31 11/28/89 Bug fixes: 1. Fix ".nameit" in document. 2. Make it work together with E3NOTE. Additional functions: 1. Implement FOILS5 tags. 2. Include the symbol support by default. 3. Determine the codepage automatically during startup. 1.40 12/07/89 Bug fixes: 1. Pass c_enter to the routine my_c_enter() if no tag has been processed. 2. The "c_w" key does not work when EBOOKIE is installed. 3. The single quote character (') should not be replaced by the BookMaster symbol "&ssq.". 4. Symbol support should not be started when the DOS version is older than 3.3. 5. Remove EPM temporary fix for other language assist routines. 6. Fix style tags. Additional functions: 1. Replace colons of non-tags with "&colon." if using BookMaster. 2. Make EBOOKIE an externally linkable module in EOS2. 1.50 01/11/90 Bug fixes: 1. Fix ":gdoc." tag in "foils5.def". 2. Fix cursor position after "&colon." has been inserted in a BookMaster document. 3. Symbol support is not activated in DOS 3.3. 4. Support is not activated after a forced index creation in E3. 5. The symbol support is not deactivated after a "bookie off" command. 6. The symbol support is not activated when switching from a tag definition file which does not include the symbol support to a tag definition file which requires the support. Additional functions: 1. Add "my_up()" and "my_down()" user-exits. 2. Change symbol support: o Define name of symbol file in tag definition file. o Allow a separate symbol file for each set of tag definition files. 3. Configurable tag-characters to allow the implementation of SGML. 4. Make the symbol which replaces the tag-start-character of invalid tags a configurable option. 5. Implement APAFOIL tags. 6. Footprint may be anywhere at the beginning of the file, as long as there are only DCF comments (".*") lines in front of it. 7. Add the capability to pull a file into the text before the tag. 8. More than one file can be copied before or after a tag. 1.51 01/15/90 Bug fixes: 1. Can't compile "bkeys.e" when the symbol support is not configured. 2. Host support doesn't work in EPM. 3. The colors are reset to the defaults in EPM. 4. The "bookie on" command doesn't work in OS/2. 5. A "0" character terminates the tag input. 1.53 03/05/90 Bug fixes: 1. Fix the ":li." tag for APAFOIL. 2. The support doesn't work in OS/2 when the symbol support is not configured. 3. A message "Invalid number argument, Type any key" is displayed when the constant "my_bkm_search" is set to anything greater than zero, and a blank line is encountered during the search for tags. 4. Slow response of EPM after the "shift", "ctrl", or "alt" keys are pressed. 5. Slow keyboard in EPM. 6. The keys defined in mykeys.e don't work in E3 when EBOOKIE is active. Additional functions: 1. Option to configure the space key to expand all parameters. 2. Force cursor position with the "@" in the lines after the tag, even if the tag has some parameters. 3. Make the file extensions which trigger the activation of the support configurable. 4. Split the tag definition files from the "E" stuff and the executables. 5. Add limited attribute support for EPM. 1.54 04/20/90 Bug fixes: 1. EBOOKIE loops when the attribute support is active and a tag-end character is the last character of the line. 2. The :foilset tag in FOILS5.DEF has an invalid flag. Additional functions: 1. The "bkmsym" command to replace all special characters of the file with the appropriate BookMaster symbol. 2. The "index" command together with the "alt_i" key to create a simple index. 3. Option not to touch the margin setting in E3. 1.60 06/11/90 Bug fixes: 1. Index creation fails for small tag definition files. Additional functions: 1. Extensive help facility for BookMaster tags and their attributes. 2. Search for additional tag- and include files along the E(PM)PATH, then PATH (in DOS) or DPATH (in OS/2), then in the directory where the editor resides. 3. The index file is stored in the directory defined by the TEMP_PATH (in MYCNF.E or econfig.e), or in the directory where the main tag definition file has been found. 4. The tag definition files have the extension ".DEF", the skeleton files ".SKL". 5. IPF has been added. 6. The "alt_1" key pulls imbed or setup files in the ring. 1.61 07/01/90 Bug fixes: 1. Temporary path is invalid. 2. The BookMaster :hdref tag misses some attributes. 3. EPM 5.16 ends without any message when the alt_i key is pressed, and no block mark is active. Additional functions: 1. If the alt_1 key is pressed on a .using macro, the cursor is positioned at the active .mod macro in the mocha side-file. 2. Index entries are converted to lower case, except when words are all upper case. 3. Brackets and double quotes are removed during index generation. 4. The block mark for the index generation is removed after processing. 1.62 07/25/90 Bug fixes: 1. No need to load "attr.ex" for attribute support. Additional functions: 1. Remove attributes before adding new attributes with the "bkmattr" command. 2. Make the attribute colors configurable. 3. Add the "off" option to the "bkmattr" command to switch off the attribute support. 1.63 07/25/90 Bug fixes: 1. Remove STDCNF.E from externally linked module. Additional functions: 1. Remove attributes before adding new attributes with the "bkmattr" command. 2. Make the attribute colors configurable. 3. Add the "off" option to the "bkmattr" command to switch off the attribute support. 1.64 10/26/90 Bug fixes: 1. Fix .im processing for host files. (Thanks to Pat Lockhart for the fix.) Additional functions: 1. EPM 5.18 attribute support. 2. Create an "Ebookie" action in the action bar of EPM. 1.65 12/13/90 Bug fixes: 1. Several fixes for the attribute support under EPM 5.19. 2. Fix problem with a_2 key. 3. Fix :cletter tags (:loc was missing, behaviour of other tags was not usable). Additional functions: 1. Add "my_bkm_keep_index_cases" configuration option. 2. Support symbols in DOS releases older than 3.3. 3. Add "my_bkm_codepage" configuration option. 4. Support to keep tags where they have been typed, don't move them to column one. 5. Additional help support for BookMaster version 3 tags with the "c_h" key. Thanks to Mike Temple. 1.66 05/06/91 Bug fixes: 1. Make the attribute support work under EPM 5.20 2. Fix the :cit tag. 3. A variable was not correctly initialized causing the first tag to be expanded incorrectly. Additional functions: 1. Search for help file for all tag definition files defined in the footprint. 2. Use Mike Temples help support in EPM with the a_h key, the c_h key has been removed. 3. The extension of the imbedded file (with alt_1) now is dependent on the file type specified in the .im macro. 4. Link the definition files to the extension. 5. Option to automatically do a "bkmattr" command during file load. 6. Add the EBOOKIE Users' Guide as viewable document under OS/2. 1.70 09/16/91 Bug fixes: 1. Make it work under EPM 5.50. Additional functions: 1. Re-implement the Ctrl_h key for help. 2.0 05/28/92 Bug fixes: 1. Tested with OS/2 2.0 and the latest macro library Additional functions: NONE. ┌────────────────────────────────────────────────────────────┐ │Warning │ │ │ │ │ │The attribute support for EPM 5.50 has been temporarily │ │removed. │ └────────────────────────────────────────────────────────────┘ 2.2 03/29/93 Bug Fixes (most fixes thanks to Larry Margolis): 1. Added WANT_EBOOKIE flag so users can easily include or omit EBOOKIE support via MYCNF.E. Also can set to DYNALINK so users who only use it occasionally don't have to have BKEYS.EX loaded all the time, but it can dynamically be linked in when needed. (See comments in MYSTUFF.XMP.) 2. Fixed up mnemonic on action bar so it works with the current set of macros, and defined the 'B' as an accelerator key (in 5.50 or above) so it wouldn't hide alt+B as block mark. 3. Restored attribute support for EPM 5.50. Made a change so that inserting characters at the end of a tag won't include those characters in the highlighting. Haven't been able to figure out how to make it work between a pair, but rather than omit the support because of this, I added a "Fixup attributes" entry to the menu. (I'll see if Jason can suggest anything.) 4. Proper support for Enhanced_Enter_Keys. Changed default bkm_attr_colors, since it didn't match the documentation. (Was 92, light red on a magenta background, which wasn't too readable; EBOOKIE SCRIPT said the default was "white on pink", which is 95 if pink means magenta, or 223 if pink means light magenta; I assumed the latter.) Added a KEEP_HELP_AT_RIGHT option to specify whether the Help menu should be maintained as the rightmost menu. Assumed a default of 1; you can change it if you disagree. (Note that this isn't a BKM_ constant, because other add-ons could use the same flag.) Got rid of all the Attribute support universals; most weren't used, and the couple that are I made constants (saves overhead of initializing the universal variable). 5. Various code optimizations. 6. Deleted some "return 0" at the end of routines where the result was never used. The compiler always adds a "return" at the end of all routines, so the explicit "return 0" was a waste of code in many cases. 7. Better fix to link error (so don't lose module number). Deleted the include of EPMGCNF.SMP and LINK.E; you might want to ship a .ex file configured that way, but it's wrong for anyone who's recompiling. Also deleted call to 'loadattributes' from bkm_init, since that gets done by the DEFLOAD in LOAD.E. 8. Pass along BKMHELP argument to bkm_help(), in case user wants to specify 'a' or 'c'. 9. Added call to fixup_cursor() for GPI version of EPM. 10. Added support for REXX_SYNTAX_ASSIST to BKM_select(). 11. Preserved .modify when adding footprint to a new file for quicker quit. 12. EPM shouldn't be searching EPATH. 13. Supply a BKEYS.EX for EPM 5.51 users. 14. Fix 'CALL: unknown Proc MY_ENTER' error 15. Fix startup if file has no extension or filetype. 16. Fix the word wrapping problem. 17. BKEYS.E doesn't compile with "WANT_EBOOKIE = 1", where the code is included in the base .EX files. 18. my_bkm_ext_def doesn't work correctly, and is not properly documented. 19. Add "bkmsym on" and "bkmsym off" commands, change pulldown 20. Fix query codepage for EPM 6.0 21. The syntax support is incorrectly switched on after a tag is entered. 22. The file IPFTAGS.DEF contained invalid characters. 23. EPM 6.00 needs Dynalink32() instead of Dynalinkc(). Additional functions: NONE ═══ 7.5. Planned Enhancements ═══ Due to lack of time: NONE.