MicroEmacs - History

HISTORY

This version of MicroEmacs is based on an early MicroEmacs release of 3.8 in 1988, the origins of which are unknown, except to say it was delivered on a unmarked 5 1/2" floppy disk.

The program was originally ported to a Motorola MVME147 UNIX box as an alternative to vi. Reliability of the program proved to be a problem as it constantly crashed. In an attempt to rectify the problems the development of MicroEmacs commenced.

Development has continued from 1988 through to today, on the whole oblivious to further developments of the existing MicroEmacs program. This was due to no Internet access. It was not until 1996 the next version of MicroEmacs and mewin (Microsoft Windows (TM) port of the same program) was downloaded from the Internet and compared. By this time MicroEmacs was radically different and we were not about to mesh the two together - that would be a step backwards.

Development of MicroEmacs has been biased towards the UNIX platform, as most of the early development was performed in the UNIX domain. The first of the window servers was X-Windows, which in turn has shaped the implementation of the Microsoft Windows port. Latterly, we have seen the resurgence of the IBM-PC platform which is now commonplace. For the return port to the DOS environment, and subsequent development of the Microsoft Windows port, a UNIX like interface was required. Most existing users could not abide the primitive editors found on these machines; Microsoft Windows was an alien and hostile environment when compared with UNIX. Hence, the MicroEmacs interface utilizes UNIX style cut and paste across all platforms.

For portability, MicroEmacs utilizes character rendering on all platforms regardless of the window manager. Under X-Windows and Microsoft Windows, the display is still treated as a character based display, the subtle difference is that the display pane is re-sizable. This means that the scroll bars, fonts etc. are not as slick as they could be, certainly under Microsoft Windows MicroEmacs looks positively primitive!! Regardless of the look, the goal of a common editor across all working platforms has been achieved!

Development History

9th Release - September 2006Release date specified as 2006/09/09.

User perspective summary of changes

MainMenu(3) - A more consistent main menu and user dialog interaction.

Introduction of major modes for management of different file types.
buffer-major-mode(3) assigns a new operating mode to a buffer affecting the highlighting, indentation, key binding etc.
major-mode-setup(3) configures the behavior of the major mode.

Introduction of sessions which store the context of editor including window layout and loaded files. Multiple sessions may be used, "me-c<sessionName>" restores a specific session.
save-session(3) and
read-session(3) handle the restore/saving of sessions. The existing history commands have been removed.

[060921] Improved the query-replace prompt to list letter options when the width allows.

[060921] Browser. Added seconds to the info given for a file in a directory listing. Fixed dir list hooks to handle mod times with seconds.

[060921] Changed char prompts to have '/' dividers.

[060921] Added new bit 0x20 to
read-file(2) to discard changes to buffer.

[060919] Build. Added $MAKEWINDEFS and LIBS to the ME_WINDOW defines, removed references to xpm from the makefiles as this is not a standard package and moved references out of emain.h into unixterm.c. Vamped up build shell script to check for X11 & Xpm availability. Changed horrid dos style empty string tests in UNIX scripts with -z & -n test options

[060918] Standardized the form of character input prompts and improved routine so '?' swaps between help and prompt. Added a 'N(o)toall' option to
save-some-buffers(2) and changed
fill-paragraph(2) to 'Never' to 'N(o) to all'. For query-replace-*, changed the help for '!' to 'Yes to (a)ll' and added 'a', changed 'i' to 'e' and removed '.' option.

[060918] Changed debugger '!' to 'c', in keeping with other debuggers for continue.

[060918] Added bit 0x04 to
@mc(4) flag so macro can supply a help string

[060917] Corrected the X-Windows ordering to allow us to receive (Un)Map events on Linux - X-Server behavior is different from Sun Solaris.

[060917] UNIX. Added XPM colour bitmap support. Just smartens the ME icon up in Gnome and makes ME look a bit more 21st century without the monochrome icon.

[060917] Shell template, addition of missing common commands.

[060917] JST, addition of other text insertions.

[060917] UNIX. Corrected X-Windows positioning from popup-window.

[060917] Added new 48x48 icon for gnome with transparency boarder - complaints that existing icons were not Gnome friendly!

[060917] UNIX. Corrected X-Windows hints for font size change. Requires that the X-Window is unmapped before the size hint may be modified and the re-mapped.

[060915] OSD. Sanitised the quick file open and file type buffer open menus and changed them to use a scrolled list if more files/buffers than lines rather than filling the screen.

[060915] In notes find a file that is loaded but out of date, this leads to an reread prompt during which the notes ehook/idle callback kicks in and changes frame - this breaks the message line of both frames. This is a rather horrid fix to a rather grotty problem!

[060915] Browser, fixed the sort order to be case sensitive on UNIX, insensitive on Windows

[060913] Notes. Fixed the loosing of edit and crypt mode from the main notes buffer due to the setting of the major mode. Fixed notes tree context menu hot keys.

[060913] Fixed kill-list tool up-date trashing the real kill ring.

[060912] Changed session-update to store view mode for a buffer only if it was forced on by the user (i.e. the file is not readonly). This stops files re-loading in view mode if the permissions have changed - this was a problem with ClearCase reported by Enver Haase.

[060912] Simplified the new note-setup and fixed the notes buffer losing the hide mode (which causes problems for session restore).

[060911] Removed the notes 'note' dummy hook in favour of using a real hook. Set the default hook to be jst but can be set in the -!- enf; major-mode: <hook> -!- header. Added new note-setup which users buffer-setup to allow the user to setup the buffer and stores the values for that note.

[060908] Changed
file-attrib(3) to handle directory buffers correctly and, with a numeric arg of 0, change the attibutes of a given file (i.e. not the current buffer) Implementation changed to now have a Cancel button.

[060811] Introduced new $buffer-fill-col and $buffer-fill-mode variables to allow every buffer to have its own setting, initialized to the global variable value when the buffer is created.

[060810] Added 'a' for All option to the save-some-buffers prompt

[060810] Added save -> prompt -> delete of all buffers when loading another session. If bit 1 in arg is not set (i.e. 0 read-session "name") then this is not done and the new session is effectively merged into the current.

[060807] Tweaks to osd to remove a few annoyances: up on main menu now goes to last item of current sub menu, fixed re-frame and focus issue on an opened child and made C-g always just close a child even if not in focus.

[060803] Added new -2 and -3 values for 2nd arg to &lins to insert alphabetically and case insensitive alpha.

[060803] Added setting of the major mode to the new buffer-setup

[060803] Changed osd dialogs to use 'Cancel' or 'Close' rather than 'Exit'

[060803] Closed notes if open when applying changes as this corrupts the notes frame.

[060803] Made the buffer sub-menu be case insensitively ordered in windows and have first letter hotkeys.

[060803] Changed frame-id comparison to use seq as should handle "ERROR" better.

[060803] Fixed notes to handle a reread-file type operation.

[060803] Changed osd dialogs to use 'Cancel' or 'Close' rather than 'Exit'

[060802] Added saving the session to save-all and associated a file in $user-path with the File->New command.

[060801] Set .gz extracted buffer name and file name so its location is kept.

[060728] Fixed clear-case to handle multi-line comments with SHELL set to csh.

[060728] Changed "symbol" to "insert-symbol" and "indent-setup" to "buffer-setup" as this is what it will become. Fixed a few hot-key issues with new main menu.

[060728] Improved help page and looked for context-menu binding to support esc +.

[060728] Moved the location of making CVS and clear-case always available into their setup dialog and added a C-x C-q replacement option.

[060728] Changed backspace in a directory to move to the sub-directory in the parent listing.

[060728] Fixed notes startup so it returns the user to the same place.

[060728] Documentation, replaced -ve with negative and +ve with positive.

[060726] Fixed setting of scheme when session file does not exist (problem hit when old user uses session for first time)

[060725] Changed goto commands to not stop the show-region highlight

[060725] Major rearrangement of the main menu, replaced the Insert and Execute sub-menus with a View and Advanced, re-balanced and relocated many items, most notably the setup dialogs out of Help into Advanced.

[060725] Renamed the existing tool-bar macro to toolbar-open (mirrors existing toolbar-close) and introduced a new tool-bar macro that toggles state, i.e. closes if opened. This command is more useful in key-bindings and menus etc.

[060725] Improved error handling of osd based find tag, also adding support for tags file being in a parent directory.

[060725] Removed command-line validation and relax file selection requirement so user can create a tool that does not require a file name (e.g. open . in explorer)

