home *** CD-ROM | disk | FTP | other *** search
- MicroEMACS 3.11c for Windows, update 1.0 by Pierre Perret
- ======================================== April 17, 1992
-
- Files in this archive:
- ---------------------
-
- README this file
- MEWIN.EXE MS-Windows executable
- EMACS.RC sample start-up macro tailored for the Windows environment
- MDI.CMD macro file for those who like to have one file per screen
- CUA.CMD macro file for CUA-like mouse and keyboard behaviour
- EMACS.INI EMACS-related information to be put into WIN.INI
- DOSBOX.PIF |
- DOSEXEC.PIF | PIF files used when launching DOS sessions from EMACS
-
- INSTALLATION
- ------------
-
- Put the EMACS.RC, MDI.CMD and CUA.CMD files in the same directory as
- MEWIN.EXE (this directory does not need to be mentionned in the DOS
- PATH). Copy the contents of EMACS.INI into your WIN.INI file and edit
- the DosBox and DosExec entries to reflect the location of the DOSBOX.PIF
- and DOSEXEC.PIF files (for instance, the directory where MEWIN.EXE
- resides). Once its contents have been copied into WIN.INI, EMACS.INI is
- no longer needed.
-
- EMACS.RC and MDI.CMD are setup for displays that can accomodate a text
- width of at least 100 character. If you have a pure VGA or lower
- resolution display, you should remove the lines:
- 100 change-screen-width
- and
- 80 change-screen-width
- in, respectively, EMACS.RC and MDI.CMD. For a consistent and wide
- display area, you may also want to add the line:
- InitialSize=optimized
- into WIN.INI, within the [MicroEMACS] section.
-
- Other files:
- -----------
-
- MicroEMACS normally comes with documentation and a bunch of scripts (aka
- macros or "command files"). They are not supplied in this archive, but
- are available separately. The files for release 3.11 are the ones you
- need and they are available from a number of sources, including:
-
- - COMPUSERVE, forum IBMAPP, library 1 for the executables (UE311I.EXE),
- official 3.11 release readme file (UE311.TXT), reference manual
- (UE311D.ZIP) and macros (UE311M.ZIP). forum IBMPRO, library 3 for the
- official 3.11 sources (UE311C.ZIP, UE311H.ZIP and UE311K.ZIP).
-
- - BIX, in the editors conference's listing area.
-
- - various Internet hosts among which wuarchive and simtel20.
-
- - The Programmer's Room BBS (see below)
-
- The sources for this port are available in a separate archive. They are
- in C language and geared to be compiled by Borland C++ 3.0 or Turbo C++
- 3.0 (Windows-hosted compiler).
-
- An exhaustive on-line documentation (in Winhelp format) is in the works
- and will be distributed in a separate archive as soon as it is complete.
-
- HOW TO REPORT PROBLEMS OR SUBMIT SUGGESTIONS
- --------------------------------------------
-
- The prefered way to reach me to discuss about this program is through
- CompuServe, in the Shareware/Freeware section of the WINADV forum or on
- BIX in the editors conference, in the emacs topic. My CompuServe ID is
- 73757,2337 and my BIX Id is pierre_perret. You can also send Email
- directly to those accounts, but forum/conference transactions have the
- advantage of being viewable by others.
-
- If you do not use CompuServe or BIX, but have Internet access, you can
- exchange Internet mail with me by sending it to pap@myths.az05.bull.com
-
- Other channels include:
-
- - Phone:
- (602) 862-5448 at my office (9am - 5pm)
- (Note: hours given for Mountain Standard Time, no daylight savings)
-
- - US mail: Pierre Perret
- 4326 W Michigan Avenue
- Glendale Az 85308
-
- - The Programmer's Room BBS at (317) 742-5533 (300/1200/2400 and 9600
- [Hayes V series only], no parity, 8 databits, no stop bits). However,
- since this is a long distance call for me, I do not check-in very often.
- I am registered under my real name (Pierre Perret).
-
- Please note that I am the author of this Windows port, not the author of
- MicroEMACS itself. Problems that also occur with the standard 3.11
- editor should be reported to Dan Lawrence on the Programmer's Room BBS.
-
- USAGE NOTES
- -----------
-
- In doing this port, I have tried to preserve as much as possible the
- MicroEMACS way of doing things, for the sake of minimizing changes in
- the editor core...
-
- VOCABULARY:
-
- MicroEMACS calls "screens" what really should be called "MDI windows"
- and calls "windows" what should be called "panes". Changing those
- definitions in the Windows implementation would impact all the commands
- that deal with "screens" and "windows" and would therefore break most
- macros.
-
- INPUT TO THE MESSAGE LINE:
-
- Depending on the particular command that requested such input,
- MicroEMACS implements varying character handling methods that are
- definitely not CUA-compliant.
-
- TEXT SELECTION:
-
- Contrary to CUA standards, selections are not highlited (this is
- tough to implement since the core editor does not establish a clear
- relation between the "region" and the position of the concerned
- characters on the screen).
-
- MOUSE HANDLING:
-
- Due to its mainframe heritage, and also it's capability to redefine
- mouse behavior by macros, Emacs' mouse handling differs significantly
- from that of other Windows applications (CUA-compliant ones):
-
- - Emacs's notion of a double click is completely unrelated to the time
- elapsed between two clicks. A double click is considered such if the
- caret is at the same screen coordinates on both clicks.
-
- - dragging with the left button pressed does not select text, it drags
- the text across the viewport, horizontally or vertically.
-
- - dragging with the right button pressed selects the text and:
- 1) makes it a "region"
- 2) copies it to the "kill buffer"
- 3) if a double click occurs at the end of the drag, the selected region
- is deleted
-
- - clicking with the right button (without dragging) inserts the contents
- of the kill buffer at that location.
-
- The CUA.CMD file included with this package, loaded by the included
- EMACS.RC, contains macros that modify the standard MicroEMACS mouse
- bindings to provide a CUA-like interface.
-
- CURRENT WORKING DIRECTORY:
-
- The current working directory and selected drive is always set to the
- file path associated with the current "window". If that path is not an
- absolute one, it is dependant upon the previously visited directory
- paths (including the directory field that appeared in a file dialog box,
- even if the operation was cancelled).
-
- EXTENDED CHARACTERS:
-
- The Windows environment is quite unlike DOS when translating keypresses
- into characters. This port of MicroEMACS to Windows tries to give a mostly
- DOS-like feel to the user. However, there is one area where it seems
- hopeless: extended characters. These are the characters that do not
- correspond to an actual key on the keyboard. Under DOS, they are
- obtained by maintaining the ALT key down, while "dialing" the decimal
- value of the desired character on the numeric keypad, using the "IBM-PC
- Extended Character Set" table.
-
- Unfortunately, Windows is very much slanted towards ANSI and, as a
- result, the keyboard driver wants to deliver ASCII character codes not
- from the despised IBM-PC set, but rather from the ANSI table. For
- instance, the code for the Mu (or Micro) greek sign is 181 in ANSI and
- 230 in IBM-PCese.
-
- "Well, who cares ?" you say, "the table comes into play only when the
- characters are actually displayed on the screen, so the font's character
- set is what matters".
-
- NOT!
- The keyboard driver designers must have concluded that users had rote
- knowledge of the IBM-PC table and could not possibly be asked to look
- upon the wonderful but mysterious ANSI table. So, they went out of their
- way to provide a translation! What it boils down to is this: if you dial
- say, 230 on the numeric keypad while holding ALT down, a Windows
- application will not receive code 230, but code 181, which is the
- equivalent character in the ANSI table! Worse, the mapping is full of
- holes, so the following dialing codes: 158, 159, 176 to 224, 226, 228,
- 229, 231 to 240, 242 to 247, 249 to 252 and 255, are all given back to
- the hapless application as code 95 (underscore)!
-
- The net result:
-
- If you display your text in an ANSI font and use the IBM-PC table to
- dial the extended character codes, you will see the expected rune appear
- on the display (unless you happen to dial into one of the holes
- mentionned above in which case an underscore is all you will get). Of
- course, the code saved in the file will not exactly be what you dialed!
- On the other hand, if you are using the OEM font (which uses the IBM-PC
- character set), or if you read the resulting file under a DOS editor, it
- may look a bit weird.
-
- FEATURES OF THIS WINDOWS PORT (over what is standard in MicroEMACS 3.11c)
- -----------------------------
-
- MENUS:
-
- I have put most of the functions available in MicroEMACS into a set of
- menus (some with nested popups). There are a few MicroEMACS functions
- that would not make much sense in a menu and have therefore been
- excluded. A few menu items have no equivalent function in the MicroEMACS
- macro language.
- In addition to the standard Windows convention of appending an ellipsis
- to menus items that beget a dialog box, I have used the following: a
- colon is appended to menus items that require a user response on the
- message line and an equal sign is inserted in front of items that
- require an argument to have been entered (by META + digits).
-
- Key bindings are displayed in the menus, using the Windows format for
- key descriptions instead of the MicroEMACS format (which, for some
- function keys, can be quite cryptic).
-
- Some menu items may appear grayed if the context is such that they are
- unuseable.
-
- For those who recompile this program with source-level debugging, there
- is an extra menu item "Break to debugger" that can be added by a small
- change at the end of mswmenu.h. This menu item can be useful to give
- control to the debugger when, for instance, you need to set breakpoints
- before trying some misbehaving feature. In the released executable, this
- menu item has been disabled.
-
- ALT KEY HANDLING:
-
- In Windows applications, the Alt key can be used in combination with a
- letter or digit to pull down a menu from the menu bar. In MicroEMACS,
- bindings have the priority over those menu bar accelerators. Thus, if
- there is a conflict between a menu-bar accelerator and an emacs binding,
- the accelerator looses. On the other hand, trying to create a new
- binding interactively by simply invoking bind-to-key or macro-to-key
- will not be possible if the desired binding matches a menu-bar
- accelerator.
- Note that a menu can still be invoked from the keyboard, even when the
- accelerator conflict with a binding, by pressing AND releasing the Alt
- key and THEN hitting the accelerator character.
-
- "NOT QUIESCENT" STATE:
-
- If a macro is executing, most menu selections cannot be processed (the
- editor is said to be in the "not quiescent" state) because a lot of
- MicroEMACS functions are not quite reentrant. This is reflected by a
- change of the mouse cursor from a pointing finger to a color-inverting
- arrow.
-
- $SRES VARIABLE:
-
- To allow Windows-aware macros, the $sres is set to "MSWIN" and cannot
- be modified (trying to set it has no effect, but it returns no error).
-
- NEW MICROEMACS FUNCTIONS:
-
- tile-screens
- cascade-screens
- minimize-screen
- maximize-screen
-
- These functions allow shuffling of screens (aka MDI windows) from
- EMACS macros.
-
- rename-screen
-
- This one allows you to change the name of the current screen (that
- type of command is not of much use under the other versions of EMACS
- since screen names are rarely displayed).
-
- clip-region
- cut-region
- insert-clip
-
- These supplement copy-region, kill-region and yank, but instead of
- addressing the kill buffer, they address the Windows clipboard.
-
- bind-to-menu
- macro-to-menu
- unbind-menu
-
- These functions allow dynamic modification of the menus. An example
- of their use appears in the EMACS.RC sample startup file.
-
- help-engine
-
- This allows a macro to invoke the Windows Help engine. Look for
- a couple of examples in the supplied EMACS.RC.
-
- LONG OPERATIONS:
-
- When performing long operations (macros with loops, searches, file
- IOs...), this program lets other Windows applications have a piece of
- the CPU pie by yielding at regular intervals (see the TimeSlice profile
- value in EMACS.INI). During these periods, a few menu options are still
- available, among which quitting (Exit in File menu or Close in system
- menu). Note that if the user attempts to quit while a file is being
- written out, a confirmation is required (the same happens if there are
- changed buffers).
-
- In Windows, yielding is only possible if the application has exhausted
- its input message queue. As a consequence, EMACS cannot ignore typeahead
- while attempting to yield. One particular side effect of this is that if
- you do a ^X^F (find-file) followed by <name_of_file><RC> while a lengthy
- operation is going on, EMACS absorbs those keystrokes and has to refeed
- them into the "Find file" dialog box when it eventually pops up. I have
- implemented a mechanism for dealing with this, but it handles only
- simple ASCII characters and just throws away any other keystroke (for
- instance, arrow keys are not forwarded to the dialog box).
-
- FONTS:
-
- The Font item in the Screen menu brings up a dialog box that allows the
- user to select a fixed font to be used. This font description can be
- saved in WIN.INI so that subsequent invokations of MicroEMACS use it at
- startup.
-
- LOCAL AND GLOBAL MODES:
-
- The Mode and Global mode items of the File menu bring up dialog boxes
- that offer a user-friendly way of setting the CMODE, VIEW, EXACT, MAGIC,
- etc... modes.
-
- FILE DIALOG BOX:
-
- Instead of using a message line interface with attempted completion of
- file names, this program pops up a dialog box whenever a filename has to
- be supplied by the user. This is an attempt at CUA compliance. It also
- has the side effect of supplying the editor with fully qualified
- pathnames. The handy filename completion feature has been implemented as
- well, with the addition of auto-scrolling of the filename list.
-
- HELP SYSTEM:
-
- The first four items in the Help menu are intended to load the MEWIN.HLP
- help file into the Windows help engine. Building this file has been a
- major undertaking that, I must admit, I had underestimated (never done
- any hypertext documents before). At this time, it is still incomplete
- and a large number of the MicroEMACS command descriptions are missing.
- Hopefully, I will manage to release it within a month or so...
-
- ------------------------------------------------------------------------
-
- Disclaimer and copyright:
- ------------------------
-
- This program is supplied without waranties of any kind. Neither I
- (Pierre Perret), nor the author and copyright owner of MicroEMACS
- (Daniel M. Lawrence), can be held responsible or liable for any damage
- caused by the use of this program.
-
- In short: USE AT YOUR OWN RISK.
-
- (C)Copyright 1988, 1989, 1990, 1991, 1992 by Daniel M. Lawrence
- MicroEMACS 3.11 can be copied and distributed freely for any
- non-commercial purposes. Commercial users may use MicroEMACS
- 3.11 inhouse. Shareware distributors may redistribute
- MicroEMACS 3.11 for media costs only. MicroEMACS 3.11 can only
- be incorporated into commercial software or resold with the
- permission of the current author:
-
- Daniel M. Lawrence
- 617 New York St
- Lafayette, IN 47901
-
- ------------------------------------------------------------------------
-