******************************************************************************** E! - version 5.15u - Documentation update / Information file ******************************************************************************** 旼컴컴컴컴컴� 쿥ARNING !!!� 읕컴컴컴컴컴� This file contains a lot of new information about changes made to E! since the last documentation update. I highly recommend that you read this file thoroughly again after having read the documentation file. E! has many features and you will not learn all commands at one go. 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿥E ARE LOOKING FOR A COMPANY INTERESTED IN DISTRIBUTING E!� 쿔N THE UNITED STATES AND IN CANADA. � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴� If you appreciate the features of this editor and think it could be marketed in your country, please contact : Patrick Philippot (the author) 15 avenue des PRES PIERRE 91210 DRAVEIL FRANCE Thank you for your interest in E!. ******************************************************************************** 旼컴컴컴컴컴컴컴컴컴컴컴컴컴� 쿐! SHORT INSTALLATION GUIDE� 읕컴컴컴컴컴컴컴컴컴컴컴컴컴� To install E!: 1/ The following applies only if you received E! on two 360k diskettes or on a single 720k diskette. If you downloaded E! from a BBS you certainly have already unpacked E515UD.ZIP and E515UE.ZIP. You don't need to run INSTALL.BAT. Otherwise..... Run INSTALL.BAT from diskette #1 and follow the instructions. All you need to know before running INSTALL.BAT is the drive where you want to install E!. INSTALL x: y: x is the drive from where the E! diskettes are read y is the hard disk drive where you'll install E! You can also install E! "manually". Just copy all files of all your E! diskettes in a directory of your choice and run E!DISK1.EXE and E!DISK2.EXE. That's all. Running E! from diskettes: ************************** E! is designed to run from a hard disk. If no EMS is installed, running from diskettes may considerably slow down the program execution. Nevertheless, it's possible. Just copy to a diskette all the files that are absolutely necessary to run E! normally: E!.EXE E!.HLP E!.MSG E!.PRO (E!KEY.HLP) Don't forget to set the E! environment variable to the appropriate value. See below. 3/ At the DOS prompt enter SET E!=C:\E! (drive and directory where you installed E!). If you have a RAM drive copy all files to it in your autoexec.bat and use it as E! environment variable. 4/ At the DOS prompt enter E! E!.PRO and "uncomment" all options you want to activate. E!.PRO is a self-explanatory file. Save it using F2. This step is not mandatory and you may leave the main profile unchanged. Changes to the main profile can be made later. 5/ Eventually enter SET E!PATH=path;path;..... at the DOS prompt. If E! don't find the specified files in the current directory, it will search in all paths specified in E!PATH or in the APPEND command of DOS. 6/ Include the directory where you installed E! in your PATH command. So far, you're done. To edit one or more files enter E! filespec1 filespec2 .... at the DOS prompt. /L or /l anywhere on the command line will reload all files edited in the last session of E! in the current directory ( if you have activated the LOG switch in your active profile). To print the documentation, just enter "type e!.doc > prn" at the DOS prompt. E!.DOC is pre-paginated. Don't be afraid by the size of E!.EXE. It contains overlays which are loaded on demand only. E! doesn't occupy that much memory! I really hope E! will be very useful to you and pleasant to use. Have fun! 旼컴컴컴컴커 쿐! HISTORY� 읕컴컴컴컴켸 I'm a System Engineer working at IBM in France and I used many text editors in my programmer's life (I'm not a programmer at IBM though). The best tools I've seen (until I wrote E!) are BRIEF and E3, an IBM internal use only editor. They are very powerful programs but they both have the same drawback : they do not have many basic functions and they have to be programmed to offer more sophisticated features. Well, I think many people don't want to spend time programming the tool they use to write programs... Hmm, you see the idea? So I wrote E!. Many functions, quick, efficient, macros capabilities but no programming (at least in the first versions). I'm personnaly very pleased with the result but it's up to you to say if you are too. Many users told me it was necessary to do something more than the simple macros implementation. So the E! API was written, allowing the programmer to use his usual programming language to write new E! functions and add-in. It took many of my time from the past three years to write and enhance this program but it was really exciting. It was first written using Turbo Pascal 3.0 but I quickly got problems with the program size and I used TurboPower's Turbo Extender to produce a 150 kb monster. Versions 2.x and 3.x where rewritten using Turbo Pascal 4.0 and Assembly language (Microsoft MASM) for some video routines. Version 4.0 has been compiled with Turbo Pascal 5.0. Version 5.xx was compiled using Turbo Pascal version 5.5. Beta testers were professional programmers. They have been very cruel to me but this helped a lot... and now they're using E!. Planned enhancements are : ("planned enhancement" has here the same meaning as in the IBM dialect; I sincerely plan to do this but I can't tell when I'll achieve it) - Regular search expressions (although I never used them with other editors but many people do) ** done - EMS support (it will be very difficult due to the E! structure) ** done - OS/2 version All of this will depend on the success E! will gain among text editors users. There are many techniques used to design an in-memory text editor. The linked list method (Borland Editor toolbox) is very easy to implement but has very poor performances. Moreover, block manipulation is very difficult with such a structure. The "contiguous block" design and the "contiguous block with moving hole" design are very efficient for string search but too slow for lines or strings insertion when the block becomes bigger. I used a technique that could be called "dynamic pointers arrays allocation". A text in E! is represented by an array of pointers to text lines. This array is an element of a larger structure describing the current text. These structures are linked together in a circular list. A new text structure can easily be created and inserted in the circular list. The big difficulty is to manage the pointers arrays size when the text is loaded and when lines are inserted. This method cumulates advantages of other methods and has few drawbacks (except EMS cannot easily be implemented). It is easier to manage blocks with an array of strings. But since this array is actually not an array of fixed length strings but an array of pointers to strings, memory resources can be managed efficiently and no space is wasted. In E! there is never ONE extra byte allocated for a string that shouldn't need it. Inserting and deleting lines in such a structure is very easy since we have only to move pointers and not whole strings. 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 쿘ODIFICATIONS SINCE LAST DOCUMENTATION UPDATE � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 The AUTOTAB feature has been modified. If there is no possibility to find on the previous line the beginning of a word which is located AFTER the current position of the cursor, E! will search back in the text until he finds a line which matches this requirement. You'll see that this new behaviour make things quite easier when you want to align text on previous marks. *************************************************************************** The QQUIT command will now display how many files are not saved and ask for confirmation before exiting E!. *************************************************************************** To support the DOS 3.3 and above "APPEND" function, E! also looks for executable files in the paths specified by the APPEND environment variable. Though, you should have launched the APPEND function with the /E option in order to get this support from E!. *************************************************************************** The KBDTEST utility displays the scan code returned from your keyboard handler by any keystroke combination. This will allow you to correct the behaviour of a non compatible keyboard handler using the DEFINE command. Just enter KBDTEST on the DOS (or E!) command line. *************************************************************************** DOS command interpreters like 4DOS(tm) are now supported thru the use of the INTERNAL.LST file. See documentation. *************************************************************************** NEW! NEW! NEW! NEW! NEW! NEW! �袴袴袴袴袴袴袴袴袴袴袴袴袴袴敲 튝ULTIFILE COMPILATION SUPPORT� 훤袴袴袴袴袴袴袴袴袴袴袴袴袴袴� E! version 5.1x now supports compilation of programs involving several source files. This means that E! now works like an integrated environment and that it can display errors spread over several files. To put this new feature at work you just have to create a PROJECT file where E! will find the name of all source files involved in the compilation process. Following are the rules which apply when creating this file: 1. Only one filename per line 2. Wildcards (* and ?) allowed 3. Filename may include a path. If not, the file must be located either in the current directory or in a directory specified with E!PATH. 4. Blank lines allowed 5. Comments allowed : lines beginning with '**' as first non blank characters The name of the PROJECT file defaults to E!.PRJ but you can change it by either issuing a "PROJECT filename" command on the E! command line or by inserting a "PROJECT filename" directive in your main PROFILE. The PROJECT filename may include a path. Entering "Project" without any parameter on the E! command line will display the actual project name ready for editing. Notice that the PROJECT filename must exist before declaring it with the "Project" command. That's all. Like before, use the COMPILE directive in your main PROFILE and the COMPILE command on the E! command line to activate the compilation process. E! will manage to locate the errors in the declared files. Alt F8 and Alt F9 will switch from error to error, editing a new file if necessary. If a source file used by the compiler contains an error and if it is not found in the PROJECT file, E! will edit the .ERR file generated during compilation. This new feature has only one limitation at this time: compilers issuing error messages including incomplete filenames, that is, filenames without any extension, are no longer supported in multifile mode. If no PROJECT file has been declared or if E!.PRJ is absent, the compilation process will be exactly the same as with previous versions of E! : errors will be searched and displayed in the current file only. Errors located in other files will cause E! to display the contents of the .ERR file instead of creating an internal error list. Notice that there's no need to have one file for each project. You may have a unique PROJECT file for several programs. You may want to separate the files involved in each process with comment lines. However, you should consider that the PROJECT file is entirely read into memory each time a compilation begins. The bigger the PROJECT file, the lesser the remaining memory. This is really not a concern if the number of files is small but you'll have to use DOS wildcards very carefully if your directories contain a big number of files. You'll certainly have to modify all of your COMPILE directives in your main PROFILE to reflect this change. The number of COMPILE commands that you may insert in the main PROFILE has been increased from 5 to 10. *************************************************************************** A new command and profile directive has been added. TABINC allows you to specify a non standard TAB increment (default is DOS standard : 8). Just enter TABINC n on the E! command line or insert that line in your profile and reload it. This will allow you to load files generated by other editors which may not use the standard tab increment. TABINC may range from 1 to 80. TABINC entered without any parameter on the E! command line displays the current value ready for editing. Be aware that this new value is taken into account when compressing or expanding the file. *************************************************************************** Note 1 in the LIST command section is obsolete. Hitting Ctrl Z against the "." and ".." directories names displayed on the screen will display the expected directory. *************************************************************************** WINDOWS DDE SUPPORT ------------------- A new command allows you to transfer the contents of the Microsoft Windows Clipboard (if the latter contains data in TEXT format) into a text edited by E! or to transfer a marked block (or a group of marked lines) to the Windows Clipboard. To do so, E! uses the DDE feature of Windows. To transfer text from or to the clipboard simply enter the CLIPboard (CLIP is enough) command on the E! command line with one of two options : GET or SET. CLIPboard GET will insert the contents of the clipboard into the current text. CLIPboard SET will load the clipboard with the current marked block or the current group of marked lines. Naturally you can assign this command to a key. Tab characters are expanded during the transfer from the clipboard. The TAB increment used is the one defined in your profile or the default E! value (8). It may be different from the increment value used by the Windows application which loaded data into the clipboard. If the clipboard contains no data in TEXT format, nothing happens and no message is issued. This is the same if the loading of the clipboard from E! failed. Text blocks greater than 64k cannot be transferred. WARNING : Windows doesn't use the ASCII character set but the ANSI set. This means that sometimes a conversion could be needed. For this purpose, 2 utilities are provided : EOEM2WIN and EWIN2OEM. Though, this will be most useful for the european users. EOEM2WIN converts the currently edited text to the WINDOWS (ANSI) format. EWIN2OEM does the opposite conversion. Please run these programs from the E! command line as API programs, that is, with the "@" prefix. To do a partial conversion enter the start line number and the end line number as first and second parameter respectively: @EWIN2OEM 10 150 In the case of a transfer from the clipboard to E!, you'll use the EWIN2OEM program AFTER the transfer. In case of a transfer from E! to the clipboard you'll use the EOEM2WIN program BEFORE moving the data. *************************************************************************** 旼컴컴컴컴컴컴컴컴컴컴컴컴커 쿐! TIPS, CAVEATS and HINTS� 읕컴컴컴컴컴컴컴컴컴컴컴컴켸 If you use E! as "everyday" editor you may want to copy E!.EXE and all files related to E! on your RAM disk (if you ever installed any one on your system) each time you initialize your computer (autoexec.bat). This way, E! will edit your files very quickly and your macros will execute faster (although they perform very good even if you run them from a hard disk). Don't forget to set the E! environment variable to the right value. Likewise, it will be a good idea to install H!.EXE and P!.EXE on your RAM disk. ************** Personally, I have programming profiles and text editing profiles. I use different color settings for each profile type. So, I always know by simply looking at the screen which profile is active. If you have to permanently switch between two profiles, it will be a good idea to assign, in each profile, the execution of the other one to the same key. Assuming you are using PROG.PRO and TEXT.PRO, you can insert the following statements in each profile: in PROG.PRO : Define 415 $f:text.pro ** Alt End in TEXT.PRO : Define 415 $f:prog.pro ** Alt End The LOADEXT utility (API program) can help you loading profiles related to a specific extension. ************** Macros are generally used to avoid repetitive tasks but you can also use macros to implement new E! functions. Here is a little example: Generate the following macros using MACGEN and give them the following names: GOLEFT.MAC GORIGHT.MAC [EDITMODE] [EDITMODE] [BLOCK_MARK] [BLOCK_MARK] [LEFT] [RIGHT] [MOVE_BLOCK] [RIGHT] [UNMARK] [MOVE_BLOCK] [LEFT] [UNMARK] I have assigned these macros to my Alt F11 and Alt F12 keys. Now, if I hit one of these keys, the current character is moved smoothly to the left or to the right. This is very useful, for example, when you type characters in reverse order (something I use to do very often). ************** Don't set the DELAY value too low. It could then be possible that you never see the E! messages. ************** Deleting a very big block or group of lines may take a few seconds. This is because E! is trying to keep your memory space as clean as possible. So, it will be possible to run bigger programs when you make a DOS "shell". ************** If you receive a "source and destination conflict" message when you are trying to move a block with Alt M, use the Alt A (adjust) function instead. ************** The E! HELP file cannot be as accurate as the E! documentation. If you get inconsistent information between the HELP file and E!.DOC, always believe E!.DOC or READ.IT. H! is a more complete and independent HELP program. ************** Don't set the TYPEMATIC autorepeat rate too high. You could find you deleting more lines than you really wish to (I told you E! is quick). ************** 旼컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴커 쿟his will be repeated in the E! documentation but it is VERY� 쿶mportant. DO NOT SET the "IBM101T" profile command to YES� 퀅nless your computer is equipped with an enhanced keyboard BIOS.� 쿟hat is, a BIOS processing services #10h and #11h of the BIOS� �16H interrupt handler. Doing so will cause your machine to hang. � 읕컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴컴켸 ************** If the current text path is very long ( over 47 characters), it will appear truncated on the command line. Don't worry. This is only done at display time. ************** Reading the documentation again showed me that the PROFILE command has not been explained that much. This is the command you'll use to load a new profile, that is, to reconfigure E! dynamically while editing. Modifying the main profile or another profile doesn't change anything to E!. The profile must be explicitly loaded to act upon E! configuration. There is no way to change a PROFILE value unless you override it with a new profile. For example, if you changed the screen colors with a profile, reloading the main profile will not reset the colors to the default values unless you explicitly set them in the main profile. Profiles apply to the whole editing session. If you want to load a profile specific to a filetype (extension) you may want to use the LOADEXT utility. I have assigned this utility to the CTRL K X key. It would not be a reasonable choice to have a set of configuration variables for each filetype because of the memory consumption overhead this would cause. ************** Patrick PHILIPPOT. 10/1/90 ******************************************************************************