[060725] Used set/goto-position to store current dot and added <no favorites> entry if menu is empty.

[060725] Added hot-keys to the file attrib dialog

[060725] Changed simply fence matching of quotes and double quotes, if match is not found by the end or start of the line it's assumed to be a single and ignored.

[060725] Changed &mid so the 3rd argument (length) can be -ve to mean from the right (as per the &rig etc) - not sure why this was not done first time round.

[060624] Changed session support to handle both window and console environments. Changed startup to only initialize one scheme.

[060623] Added file-type-setup to the list of misc setups.

[060622] Changed buffer-setup to major-mode-setup, also changed buffer-help to major-mode-help etc and fixed comments. Left buffer-setup in buffstp as there will be a buffer-setup which really does setup up the current buffer. Change me.emf date to 20060606

[060620] Stopped session trying to change the frame for a console run.

[060619] Sessions. Stopped restore buffer's whose file does not exist and changed the order of frame size setting so on UNIX the depth of windows are maintained correctly

[060619] Changed all ME setup macros to reload the /history registry before change the registry and writing it out as soon as the changes are accepted to reduce the likelihood of settings (like new alias paths) being lost. One except is when the setup is run from within user-setup in which case the registry is only read and written by user-setup, this could have some unwanted side effects. Added session-setup to the user-setup misc page.

[060619] Change to allow macros access to inactive buffers broke file and ipipe hooks which get executed but the buffer is officially made active - fixed by maintaining the BIFNACT internal flag and ensuring the algorithm used for inactive buffers is only used wh ere appropriate. Found buffer context was not set correctly for session buffers whose name was set to 'name<1>' as the BIFNAME flag is not set, fixed by removing this flag and using code to assess if the <1> should be removed based on the filename.

[060619] Fixed read-registry's replace mode which was doing a merge as the old node was not removed.

[060619] Fixed a bad prompt and added a couple of brackets to protect compare order.

[060616] Changed the start-up process to not use the history commands (which have been removed) but simply use the read-registry commands.

[060615] Moved the storage of all history type info into the new session (esf) files.

[060615] $user-name.erf only contains setup info and not often edited changed user setup to minimize the likelihood of losing edits (at last).

[060615] Broken session-setup out into its own macro file and made quite a few fixes to the new session support.

[060615] Removed the save- and read-history commands the me.emf start-up now simply use the read-registry command

[060615] Changed the -c command-line option to simply set the variable %session-name (relies on session macros)

[060615] Changed clipboard support to not mess with it during start-up and shut-down

[060615] Created new change-scheme command.

[060615] ClearCase. Fixed *cc-state* buffer not being in view mode when command completes.

[060615] Corrected types of exchange-point-and-mark.

[060608] Improved OSD search dialog by making the buttons always enabled and reporting an error if search string is empty.

[060608] Made the existing hidden scheme macro a visible command which can be used to change the current color scheme. Set .scheme.current to the file name of the current scheme Saved the current scheme in a session so a user can create a session with its own different scheme.

[060526] Sessions. Changed to use new shut-down pseudo key.

[060526] Changed shut-down process to call the ehooks for the current buffer of all frames and changed the shut-down macro to a pseudo key-binding.

[060525] Added a new buffer-major-mode command to change the current buffer's hook, giving it an arg of -1 or major mode of "" removes the hook. No completion list yet. Fixed tab-width setting so all 3 windows get the same new value.

[060525] Changed gdiff to insert the 2 files into temp buffers so if the files are already loaded by the user these buffers are not effected. Added the ability to set the tab width.

[060525] Fixed crash caused by watch refreshing the buffer while user is using isearch - stopped watch from refreshing the buffer.

[060525] Added a new bit 0x10 to find- read- and view-file to disable the context fhook evaluation.

[060515] Added new bit 0x2 to arg for change-buffer-name which force the buffer to have the given name, changing the name of an existing buffer if required.

[060512] ClearCase. Fixed cc-setup view deletion, pressing No does not remove it. Removed the temporary file created by cc-diff if me's diff of gdiff are used, file is still left if xdiff is used.

[060512] Added a new $mode-chars variable which returns the letter ids of all modes as a string, this variable cannot currently be set.

[060512] Changed the numeric arguments for quick-exit and save-buffers-exit-emacs to make them simple to use.

[060510] Improved the ftp logging so errors get put into the console with error numbers rather than just mlwrite'd. Removed the KEEPALIVE as ME closes the sockets with 10mins anyway. Fix the ftp kb/s calc.

[060510] Dirlist. Fixed context menu so the FTP additions are added for any ftp:// listing.

[060504] Changed reyank numeric arg so if a -ve arg is given reyank will fail if at the end of the kill chain rather than loop - required for notes-session-save

[060504] Found differences between copy and kill-region's handling of narrows, particularly if there's no markup line Found I could crash ME if only the end part of a narrow-to is killed - buffer line number all go wrong. To fix the issues I've created a standard function to handle the expansion of narrows over a region and made the rule that for a narrow without a markup line to be included in the region at least the \\n of the previous line and 1 char of the container line must be included, this means that narrows at the top and bottom cannot be included.

[060504] ClearCase. Fixed cc-merge comment bug.

[060504] Added support for a .ascii-time.format variable which defines the format for the output using '%' tags as per strftime function (supports most tags) - output is unchanged if variable is not set. Fixes request by Dick Pierce. Changed the OSD insert time function to use the same tokens and made the first format in the list be the output of ascii-time.

[060503] Provided macro interface to get a list of alpha marks for the current buffer.

[060426] Improved (but not quite fully fixed and I don't think I can) the mouse word selection when the word is half hidden at the left or right edge of the window.

[060425] Fixed bug with setting $window-line, if value is < 1 then the goto-line function prompts the user, this is incorrect behavior for a set variable command and the cause of a mouse driver spin. Fixed mouse left button spin caused by missing the pick event and a bug in set-variable for $window-line. Added new horizontal scroll feature when user clicks on a $window-char truncated line char.

[060412] Bug fix. Put checks in to ensure the hilight/indent to be used according to a look-back scheme has been defined - fixes crash when viewing JSP files.

[060403] DIRECTORY LISTING. Fixed 'not-exist' fix in last commit - ftp dir lists can be only a couple of lines Made file/dir copy automatically try 3 times before prompting the user (large ftp copies will fail at points). Fixed browse mode close problem when browse deletes the buffer.

[060402] Used an ehook and a callback to auto detect a change in the notes frame buffer/window layout, if there is a change the callback closes the notes frame. This approach resolves many issues.

[060331] Fixed XML magic hook.

[060331] Fix annoying find-zfile last buffer history change. Changed the buffer & file name of a loaded zfile file to something more useful.

[060331] Created a '2 find-buffer <file-name>' arg which finds an existing buffer via its file name - used to fix annoying find-zfile buffer history change.

[060330] Change fhook-dir to always detect if its a source-controlled dir and call the SC hook, the SC hook can then add its own bindings etc. Fixed fhook-dir so loading of ".../not-exist/" does not error.

[060330] Made the esc = & esc + menu bindings global.

[060329] Changed unix start-up mode to favor X over termcap if DISPLAY is set, even if term is a vt100.

[060322] Fixed the position of the context menu when opened by mouse or menu key. Fixed auto-spell not being available when context menu is opened using the menu key.

[060322] Improved gdiff-next command to error at the end of the file so the use knows they have reached the end. Bound 'menu' to open the contex menu and bound 'esc up' & 'esc down' to move between unassigned sections.

[060322] Bound f10 to close the notes frame and bound C-x k to a new notes-delete command

[060316] Changed describe-word osd dialog so that it has a 'Look Up' button which is the default. Also improved the insert description process so C-w kills the description inserted.

[060316] Improved the behaviour of the enter key in the help osd so it does a search or nothing.

[060315] Fixed a win32 console crash caused by the new frame reposition function. Stopped the messing about of the windows console when ME is in piped mode.

[060309] Fixed regex \\a -> \\g for bell and added support for \\a & \\m to [...] character classes.

[060309] Updated *shell-command docs.

[060309] Documented &lef, &mid & &rig -ve 2nd arg usage.

[060309] Documented insert-string's -ve arg.

[060309] Up-dated goto-matching-fence docs

[060309] Fixed docs for when no arg is given to forward-kill-word.

[060309] Updated jst template to new version. Fixed a couple of bugs with tables (empty cells and bad indent) Implemented a table cell '!' flag to indicate a start of a row (helps debugging) Fixed bug when title variable not set.

[060210] Added look-back-scheme support to hilighting (uses same code as indents quick-lookback scheme). Added new 'only use during look-back' hilight token (combined 0x800 & 0x200) which can solve make multi-line string hilighting issues.

[060210] Fixed compiler warning with -m changes

[060210] Removed unused variable in new reposition function

[060210] Fixed unused variable on NDEBUG build

[060209] Made changes to the -m server message option to make it usable. a) Process the message using the macro 'token' function so \\n is translated to a new-line char. b) If the message is not terminated with a \\n then one is added. c) The popup-window message it only given when -o option is used

[060209] Added support for a server 'M' message command.

[060209] Changed the hilight and indent meHilight structure mis-uses access the data via #define (added to estruct.h) so the code is clean and easy to read and the miss uses can be easily found and changed. Changed the storage of the main indent and hilight scheme flags to use the ignore field (only 5 bits currently used) so the trunc scheme can use the type and the hilight look back can use the close (i.e. unlimited).

[060209] Fixed clear-case update list on checkin option.

[060208] Fixed crash caused by mlGetStringFromUser being called recursively - only possible since the introduction of ftp completion which can prompt for the user password while inputting a file name.

[060207] Added an implementation of meFrameRepositionWindow for XTerm, not a very good one as there is not a clear standard between WMs.

[060201] ClearCase + CVS. Fixed hiding of *??-console* buffer and closing the window with loading a file from a dir list.

[060127] Broke the user-setup 'Tools' 'File Types' and 'EMail' pages out into separate independent setup dialogs. Added new Miscellaneous page to user-setup with links to these and other setup dialogs (such as alias-path and file-tool) Changed the buttons to the more standard Okay, Apply Cancel. Slightly changed some of the Mail & VM registry settings to make each platform independent (except filtering).

[060127] ClearCase. Added new cc-delete and alias-path-setup commands. Added f4 to diff binding. Moved the window resizing call to nearer the end (after the font resize as this could change to a smaller font allowing more lines etc).

[060127] Fixed quite a few issues with the CVS and clear-case UI interfaces. Brought cvs-state into line with CC, implemented cc-delete and rationalised the hot-keys and context menus.

[060127] Added new alias-path-setup OSD gui.

[060127] Added new 3 and 4 arg to popup-window to manipulate the main frame window, implemented meFrameRepositionWindow function on windows.

[060127] Fixed find-reg index in error message.

[060127] Moved macro parser's \\a to \\g (bell) and added support for \\a - alpha and \\m - alpha-num to hilight and regex.

[060122] Changed call from saveExitEmacs to exitEmacs to avoid compile errors for NE.

[060122] Fixed the meDie function to not exit straight after the emergency exit message, now autosaves as it should. Change the handling of the CLOSE message on windows so it prompts okay/cancel if buffers need saving and then exits. Fixed really annoying modifier state mismatch problem on windows - reproduce by pressing control right-click on title bar to get the system menu and then release the control, ME misses the C-drop event so thinks its still pressed.

[051220] JST extensions.

[051219] JST. Added implementation of TOC to html export.

[051219] ClearCase. Disable check out of parent dir for cc-add as its not implemented

[051215] JST. Changed tag highlighting to handle split line tags correctly. Implemented support for f and b color export to HTML using style.

[051118] Directory listing window. Added binding of 'f' to toggle the filter and changed the 's' and 'S' bindings round (s is far more useful)

[051118] Improved the horizontal scrolling of gdiff and browse

[051110] Make debugger stop at executed !elif & !else will work for all macros, may not work when executing a buffer as the line may start with a white space.

[051110] Stopped osd check-box macros from triggering the debugger when $debug is set to 1.

[051110] Added some more key translations based on bug report by Francesco Abbate.

[051104] 2nd and much improved version of cc-setup. Changed to using -1 insert-string to allow multi-line comments. Fixed horrid problem with cleartool's handling of checking out a file when its been hijacked, no command-line option to make it use the hijacked file me has to use ipipe-write a send 'yes' at the prompt, but as the prompt is not given me must be preempt and send them first, one for each file - clear-case is pants and cleartool sucks.

[051104] Changed cmd-line construction to use -1 insert-string to insert \\n's into the line - not really very nice.

[051104] Fixed meGetChar to be like GetString in that if running a macro the value has not been given it goes directly to the user rather than simply failing, this improves macro reliability and eases debugging of macros.

[051104] Multi-line shell fix. The new 0x100 flag to shell-command has one drawback, you cannot run commands that include newline characters as the cmd-line must be on the first line. But CVS and clear-case commit comments are often multi-line so this is not acceptable. To fix the problem I have added a -ve arg to insert-string comment which then performs a literal insertion, i.e. every char including a \\n char is inserted are text. This fixes the immediate problem but inserting a \\n char in a line can break other thing in a very major way (like undo) so it must be used with extreme care.

[051103] ClearCase. First rev of a CC tool defaults setup in cc-setup. Moved CC over to using 0x100 bit in shell-command to remove command-line length limit.

[051102] Moved multiple-file file-tool executions over to using the new 0x100 shell-command flag (first line of buffer) to remove command-line length limit in almost all cases (cmd has a 4kb limit)

[051102] Introduced a new 0x100 bit for shell commands which means the 'cmd-line' given is a buffer names whose first line holds the command-line to run.

[051028] ClearCase. Fixed cc-diff abort when a file has no differences. Added a 'delete line' function to cc-state bound to C-k.

[050930] file-tool, changed the buffer list toolbar tool to keep the current line to the current buffer when using find-buffer etc.

[050930] Latest Mirkwood update from Bruno.

[050930] Fixed ftp drag'n'drop copy bug, the source dir needed an file: prefix to remove the ftp:// of the current buffer. While test I blew away my home directory, nasty way to discover that ftp can return ".." not "../" and ".." is not ignored when deleting! Fixed.

[050929] File listing, stopped copy, move etc commands from accepting '../' when its the current line Fixed 'v' browse file open and close.

[050928] browse, removed the delete buffer flag from browse - wrong way to do this.

[050928] ClearCase, make cc-annotate work if file is checked out (cleartool command-line is awful, why do you have to pay money to use this rubbish?)

[050928] Added wrap feature to browse mode.

[050928] Changed Mirkwood main OSD scheme to make current focus item more visible.

[050920] Changed the $debug variable to be bit based as its old values just could implement the required functionality.

[050920] OAD, added a comment tab to the scheme editor and up-graded the scheme selectors to use combo-boxes.

[050920] Fixed compile error on macos caused by bad macro definition.

[050919] Fixed 2 bugs: meRegHead's force could be left set to 1 which has the side effect of C-g not hiding the active region. Due to last change to command-wait the screen is not up-dated before waiting for a key breaking gdiff.

[050915] Added Up, Down, Hide window and default open options to the file-tool setup GUI. Added support for a default open to the directory listing, pressing return now checks for a file-tool default open (explorerish), 'o' for open always loads the file into me.

[050915] Added support for dbx on sunos. Changed the ipipe input mode to be toggled using f3 rather than set via f2, f3 or f4.

[050915] zfile, fixed filename -> absolute file name when given as an macro arg - should be based off current buffer's path.

[050806] Added better support for MinGW. Fixed the console color bug and most of the compiler warnings. Added support for the MSYS shell by creating a unix style mingw.gmk (uses rm instead of del etc) updating the old mingw.gmk and renamed to mingw32.gmk and added support to the unix build script.

[050803] Fixed ne crash when an unbound key is pressed, bug introduced with last commits.

[050721] Fixed annoying mouse refocus in osd dialog even though mouse is not moved - another windows nasty.

[050720] Pop-up menus, shifted the context menu down one line when opened by a key.

[050720] Directory listing. Changed the tag file list macro to support moving to the closest selected so the user can see which files they are deleting! Improved the file-tool so \\H will see a hot-key, '\\' chars and '"' must be quoted (i.e. '\\\\' & '\"') Bound 't' to open the file tool menu directly so tools can be easily executed without use of the mouse.

[050720] Removed unused functionality from NE. Made the following available as extended functionality: backward-delete-tab, change-buffer-name, change-file-name, define-macro-file, delete-blank-lines, delete-some-buffers, named-buffer-mode, save-some-buffers, save-buffers-exit-emacs, user(%), buffer(:) and command(.) variables, $buffer-input, $kept-versions, $mouse*. $pause-time, $MEBACKUPPATH. Removed -c from ne's help page as this is not supported. Moved macro regex &xseq, &xrep based directives and most @ variables to extended functionality.

[050719] Organiser address search broken due to recent changes to macro argument getting. Fixed by changing the numeric argument which was ambiguously defined.

[050718] Source code reorganisation. Made the file hook variables and HideBuffer function statics. Changed ne to use fixed char groups for isUpper etc rather than the large look-up tables as it does not have set-char-mask to configure them anyway.

[050718] C template. Fixed and greatly simplified the #if handling in the hash eval code. Added support for #undef.

[050715] Source code organisation. Removed unused code when there's no ipipe support. Hashed out location functions which are only required by socket or ipipe support.

[050714] Combined cc-log and cc-annotate into a single cc-annotate cammon with GUI. Added cc-vtree and cc-explorer.

[050714] Fixed user-setup setting of number of backups and Ignore files settings.

[050710] Fixed old $debug interface, found a long forgotton mode 3 (now 4) which simply prints the current line without waiting, this broken the new mode 3.

[050709] Removed the -d command line option - pointless.

[050709] Improved the macro command argument handling to get missing arguments from the user, i.e. having a macro line of: fine-file Works okay.

[050709] Vastly improved the macro debugging, the $debug value of 1 is now 2, 2 -> 3, a value of 1 now tells the user of any unhandled failures.

[050709] Fixed the Windows window resizing behaviour to be a lot more usable. The window size now increases in character size steps rather than bouncing around and the window is refresh as its changed. The Horizontal width limit of the window has effectively been removed (set to 400 chars) the depth is still restricted to the screen size, issue raised by Tom Hundt.

[050708] Got thoroughly fed up with the emacs style kill-word - useless. Came up with a compromise, if no numeric arg is given then it works the old way, if an argument is given (i.e. 1, 2 ...) it works in like emacs (which makes sense as you are asking it to kill 1 word etc.)

[050708] Changed list-commands and command-apropros to not list hidden macros by default. They can be listed if bit 1 of the numeric argument is clear (aka list-buffers)

[050625] Updated mode line letter mnemonics which were out of date, issue raised by Tom Hundt.

[050625] Stop me crashing when describe-variable is given something like "&or", now restricted to variables of type #, $, %, :, . only.

[050618] Added support for -ve offests to &lef, &mid, &rig functions to go from the end of the string.

[050618] Created a no wait option to shell-command so processes can be launched and forgotten about. Also added support for all the other process launch flags present in pipe and ipipe shell commands. Removed some very dead code.

[050618] Avoided a '&mid -1' in display matching fence (dmf.emf) by restructuring the logic a bit.

[050616] Revision 3 of ClearCase support.

[050614] Second rev of clearcase support. restructured the execution of cleartool so ipipes are used (even though the user may not be able to edit) giving feedback on progress. Implemented a basic diff which can only diff one file at a time and only with its predecessor but at least it supports a context output of sorts!

[050614] Fixed command-wait when no arg is given to return when a callback sets the .wait variable. Command now returns imediately if the .wait variable is not defined. Fixed windows sleep function which was managing to break out before it should.

[050610] First revision of ClearCase support, very incomplete and primative but the hooks required in the rest of the system are in place.

[050609] Changed the directory listing so '.' is removed and .. is always the first file and cannot be selected. Fixed some directory display annoying refresh issues.

[050609] First implementation of directory deletion, copying and moving, including support for ftp directories etc. Areas of concern are still copied file's permissions and to a lesser degree ownership. Also the copies behaviour with symbolic links, this must be tested further.

[050609] Fixed file permissions and ftp minor issues a couple of major ftp bugs and $file-names working for ftp directories.

[050609] Added new &stat "i" flag and argument bit 4 to file-op to abort on a problem rather than prompt, it also returns an error code in $result.

[050609] Changed the kill word commands so have the same word boundary behaviour as forward-word and Emacs (was killing word only then whitespaces only etc). Corrected word movement and killing command's EOB and BOB error handling.

[050608] Added new rdiff (recursive diff) command

[050608] Updated string-rectangle and space-rectangle to improve its usability.

[050514] Fixed ftp copy lock-up (most noticable on windows) caused by the response read at the start of a command also reading (and disgarding) the finishing message so ME hangs at the end of the command waiting for a response.

[050514] Enabled ipipes under cygwin by default.

[050514] Fixed win32s build.

[050514] Fixed mecygwin interactive MS-DOS and cygwin BASH shells.

[050513] Found the UNIX waitpid(-1,...) in the sigchild handler (which removes any zoombie processes) removes the pipe commands process so the pclose call cannot get the process's exit code (returns -1).

[050509] Changed the name of aix43 make files to aix4 and sunos 55 and 56 files to a single sunos5 makefile

[050509] Added support for aix v5 (tested on aix v5.1)

[050507] Added Finnish support to ne.emf.

[050506] Improved python collapse and item-list support and added eaf and etf for python - thanks to Detlef.

[050505] Base version numbers reset for next release.

[050429] Added support for keybinding to item-list column ordering, function is item-list-order and is bound to 1, 2 and 3 by default. Thanks to Bryan Schofield for his submission in this area.

[050429] Spelling - protect '.'s in the word with \\.

[050428] Corrected TCL hilighting w.r.t. comment at end of line - submitted by Bryan Schofield.

[050427] Major reworking of main commands in a directory listing buffer. Implemented typical features found in an OFM standard browser and create standard bindings as well as termcap friendly ones. Changed delete binding to delete files rather than close browser which is now bound to f10.

[050331] Added support for the setting of the history in macros via @h#.

[050325] registry.c - removed compiler warning indicating porting problem hilighted under Darwin. Post increment of variable on left of assignment and same variable appeared on the right, split out the increment to reduce ambiguity of the statement.

[050320] UNIX only - add a rule for .dir files found in the X11 directory. We do not want this files identified as "dir" info root file

[050319] Added -R command line option to reverse the built in video schemes - specifically for ne(1) also works with me(1).

[050319] Corrected default mode settings. Recent removal of letter(2m), line(2m) etc. changed the mode byte assignment of some modes. The built in global mode default was not updated for this change in bytes and incorrect global modes appeared as a result - specifically quiet(2m) which has jumped bytes.

[050315] Modified ME exit commands to support a bitwise arg n where main
exit-emacs(2) has '0x01 Prompt', '0x02 Save each buffer/reg/dic (with prompt if 0x01 set)' and '0x04 Prompt for exit code and exit ME with that code.'

[050313] Latex template - Corrected the latex-fill-paragraph. Set the fill-mode to 'l' rather than 'L' because its a pain when it selects centre rather than left and messes things up.

[050310] OSD simplified the main context menu and moved paste a cvs items in the directory context menu

[050310] Fixed diff's file name input, was not completing correctly

[050310] CVS changed the default setting of the recursive add to off.

[050310] JASSPA MicroEmacs quick start document released.

[050309] Fixed bug in regex multi-line search backwards, searching for "foo[^a]" is a mult-line as [^a] matches \\n, if "foob" exists at the start of the line isearch-backward refuses to move on.

[050309] Catman pages added for ne(1) and me(1) complaints with gentoo as missing. Added to the package builds.

[050308] Fixed a nasty bug with ftp connect dialog when the host has a port. Changed the default path to be nothing which becomes /~/ to list the login directory. Change the tab order to not include the password as tabbing through the entry will lose the password, must now access via mouse or hot key which is not ideal.

[050308] Added support for relative ftp browsing via new ftp://???/~/??? url form. Added file name completion support for ftp

[050306] Corrected the docmacro http:// regular expression.

[050306] Changed the date format of the -V command line option to include the century, same format as the
about(2) buffer.

[050225] HTML template - fixed an indent which was fixed at "2" rather than "t" and added comment skipping indent rules

[050225]
dos2unix(3f),
unix2dos(3f) and
unix2win(3f) - Removed use of &spr in favor of &cat so dos2unix etc. work in
ne(1). [050225] Tracing a problem with hilighting a token of the form "AB*$", works if there is a 'B' but fails if there are no 'B's, i.e. only matches "AB+$". Found that removing the end of line special case code fixes the problem. I believe the rest of the code has been improved to handle any end-of-line quirks - I hope so!

[050225] Removed the 'start-up' macro function compile option so all versions support this - "ne" can now do a "@dos2unix"

[050225] Regular expressions - extended replacement string syntax. Added support for "\c#" "\l#" and "\u#" to change the case of groups, where "\c#" is capitalise, "\l#" is lower "\u#" is upper and "#" is the group number (0-9, &)

[050225] Regular expressions - changed syntax of "\s?" and "\S?" in favor of Perl's simpler "\s" and "\S" for a whitespace char class. Added new character classes "\d" = digits, "\D" != digits "\h" = hexdigits "\H" != hexdigits "\l" = lowercase "\L" != lowercase "\u" = uppercase and "\U" != uppercase. These changes were made to both the main regex search engine and the
hilight(2) token matching engine. Added support for char classes within the main regex [...] character class, i.e. now supports regexs like "[\l\u_]" for any lower, upper or '_' char. This is not supported in the hilight which currently has a more simplistic "[...]" char class support.

[050225] Regular expressions - changed use of "\s ", "\s-", "\S " and "\S-" classes to simply "\s" and "\S" which is perl regex compliant (ditching Emacs "\s" syntax as it is cumbersome and not very useful). The only nasty side effect is hilight's miss-use of "\S1" - "\S9" to mean not "\1" - "\9" group char, changed to "\!1" - "\!9"

[050224]
watch(3) improved the refresh rate of a type 2 or 3 watch by ignoring the :watch-time and just look at the :watch-size. Fixed the split line issue with type 2 of 3 watching caused by last line not being complete.

[050224] M-xftp - stripped 'ftp://' and any trailing '/' of the users entered host name as these break ftp. Improved the dialog's handling of passwords, the user can now tell if a password has been set.

[050224] Added standard binding for mark-function

[050224] Fixed the ME token hilighting in the C hook

[050224] Removed recently added %no_backup variable to disable backup create as new -B option is a much better way of doing it.

[050224] edef.h - Removed definition of non-existant variable

[050224] Fixed failure when trying to load "http://www.jasspa.com", there is an implicit trailing '/' which MicroEmacs now adds.

[050221] Changed the new Windows process tree killing to use LoadLibrary() to detect whether the OS supports this feature (and NT does not). Also moved the URL support over to LoadLibrary() so we can remove the -u builds.

[050219]
osd(2). Removed dialog 'F' flag as it was not documented, did not work and only used in one obscure place. Fixed C-g and Del so they close up to the previous dialog but does close the main menu down in one call - was annoying.

[050218] Fixed abbreviation and exec-string "\\p" and "\\P" store and goto position problem when the C-xC-a or C-x a keys are rebound. Fixed by replacing with 'escxset-alpha-markP' (where esc-x is a safe internal special key).

[050218] Updated
watch(3) interface and made public. Created new
watch-time(3) command and prompt user for watch type when no argument is given.

[050218] Removed the use of bit 0x1000 in Ada string hilight as this is unlikely to be wanted (probably copied from Pascal).

[050218] Changed the registry parser to abort on error rather than trying to carry on (a very painful process for a badly decrypted registry file).

[050218] Fixed highlighting minor issues.
hilight(2) scheme now returns back to EOL scheme after a bracket. A branch tag on an EOL line removes the EOL flag so it hilights correctly. Branch tag now supports the 0x1000 single line hilight. Lookback now supports 0x800 on a branch tag.

[050217] Watch command (watch.emf). Improved the watch command, made '0watch' call watch-reset, changed watch-reset so with an argument of 0 it removes all watches otherwise it resets the main watch counter and reports to the user which buffers are watched. Added new '2watch' and '3 watch' which compares the file size, doing the following: a) file on disk is smaller than last watch - reloads whole file. b) file size is the same - does nothing. c) file on disk is larger - appends to the end of the buffer the tail of the file (file_size-watch_file_size bytes). This assumes that the files is always being appended (reasonable assumption in most cases. The only difference between 2 and 3 is that 2 forces a complete reread of the file on the first file change (ensuring the buffer is correct), 3 does not which allows the user to trash the first gigabyte of the buffer before starting the watch.

[050217] Shell template - added local and function keywords and fixed a few string highlighting problems.

[050216] Made the dir-listing's (Filtered) label on line 2 pick-able, changing the filter status when picked Made CVS's CVS-Quick label pick-able doing a full reread when picked.

[050216] Fixed a couple of silly register bugs introduced with last
find-registry(2) concat root and sub-key change. Improved behavior when ftp erf file is missing, now create a new one in memory and flags as changed so should be saved on exit.

[050216] Do not abort me.emf execution if ftp erf file is missing or bad.

[050216] Fixed by removing the 'startup' function, the main init now uses dofile directly and it checks for either a NULL or "" as a filname and replaces with "me" or ("ne" and does not complain) if found to be empty. This means that give
execute-file(2) an empty string executes either "me" or "ne", i.e. resets me - nice side effect. Changed 'dofile()' to execFile() and changed execFile() to executeFile() (as is function for command execute-file(2)) and change the other exec command function names for consistency.

[050216] Fixed an annoyance reported by Bruno, ne should not complain if it fails to find ne.emf - fair enough.

[050215] Fixed crash caused by using -c option with all files hidden (comment when browsing ftp dirs as cache dir lists are hidden) The startup process knows the history created buffers but the replacement was none of these and due to the toolbar it was a buffer without a file name and bang! Fixed in 2 ways, first check the replacement has a file name, second do not put hidden files into the history - they're hidden.

[050210] Improved movement between items using the cursor in the search dialog.

[050210] Fixed cvs dialog default settings.

[050210] Corrected search path expansion, incorrectly handling a PATH_CHAR at the start of the string.

[050204] osd - Fixed problems with the cursor shows current item feature of osd caused by the cursor position going outside of the window.

[050202] Added an initial item number to the favorite and buffer menus.

[050203] Standardized narrow anchor and line flag movement behaviors with respect to deleting and inserting text. Enforced to effectively exist at character column -1 and been strict about maintaining a protected line. Made undo cope with markup lines that are lost. These changes may be a little to severe - we'll see.

[050202] Fixed C-g close osd dialog crash.

[050202] Directory listing - fixed nasty bug cause by the directory changing on disk before the hook has managed to do anything leading to a failure - this has been annoying Jon for some time!

[050127] Added process tree killing for windows, tested on win98, 2k & XP, would be good to test on win95 (which should work) and NT which should not work but hopefully will be no worse than current version.

This is a process tree killing for ipipes, in win32 killing the process we create is simply not good enough, all child processes continue unaffected. For example, run compile, kill the buffer in mid compile and it carries on behind your back!

For Unix we use a new group and kill the group, DOS does not support ipipe. We could have used the new Job concept in ME but this is only present in win2000 & XP and the binaries are unlikely to run on win98 etc. This should run on every win32 platform although it is unlikely to do anything positive on an NT box (works in win2k)

[050126] Changed the location of the fhook-default macro so its only defined if using buffinit (i.e. if running main me.emf)

[050126] Fixed osd button repeat issue when current focus is an entry.

[050126] Changed insert-file-name to insert buffer name if a -ve arg is given, bound to C-x y on the mode line, this replaces ml-lines escy feature.

[050123] Fixed a crash caused by too many closed fences, the recursive nature of the findfence() function triggers a stack crash at around 22000 on windows. Set limit to 256 nested fences.

[050122] Fixed
dir(2m) mode loss on a directory re-read, this caused a number of side effects including loss of highlighting and user prompt to reload the directory when it had changed.

[050119] Removed the "sub-key" argument from all registry related calls (see
&reg(4) and
set-registry(2)). The registry calls used to comprise two arguments "root" and "sub-key", the "sub-key" is really redundant and the same effect may be achieved by a simple string concatenation of the "sub-key" to the "root".

[050119] Added "my-*hook-always" macro checks in the buffer hook switching of
buffer-init(3) to permit global file hooks to be defined, this allows a file hook to operate on all buffers. "my-*hook-always" is executed after the language file hooks of "*hook-XXX" and "my-*hook-XXX".

[050111] Extended
list-registry(2) to permit listing of specific nodes, the output buffer of the registry listing may be specified. Added a invisible flag to a registry node which hides the node completely (but can be toggled).

[050111] Fixed windows server command file polling of up to 60 times a second by making the adder of the command responsible for 'waking' MicroEmacs by sending a WM_USER message. This is not a problem for UNIX as it is possible to wait on file input and EOF is not reported.

[050105] Fixed several narrow-to
narrow-buffer(2) usability issues, with these fixes the top and bottom narrow cannot be removed without a markup line and the order cannot get muddled.

[050105] Fixed a problem with the anchor position up-date when inserting a whole line.

[050105] Changed the osd entry mouse handling to always refocus, this allows the user to change location in the current entry using the mouse.

[041210] Removed the change-directory(2) command, a change in directory is achieved by changing the
$buffer-fname(5) value such that the path defines the location of the command. All macros operated relative to the buffer location and never explicitly changed the directory location.

[041210] Fixed CUA emulation insert binding.

[041210] Deleted letter(2m) mode. Use the default binding of
forward-delete-char(2) for letter mode off, where single deleted characters are to be added to the kill buffer then the existing letter(2m) mode may be achieved by binding as "1 forward-delete-char". Similarly for backspace,
backward-delete-char(2).

[041210] Deleted line(2m) mode. Use a binding with
kill-line(2) of "1 kill-line" to mimic the line mode enabled and "kill-line" for line mode disabled.

[041210] Deleted cmode(2m). Electric-c is now configured with
indent(2). C and C++ indent styles can be different, can also have a GNU C style etc, can change the indent width as new indent rule supports 't', consistent
$buffer-indent(5) interface.

[041210] Created new osd file "osdmisc.emf" for miscellaneous OSD macros, this removes the OSD dependency when the MicroEmacs is executed in special start up modes with startup files. Moved search and new indent-setup(3) commands out of "search.emf" and "format.emf" into a new "osdmisc.emf" as they cause problems with utils that do not run "me.emf" (e.g. "ehftools.emf")

[041120] Removed the OSD explicit tab order value as this was not constructively used and causes many item order problems.

[041119] Many improvements to OSD dialog user interface following suggestions for news group. Updated most of the osd dialogs to use the new [*] check-box chars. Fixed tabbing orders and moved some items over to combo-boxes. Added osd-cursor visibility support to scheme-edit. Made the displaying of the cursor in an osd dialog a
$system(5) bit set by the highlight scheme and fixed the position when in a child dialog.

[041118] Added a macro recursion depth limit of 20 to avoid blowing up MicroEmacs when the user has created an infinitely recursive macro.

[041104] Removed regex-forward(3) and regex-backward(3) macros and moved uses of them over to
search-buffer(2).

[041104] Added
search-buffer(2) command which replaces the macro commands regex-forward(3) and regex-backward(3). Simplifies macro processing of searching by providing a search that explicitly sets the
exact(2m) and
magic(2m) modes. The default is to respect buffers exact and magic mode and flags must have E or M to ensure they are disabled.

[041104] Changed any use of
kill-line(2) to "1kill-line" as this should maintain its required behavior. A kill-line with no numeric argument kills to the end of the line but excludes the end of line character (GNU Emacs compatibility). The default binding is the "1kill-line" form, re-bind the key to "kill-line" if the end of line is not to be killed.

[041102] Moved winterm over to using addKeyToBufferOnce() for mouse move and time, also done same for UNIX mouse time event. This minimizes the number of mouse moved events that are processed by the system.

[041101] MS Windows. Fixed mouse cursor disappearing after using a Shift or Control mouse button event.

[041101] Auto reload the directory even if it is changed (hkdirlst.emf).

[041030] MS-Windows. Removed the "WM_INPUTLANGCHANGE" message handler as this did the wrong thing (use Alt-Shift to change between two different keyboards e.g. US and Russian)

[041030] MS-Windows. Changed the method used to get the APPDATA path to use SHGetSpecialFolderLocation() as this is available in all versions of Windows.

[041030] UNIX. Fixed the mouse movement which caused a rendering anomaly. Mouse moved commands are only added to the key buffer if the key is not already present in the key queue. This alleviates a large build up of redundant mouse move keys on the queue. (Added function addKeyToBufferOnce()),

[041023] Extended the buffer setup for the
indent(2) mechanism. May now specify the default buffer indent-widthand tabsize in the
buffer-setup(3) dialog.

[041022] Revised indentation implementation. The templates now define indent width independent rules. The
indent(2) command 'indent' parameter may be defined as an absolute indentation or using a 't' notation. The syntax is "[-][[indent][/indent]]t" which defines a vulgar fraction of 't' which is the indent width (or tabsize) as specified by
$buffer-indent-width(5) defined below.

The indentation is now specified on a buffer basis, the variables
$buffer-indent-width(5) and
$buffer-tab-width(5) define the indentation and TAB width on a per buffer basis. These are seeded from the aforementioned global variables.

[041022] Fixed spelling mistake in user interface of XML macros.

[041022] Removed CVS "Log:" field from all of the template files - undesirable.

[040518] Corrected block comment formatting, adding an extra space at the end of the comment.

7th Release - March 2004

[040326] Release wrapped - public release tag is 20040301 for executable and macros.

[040326] Support for MAC O/S Darwin image. Console only (no build machine available for X-11 version).

[040326] Introduction of UPX on Windows and DOS executables for ne only.

[040326] Support for MS-DOS long name under DJGPP v2.0. For version 2.0 then the DJGPP functions must be invoked rather than the MS-DOS BIOS calls otherwise the modified short name is returned. DJGPP v1 is still supported original definitions maintained.

[040310] Fix to graphical diff -
gdiff(3). Occasions where all changes had been accepted and the changes could not be saved. gdiff incorrectly prompted user to accept all changes first.

[040310] Support for multiple comment styles in the same language template. Additional comment styles are defined in the "hkXXX.emf" file with the syntax ".fhook-XXX.comment-N" where "N" is an integer starting for 1 to n, the number of different comment styles. Templates updated to use multiple comment styles where appropriate (C, C++ and SQL).

[040310] Support the 'r' flag in ".fhook-XXX.comment" flag field. Causes the key binding to "esc-o" and "esc-q" to restyle the comment. All templates updated to include the flag where appropriate.

[040308]
ipipe-shell-command(2) includes additional flag to run in "raw mode" where the buffer is not annotated and wrap is disabled. Additional argument added to command to allow the
$buffer-ipipe(5) macro to be defined when the pipe is defined. Corrected operation of
pipe-shell-command(2) where ipipe automatically degrades to a pipe (Windows only), if degraded then the
$buffer-ipipe(5) macro is still invoked on completion.

[040226] Deleted "cygnus.emf" added "cygwin.emf" for
cygwin(3) BASH shell support under Windows. Corrected the shell operation with macro layer for echo and completion.

[040224] Add new narrow out unhilighted lines feature.

[040223] Add new buffer tab list toolbar tool for rapid access to buffers via a top or bottom toolbar.

[040223] Add <> buttons to tool-bar mode lines to scroll left and right.

[040223] Fixed. Calender day is off by one when going backwards to before 2004.

[040220] Mouse wheel operation fixed. Added new mouse-wup-scroll commands that should be used instead.

[040218] Added 'Invert Selection' to context menu.

[040218] Add 'f5' refresh binding to a dir list buffer.

[040218] Fixed. Need some way of opening the right mouse button menu using a key. Also need so termcap bindings to open main and context menus. Created new context-menu command, bound to S-f1 and the windows 'menu' key (aka windows) and created binds to open main menu (esc =) and context menu (esc +) on termcap platforms.

[040217] Fixed. 2popup-window(2) does not work on an XTerm, no implementation in function meFrameXTermMakeCur.

[040210] Fixed. On UNIX only the
$progname(5) may not be fully expanded (has just "me") which may lead to a ctags generation error and an alternate fix to
$search-path(5).

[040210] Fixed. On UNIX,
find-file(2) of a symbolic link which points to a directory results in a bad dir listing. The list of files is correct but the statistics are all wrong (found on SunOS 5.8).

[040210] Fix subtle ftp bug with alias ftp addressed. Create an ftp site "ftp://test/" say with user name foo and password bar and then load in "ftp://test/dir1/" the buffer file name is correctly set as "ftp://test/dir1/" but the 'Directory listing of:' line is set to "ftp://foo@test/dir1/". Firstly the user may wish the 'foo' to be hidden but secondly with the introduction of being able to click on the 'Directorylisting of:' line this has introduced a subtle inefficiency/bug, if I click on the 'foo@test' ME will load "ftp://foo@test/" not "ftp://test/" which to ME is a completely different file. This can in turn lead to "ftp://foo@test/dir1/" being loaded so you can end up with 2 copies of every dir being loaded! The fix is to make the 'Directory listing of:' line the same, i.e. "ftp://test/dir1/"

[040208] Fixed. "-n" command line option to a console build causes a option failure and the executable does not run.

[040208] Corrected UNIX jasspa tree search when executable is in CWD and there is no executable path.

[040130] 2nd iteration of prototype and near final revision of new user setup.

Following an internal review of RC3 then it has been decided to address the issues of user configuration prior to a full release. This specifically addresses the location of user MicroEmacs configuration directories and search paths. User configuration has traditionally required the setting of external environment variables such as "$MEPATH" and for the user to create a private directory to store user settings. This is proving difficult for new users who just want to run the editor. RC4 and subsequent releases will address these problems by determining the correct location for configuration files and create the appropriate files and directories under user control.

The net result of these changes should significantly simplify installation and setup as follows:

All platforms will be able to run without any manual user setup or the requirement for specific MicroEmacs environment variables.

User defined directories and configuration files will be created under editor control on detecting a new user.

Existing installations using $MEPATH will be backwards compatible with the new build.

All platforms now support a searching jasspa sub-directory structure of company / spelling / macros. This was traditionally limited to the Windows Install Shield installation but has been extended across all platforms.

Two new environment variables are provided for user or system administrator use.
$MEINSTALLPATH(5) defines the location of the MicroEmacs standard macros and allows the built in search path to be overridden.
$MEUSERPATH(5) defines the location of the user private configuration directory and allows the user to locate their private directory in different location. In a standard install neither of these variables will be required.

The Microsoft Windows system defined application path will be used for user configuration files. This is applicable for roaming users where the application directory is stored on a server.

The use of the
me32.ini(8) file on MicroSoft Windows environments is not required, but is still supported.

The UNIX path searching is improved. /usr/local/microemacs will be depreciated and replaced with /usr/local/jasspa in addition other standard path locations are supported on a per-platform basis.

On UNIX then the directory ~/.jasspa shall contain the user configuration files. Optionally the company, spelling and macros sub-directories may be included in this directory where access to the system directory locations by the user is not permitted.

Concept of guest has been removed. guest.emf and guest.erf removed replaced with newuser.
user-setup(3) no longer supports setting of name.

[031120] buffer.c. Changed the 'n' arg to list buffer so user can select hidden or verbose etc. Added check after exec of "ehook" to catch nasties, not fool proof but catches attempts to close tool bar etc.

[031120] Fixed a
goto-line(2) bug shown when using grep on a single lined file (like CVS/Root).

[031120] hilight.c. Changed indent line count to use the close so values of greater that 256 can be used.

[030917] CVS. Major revamp of CVS support including an OSD dialog for each tool.

[030917] Changed the CHAR defines and add defines for the LEADER and TRAIL bytes used for special chars. Re-implemented OSD hot-keys to use "\\H" instead of "&" and added new "\\{" and "\\}" to stop and start current item hilighting. Added support for C++ private public and protected token indentation. Added new Check-box chars to the extended chars (1,2,3,4,19 & 20) and improved the drawing of some of the others Fixed windows "close while minimized" test so only prompted if something has changed.

[030821] Rationalized the buffer sizes, increased the keyboard macro and search string buffer sizes. Removed the GNU regex code - not used or tested in years. Part one of Jon's Xterm key lookup fix to get the key pad working.

[030710] User setup. Updated osd calls due to the change in 'd' flag behaviour and changed the items with drop down menus to use the new combo-box.

[030710] ODS. Updated osd calls due to the change in 'd' flag behavior.

[030710] Added new define for the number of history types and added new
@h0(4) history variable.

[030710] Added support to
@mn(4) and
@mna(4) in the "meGetKey" routine

[030710] Changed some define names to make them compatible. Changed the calls to "meGetUserKey" to "meGetKey" so a macro can give a list of keys Added new 0 argument which quits at the EOB rather than going to the top of the buffer etc (used in
page-file(3) "isearch").

[030710] Changed the logic of the 'd' flag so that it disables the displaying of the item type, changed button rendering so that it adheres to this so a single char button can be created Added new 'O' combo box item type which is a mixture between an entry box and a sub-menu item.

[030710] Improved the special char drawing routines so that they remain inside the char space and triangles look good regardless of size.

[030710] Fixed a nasty bug to do with file hooks that load other files and the find-file command manipulating the buffHistNo incorrectly so the wrong buffer is shown - obscure!

[030512] Changedthe line flag implementation to be more flexible and variable in size so UE has a smaller memory usage and ME has line flags available.

[030512] Improvedthe AMark setting and deleting.

[030512] Added a Protected Line flag and vastly improved the narrowing. Renamed most function in line.c to make them more readable.

[030512] Big return value change to get functions consistent - found that the return values of low level line functions where different to high level functions making the code hard to read and dangerous. Also needed a consistent triple value return (true false and error) so change meABORT to -1 across the board.

6th Release - December 2002

[021216] Removed .cvsignore from source release.

[021216] Fixed "ne" Unix build for a window build

[021216] Fixed Perl abbreviations - Thanks to Dr. Detlef Groth.

[021216] Fixed "$frame-width"/"depth" macro operation on the set - Thanks to Th.

[020723] Added right and bottom toolbars, and a paged tool concept, fixed quite a few problems found with the toolbar. Added a new Buffer Tools tool which loads the hk???.eaf file so that the abrev ???.eaf file can be left as solely an abbrev file.

[020723] Changed the interface to regexStrcmp to give better control. Added support for the "@s#" variables after a
&xsequal(4), re-implemented the buffer context initialization to not use iscanner so it no longer need to swap buffers also changed the location of the fhook exec to earlier, where it was the window count was incorrect for the old current buffer and this could lead to a crash if the fhook deletes this buffer (found in CVS mode).

[020301] Major changes to create NanoEmacs! Made macro getting of keys for binding very strict, no superfluous chars allowed Changed mlwrite so that when aborting and no !force is used it will write message even with a MWEXCEL. Made printing optionally quiet for JST insert printing. Minor changes to scroll commands to abort when at the top or bottom. Small change to numerical interface to suspend-emacs.

[011016] New caps-lock, num-lock, scroll-lock and pause key support for win32 & unix. The "*-lock" implementation to be more like "S-pick" and "C-pick" as the keys are automatically supported (like the shift) so there are no default binds to void, the keys are only generated if there are bound. Could not implement this on MS-DOS.

[011016] which command built in i.e. "M-x which". Used for command utilities.

[011026] A new Hide value feature when inputting strings, this is now used be the crypt and ftp Password entry. The string is shown as '*'s.

[011025] mlGetChar fix. The key "return" was the 78th special char, i.e. "SKEY_SPEC"|'N' and as the mlGetChar did not check the "SKEY_SPEC" bits, pressing return was like pressing 'N' so on a "Y/N" prompt try pressing return, its like saying No! .

[011016] Spelling dictionaries renamed with ISO naming scheme. Because of the language changes, you need to rename your personal dictionary to lsdpengb.edf for British and lsdpenus.edf for American.

[011016] Highlighting brackets/braces as requested from user base. The highlight braces required some other subtle changes to screen-update and show-region and the addition of the "rbin" mode means that this version is incompatible with the last in quite a few areas.

[011016] Fixed mouse handler (turns out that if the pick event was lost (use "@cg" or an error) then me would lock!).

[010716] CVS macro update. Changed "cvs-diff" to "cvs-gdiff" and introduced a new "cvs-diff" which just gives the "diff" output and fixed several bugs when running with a CVS server. Also added support for the CVS/Template file when committing.

[010716] Minor update to the CVS help page for the aforementioned (Affected all help files).

3rd Release - July 2001

[010713] New style WWW JASSPA Pages.

[010712] Added comment and menu support for MS-DOS and M4 (hkdos.emf/hkm4.emf).

[010507] Added generic commands for the creation, deletion and reformatting of comments now used by most of the file hooks.

[010412] Added new generic buffer setup, menu and help macros, creating the new
buffer-setup(3) command. Ported all existing file hooks to this new interface greatly reducing the buffer hook size while increasing its functionality and consistency.

[010402] Added support for new
$buffer-backup(5) variable for setting the back-up file location.

[010312] Support for new key bindings allowing CU emulations. Nedit bindings provided as example. Major work to enable the complete re-binding of all keys so the user interface to MicroEmacs can be completely changed, this allows for example a Windows feel to be created. This required many internal ghosts to be exorcized and add new macro functions.

[010308] User buffer configuration menu added.

[010308] Improved Python support (Contribution PG).

[010304] Bug fixes to hilighting logic.

[010228] Improved dialog box for search/replace.

[010210] Revised programming language templates; simplified the common elements used in configuring the templates.

[010202] Added new
command-wait(2) command to enable macros to wait for user dependent completion, used in "gdiff".

[010202] Changed buffer variables to except the form ":<buffer-name>:<variable>", like command variables. This allows macros to access variable not defined in the current buffer.

[010126] File "autosave" location changes. Control save name and location.

[001005] OSD speedups.

[001005] Improved and increased the file system operations via the new
file-op(2) command, created better menus in the
file-browser(3).

[001010] Revamped the main ftp GUI to make it work much more rationally.

[001010] Improved
ipipe-shell-command(2) efficiency on Windows by introducing a new thread approach to listen for activity. Implemented a shell command-line in an ipiped environment so
ishell(3) command is now usable on Windows platforms.

[001010] Added new
set-position(2) which can be used to store all information about the current window and
goto-position(2) which will then restore them. Allowed macros to use non-letter characters for alpha marks and positions so they no longer need to clobber user ones.

[000126] Directory file copy. Within this release files in the directory listings may be selected for copy and pasting from the menu. Use the right mouse button to pop-up a menu in the directory buffers. Copy and paste to/from a ftp directory buffer to a local drive buffer may be used to initiate an ftp transfer. (This is how these pages are uploaded).

[000126] New command ftp opens a ftp connection using a dialog. Use may save the host connection information in a registry file. Note that the password information is exposed so be careful where this is used - if in doubt do not enter the password and you will be prompted.

[000126] New command
uniq(3) operates as the UNIX of the same name. used with sort, and reduces to unique lines.

[000126] Character translation; addition of character translation macros when moving between character sets. Accessible from Menu -> Format -> Change Buffer Char Set.

[000126] Support for additional character sets, Windows GREEK, Windows TURKISH.

[000126] Line highlighting selection with the use of the mouse and auto search. When using the mouse selection to set up the line highlighting when invoked from a right-mouse -> Hilight Line -> color/remove selection; the macro determines the mouse selected region and makes an appropriate decision as to how the line highlighting scheme is to be applied. The following rules apply to the mouse selection:-

Point in line selected (i.e. mark == point) Highlight the line only.

Region in the line selected. Both point and mark are on the same line. Extract the selected text and hilight all lines that match the search pattern. The color "remove" is also pattern matched to selectively remove lines.

Region selected mark & point on different lines Block up the region with appropriate highlight.

Note that line highlighting may be safely used in a folded buffer.

[000126] Addition of special rendered space character. You may toggle this from the keyboard using a macro in your user.emf as follows:-

[000112] Revised color hilighting schemes, reduced the number of colors in a number of schemes. Introduction of the Sherwood Forest color scheme (green theme obviously !!).

[000112] Small revision to the user interface with respect to font selection. In order to make character set selection easier then the multiple choices for the box characters have been removed from Menu -> Help -> User Setup. These have been replaced with a new check box Extended Char Set. This box should be checked to enable the special rendering characters and enable the box characters - this is typically enabled on X-Windows and MS-Windows.

[000112] Provision for directory list sorting on name, modification time and size. Selecting the directory column title performs a re-sort based on the selection, a further selection reverses the order of the list.

[000112] Addition of ftp support (meu build on Windows, enabled by default on UNIX). Enables files to be edited via ftp, (read and write supported). Transfer to another system using ftp://[<user>[:<password]@]><host>[:<port>]/<pathname>.

[000112] New spelling rules for number sequences and specialized wild card sequences. Within the rule file (i.e. americar.emf, britishr.emf, etc.) then the following spelling rules may be added to cope with numeric sequences. The addition of these rules will spell check hexadecimal sequences and validate numeric sequences such as 1st, 2nd, 3rd etc. A spelling of "1nd" would generate a spelling error. This has not been performed for other languages so submissions for other language equivalents would be appreciated.

[991101] Enhanced the latex support macros following various contributions from users.

[991101] Added Favorites to the File pull down menu. This is a simple mechanism to allow the user to add a file to a favorites list.

[991101] Ground up implementation of the regular expression pattern matcher, following licensing problems with the GNU regex. The resultant pattern matcher is now a little faster than GNU regex and is capable of all of the standard regular expression pattern matches. The pattern matcher has diverged from GNU in that double backslashes are required in the character classes [..] to allow for escape sequence short cuts such as '\n' (newline), '\t' (tab) etc. It was felt that this compromise was better than having to quote the more obscure search characters.

[991101] Changed the hilighting and indenting syntax to be GNU regex compliant.

[991101] Modified compare-windows to ignore white space by default, compare-windows-exact performs an exact character for character comparison.

[991101] hkm4.emf added back into the release (seemed to have gone missing).

[991101] Cut and paste fix when running the UNIX version through an X-Server such as Exceed in the Windows environment.

[991101] Plain text printer device added.

[991101] Obscure OSD fix.

[991101] New OSD help search facility Menu->Help->General Help.

[991101] Fix for NT hang-up on shut down (typically encountered when running a source debugger).

[991101] Fix for NT process spawning with spaces in the names.

[991101] Metris macro fix, OSD bug fix, NT display fix.

[991101] New - color scheme, GVim look.

[991101] New - Unix/Linux support for Wheel Mouse (mouse.emf).

[991101] New - Color schemes, Plain; for those that do not care for an abundance of colors.

[991101] Modified the numeric key-pad behavior to be consistent on all platforms. Problems were noted with the UNIX number lock orientation which was reversed.

[991101] New - Color scheme variables which allow the hkXXX files to determine the level of hilighting to apply to their templates.

[991101] Line length fix; more graceful behavior (i.e. does not crash) when the line length exceeds 64K.

[991101] Intercept the windows 105 keyboard application key (typically right hand side of keyboard next to the control key). The key is called "menu". By default this is bound in win32.emf, however users may bind it as a prefix for their own key combinations in much the same way as "Alt" or "C-x" if required.

[991101] New; OMG's IDL language template added.

[991101] Fix for windows short name in next-buffer.

2nd Release - Beta #1 - May 1999.

[990501] Bug fixes with multi-language support and spelling dictionaries.

[990501] Fixed fill-paragraph such that it retains the cursor position in the paragraph when invoked without arguments.

[990501] Moved to GNU regex for search/replace engine.

[990501] Enhanced isearch such that it operates in *shell[990501 buffers (again).

[990501] gdiff macro implementation of a graphical diff to allow color annotation of differences and difference selection. Uses the output of a standard diff(1) utility.

[990501] 2nd port to IBM AIX.

1999

[990101] Introduction of the address and date organizer (replacing the existing cal interface).

Daniel Lawrence turned MicroEmacs into an editor for the masses, it is his work that ultimately made MicroEmacs so popular. Daniel did a tremendous amount of work, both adding features and supporting other platforms resulting in the MicroEmacs v3.8 release on which JASSPA's MicroEmacs is based.

Late 1985/early 1986

Dave Conroy, the original author, first developed the original code base for private use. Various people asked Dave for a copy of the program and it was distributed without concern for copyrights or ownership as was the custom of that era.

Work In Progress or Planned

Development of MicroEmacs is an on-going process, follows is a list of work items which is currently being undertaken or planned:-

Horizontal scroll bars.

On-line tutorial to help beginners get up and running.

Native printer support for the generation of postscript.

Inclusion of zlib(1) to allow compressed file reading.

Release History

August 2006

9th Major Release - MicroEmacs '06.

May 2005

8th Major Release - MicroEmacs '05.

January 2004

7th Major Release - MicroEmacs '04.

December 2002

6th Major Release - MicroEmacs '02.

January 2002

5th Major Release - MicroEmacs '02.

August 2001

Patch Release for MicroEmacs '01.

July 2001

3rd Major release - MicroEmacs '01.

March 2000

2nd Release alpha patch.

May 1999

2nd Major Release - MicroEmacs '99.

October 1998

Minor patch to MicroEmacs '98 to correct a font problem on Windows platforms.

September 1998

1st Major Release - MicroEmacs '98.

1988

Daniel M. Lawrence - Microemacs V3.8 distribution.

Daniel Lawrence turned MicroEmacs into an editor for the masses, it is his work that ultimately made MicroEmacs so popular. Daniel did a tremendous amount of work, both adding features and supporting other platforms resulting in the MicroEmacs v3.8 release on which JASSPA's MicroEmacs is based.

Late 1985/early 1986

Dave Conroy, the original author, first developed the original code base for private use. Various people asked Dave for a copy of the program and it was distributed without concern for copyrights or ownership as was the custom of that era.

Documentation

The documentation is all written in UNIX nroff(1) and converted to HTML, Microsoft Windows Help File format and MicroEmacs Help file format.