Programmer's File Editor History of Development Changes ------------------------------ [Note: Not all the versions whose numbers appear in the list below have been released publicly] 0.04.002 -------- The "file changed" marker in the status bar has been changed from "C" to "#" to avoid confusion with language types Added a standard key mapping Ctrl+Shift+O to invoke EditSplitLine Fixed random return value from routine that detected a second PFE instance Characters with ASCII values > 127 are now printed correctly as ANSI characters rather than as digraphs Extending a selection generated by a successful search no longer causes a UAE It is now possible to set the screen font and printer font to non-ANSI as well as ANSI fonts The most-recently-used-file list is no longer erroneously appended to the system menu instead of the File menu if the MDI child is started maximized Files specified on the command line with names beginning '\' are now handled correctly Search-and-replace no longer disregards the 'read-only' status of a file The filter for "*.exe" files in the Browse sub-dialog of the "Configure Windows Tools" dialog now works correctly Fixed a bug whereby some files would not be saved on exit or from a File|CloseAll operation if some altered files were untitled General release as the second beta version on 3 November 1992 0.04.001 -------- Improved scrolling behaviour when dragging a selection with a mouse and fixed several bugs that caused the selection to freeze Fixed a bug introduced in 0.03.036 that stopped drag-and-drop copy from working Fixed some UAEs when scrolling with PageUp when the caret is in the top line of the screen, with less than one window's worth of lines above it Fixed inaccurate scrolling down by pages when less than one window's worth of lines remained below the window and the bottom line of the window was not one full row in height If PFE is terminated when the tool bar is a floating window, it will now restart with the tool bar as a floating window Making PFE iconic when the tool bar is floating no longer erroneously changes it to a bar on the right hand border The way PFE locates the Windows SDK helpfile for the Help|SDK function has been made more sensible. If the [options] section of the ini file contains a 'sdk-helpfile' key, the name given is used; if not, PFE looks for first "win31wh.hlp" and then "sdkwin.hlp" on the PATH and uses the first one found. Limited release to beta testers for validation as the possible beta 2 version on 19/10/92 0.03.036 -------- When configuring the first tool in the Configure Windows Tools dialog, the Add button now correctly becomes active as soon as something is typed in the Command Line edit control The default mapping of Ctrl-P to File|Print is now shown on the menu Fixed a bug whereby, if PFE was maximized, made iconic, and closed from the icon's system menu, it would restart restored rather than maximized Added an ini file setting "start-maximized" to the [options] section, which controls whether PFE starts maximized, overriding the saved state at last closedown Shift-PgUp and Shift-PgDn no longer cause UAEs or select the wrong sections of text Added an ini file [options] setting "track-vertical-thumbtack" that controls whether PFE scrolls to follow vertical thumbtack dragging PFE now leaves selected text highlighted after it is copied to the clipboard. An ini file [options] setting can specify that highlighting is to be removed Key names in menus and the Key Mapping dialog now use '+' rather than '-' to link components, to be CUA compliant The Settings menu has been renamed Options Corrected a bug in the command line parser that would cause DDE commands and ini file lines whose last argument was in quotes to be mis-parsed Added a most-recently-used files list to the File menus Added a menu option and tool bar action to repeat the last DOS command run Corrected PgUp and PgDn and scroll bar page moves when caret is not within the window The default setting for the 'auto-unix' key in the [options] section of the ini file is now 1, so that UNIX files will save in UNIX format by default The Browse Application dialog started from the Browse button in the Configure Windows Tools now uses a filter showing only "*.exe" files 0.03.035 -------- Improved icons Some development code that was accidentally left active and caused a UAE when Ctrl-Z was pressed for an Undo has been removed; undo actions are not yet supported Fixed a bug that prevented disabling only a subset of the possible prefix keys Dragging the mouse to extend a selection should no longer leave a caret trail on slower machines Windows are now scrolled to track movements of the thumbtack in the vertical scroll bar All references to "Development Tools" in menus and functions have changed to use "Windows Tools", to clarify the intended use of the facilities Details of the actual command line used and working directory are now stored for all Windows Tools between sessions, and not solely for the last one used Limited release to beta testers 05/10/92 0.03.034 -------- When a window is duplicated, the second copy's scroll bars are now set correctly Fixed a bug whereby, if a window lost focus when its caret had been scrolled out of view, the caret would be wrongly placed when the window regained focus The tool bar is now disabled when PFE is waiting for the second key of a two-character command sequence If the left button is pressed in the tool bar, and the mouse is moved out of the tool bar before it is released, focus is now correctly restored to the current window If the left button is pressed in a tool bar button and the mouse then moved off the button, the button will return to its down state should the mouse move back onto it When dragging the tool bar from a border, the state will now not change unless the mouse cursor is outside the tool bar when the left button is released A 1-pixel gap between the area showing line numbers and the area showing the text in a window has been eliminated Ctrl-K can now be used as a prefix key The prefix keys ESC, Ctrl-B, Ctrl-F, Ctrl-K and Ctrl-X can individually be enabled and disabled from a sub-dialog of the key mapping dialog. When disabled as a prefix key, each of them can be mapped to a function as required. By default they are all disabled, and the hard-coded key mappings are now fully CUA-compliant. As a result the format of .key files has changed Pressing TAB when no file is open no longer causes a UAE Page Down now does nothing if the final line of the file is visible in the window Added a File|Name menu item and equivalent DDE command that allows the file name associated with a window to be changed without writing any data to a disk The EditPageUp and EditPageDown functions have been redesigned to maintain the caret in the same screen row, and to keep a memory of the caret column. This means that a page down followed by a page up returns to exactly the starting position Vertical scrolling using the scroll bar now does not move the caret within the file, but moves it with the text Selections are no longer removed when the data is scrolled using the vertical thumbtack Functions EditShowNextLine, EditShowPreviousLine, EditShowNextPage and EditShowPreviousPage have been added to give keyboard equivalents of vertical scroll bar actions Menu items File|Open, File|New and File|Print are now bound by default to Ctrl-O, Ctrl-N and Ctrl-P as recommended in the CUA Pressing a key that is not mapped no longer causes the window to scroll to show the caret if this is not initially visible 0.03.033 -------- Fixed a bug whereby directories whose names were a single letter or '.' were not accepted in the Working Directory controls of the DOS Command and Launch Tool dialogs Scroll bars no longer respond to the first mouse click if their window is inactive; the click simply activates the window without disturbing its state The caret now follows the mouse cursor in a somewhat more friendly fashion when dragging with the left mouse button down The File Print dialog now allows line numbering, line wrapping and page header options to be specified. The corresponding window mode values are now the default settings for the dialog rather than the active settings An initialisation file option now allows new windows to be created always restored; always maximized; or maximized if and only if an existing window is also maximized. These options can also be made conditional on the main window being maximized too. ESCAPE now closes the About dialog box The vertical elevator is now correctly positioned after a search or a Window|CentreCaret operation The ini file and keymap files are now found correctly if the Windows directory is in a JOINed or mounted directory that appears as the root directory of a drive Printer font selection now uses the Font common dialog Filenames are now correctly set in the document title used by Print Manager when a file is printed Window titles for unnamed files, unnamed templates and command output have been redesigned; the title for an unnamed template and a command output window now includes a sequence number PFE no longer beeps to warn of an impossible scroll request (e.g. scrolling up a line when already in the top line) The Template|SaveFile and Template|Store menu items no longer both have 'S' as their hot key The Template|SaveFile menu item now has an ellipsis to show a dialog will be run The File menu has been re-arranged for better CUA compliance The top and bottom margin checkboxes are no longer confused in the Print Setup dialog 0.03.032 -------- Changing file and window modes with the Settings|CurrentSettings dialog no longer erroneously lights the toolbar Cut button Files can now be loaded and saved in UNIX format, using LF as a line terminator Clipboard data in excess of 64K is now handled correctly The File Open and File View dialogs now allow multiple files to be selected Wildcarded file names can now be given both on the command line and in the DDE commands FileOpen and FileView Fixed a bug in which an invalid window handle was passed to IsIconic on startup, which was trapped by the debugging kernel Captured output from DOS commands can now be shown in an existing Command Output window as an alternative to creating a new window Windows can now be tiled in a custom vertical pattern that maximizes their width A new function FileAbandon and corresponding DDE command allows a changed file to be closed with the changes discarded 0.03.031 -------- Cursor resource memory is now properly freed after the toolbar has been dragged with the multi-headed-arrow cursor Text drag-and-drop is now implemented When a window is duplicated, the copy now correctly inherits the text colours and language type of the parent Fixed a bug whereby a non-stock font would not be deleted on termination 0.03.030 -------- If an invalid line number is entered as the target in the Goto Line dialog, focus is now set back to the control after the error message is shown Menu items to select the fixed pitch ANSI, OEM and SYSTEM fonts have been added The "Free Key" and "Free All Keys" buttons in the Key Mapping dialog have been renamed to "Unmap Key" and "Unmap All" Selecting Window|Next when all windows are iconic now restores the current window rather than entering an infinite loop The Status Bar now uses the Windows variable-pitch ANSI font Added an Edit|SelectAll menu item to select an entire file Maximized MDI child windows can now be closed by double-clicking in the system menu box The "goto start of file" and "goto end of file" operations are now by default invoked by Ctrl-Home and Ctrl-End rather than Ctrl-PgUp and Ctrl-PgDn, to be in line with standard Windows practice Selected text is now displayed in the correct text and background colours as set up from the Control Panel If the current window is set to have a language type of "C", Edit|SelectWord treats an underscore character as alphanumeric, so that identifiers such as WM_CREATE can be selected as a single entity Fixed a nasty memory manager bug that could cause a UAE inserting a newline after a line deletion in very complicated circumstances to do with the fact that line control blocks are held in groups of 1024 The vertical thumbtack is now set more sensibly, reflecting the line number of the line at the top of the window Positioning within a file containing more than 65535 lines by moving the vertical thumbtack now works correctly Tabstop ordering in the Print Setup dialog has been made sensible Limited release to beta testers 19/08/92 0.03.029 -------- Selecting text with a mouse has been enhanced. Holding SHIFT down while clicking the left button will select between the caret and the mouse cursor, or will extend an existing selection The Window|Widen menu option will now restore iconic or maximized windows before resizing them Shift+click on the "Toggle Keyboard Recorder" toolbar button now replays the keyboard recording The 'Save File' toolbar button now invokes the TemplateStore function if the current window contains a template. The button state now correctly reflects the change state of template windows The caret now changes size to indicate whether a window is in insert or overwrite mode Selecting a word by double-clicking the mouse or using Edit|SelectWord no longer selects white space to the right of the word Fixed a bug whereby, after doing a Window|Tile, the wrong window would respond to keyboard input and scroll bar actions Fixed a bug which would sometimes cause File|Insert not to close the file that was inserted 0.03.028 -------- The font used in edit windows may now be selected from all the available fixed pitch ANSI screen fonts The 'search' dialog now permits you to specify whether the matching string is to be selected or not (the default is settable in the ini file). The dialog also allows you to choose to extend the selection from the initial caret position to the matching string All dialogs have been redesigned to use 8pt MS Sans Serif text instead of 10pt System The algorithm for positioning the caret in the text when the left mouse button is clicked has been improved: clicking in the left half of a character cell places the caret to the left of that character, and clicking in the right half places it to the right The "Key Mapping" dialog now permits a key to be remapped from one function to another with a single button click, instead of needing first to free it and then map it to the target function The "Free All Keys" button in the "Key Mapping" dialog now requests confirmation before proceeding 0.03.027 -------- Minor internal changes to make the source compatible with MSC 7.0 The Edit|Text|Uppercase and Edit|Text|Lowercase functions now correctly mark the file as being changed. They also produce an error if used on a read-only file. Both now handle characters with ASCII codes > 127 properly; note, though, that neither these, nor anything else in PFE, will work with Kanji or other languages using 2-byte codes 0.03.026 -------- Altered files can now be saved to disk automatically before running a DOS command or launching an application or a development tool The details of the last-used DOS command, application or development tool are now remembered between PFE sessions. The details of the last used development tool are also shown as the default each time the dialog is started The Run DOS Command dialog box now has a Browse button 0.03.025 -------- Extra functions are now available from the toolbar by using the SHIFT and CONTROL keys in combination with the left mouse button. See the help file for details. The "Window" menu item on the menu bar has been moved to be the last apart from "Help", to match the standard menu layout for MDI applications Windows may now be set to use "soft tabs": tabs will be inserted as an appropriate number of spaces rather than as single 0x09 characters The "Insert Template" toolbar button is now correctly set as template files are attached and detached The TemplateInsert, TemplateEdit, TemplateStore and TemplateStoreAs functions no longer cause UAEs if no template file is attached Files that have the "read only" attribute set are opened in read-only mode, regardless of the "read only" button state in the File Open dialog Characters with ASCII codes from 128-255 can now be inserted from the keyboard 0.03.024 -------- Many of the functions shown in the Key Mapping dialog, and the equivalent DDE commands, have been renamed. They now correspond better to the menus where they are held (or would be held) A bug whereby a DDE Poke operation received DDE_FACK on a fail and DDE_FNOTPROCESSED on successful termination has been cleared A successful search now sets the toolbar cut and paste buttons correctly Several new DDE commands and enquiries added The syntax of the DDE commands CaretLeft(), CaretLeftWord(), CaretRight() and CaretRightWord() is now changed so that each takes two mandatory arguments. The first is the count of the number of characters or words to move, and the second is 1 to extend a selection and 0 not to do so To avoid confusion over what it is, the support module PFEDOS.EXE, which is used by PFE to handle output redirection in DOS commands, has been renamed $PFEDOS.EXE, which hopefully looks less like a DOS version of PFE. The associated PIF file is now called $PFEDOS.PIF to match Using selection-extend keys like Shift-Left after marking a selection with the mouse now has the desired effect. Other minor bugs when moving the caret with Shift down to extend selection have been cleared Caret movement keys can now be remapped. This has required an incompatible change in the format of key mapping files, so that files saved with earlier releases of PFE cannot be used The semantics of the default PgUp and PgDn mapping is slightly altered; if line 1 is at the top of the window, PgUp moves to the start of the file, and if the last line is at the top of the window, PdDn moves to the end of file. Shift-PgUp and Shift-PgDn are now mapped to page up/down moves that extend the selection To be compatible with standard MDI practice, Shift-F4 now maps to WindowTile by default, and Shift-F5 to WindowCascade. TemplateInsertMarker has moved to F6, and CaretCentre to Ctrl-F5 The Goto Line dialog has been enhanced to allow optional extending of a selection ^T is now accepted as meaning TAB in a search or replace string, as well as ^t 0.03.020 -------- Released as the Beta 1 version of PFE 28/07/92 ------------------------------------------------------------------------------ Reported bugs that have not yet been cleared -------------------------------------------- Loading a file containing control characters causes either a UAE or a locked system The toolbar paste button is not updated correctly if another application is activated and changes the clipboard contents If a search locates a matching string that is to the left of the visible area of the file, the window scrolls only far enough to show the caret; for a forward search this leaves the target string not visible When an area is deleted from one window, any other window showing the same file will have its caret column position incorrectly adjusted if the caret is within or below the area If the user tries to save an un-named template, calling it by the same name as an existing one, and presses CANCEL in response to the confirmation prompt, the template window is nevertheless given that name In general selection dragging behaviour with the mouse outside the window needs some improving. When the cursor is to left or right of the window tracking should not be timer based The method of checking for termination of a DOS command usually results in a call to GetModuleUsage with an invalid module handle. The code needs to be replaced with something using ToolHelp When a selection ends with the cursor at the left of an empty line, the display code draws a half-cell highlight on that line erroneously When dragging, caret should go to left or right of window in a single operation when cursor goes off past left or right borders Most dialogs do not have system boxes On slower machines, the screen does not update often enough to handle auto- repeating a key Changing the screen font to a larger type face can result in the caret no longer being visible in the window Duplicate windows should have ":sequencenumber" appended to their titles There is no way to insert special characters such as ESCAPE into a file Cursor should change to hourglass when cutting text When MDI child is to be opened maximized, the initial state where it is shown restored should be suppressed Double-click to the right of a line, or in the right-hand half of the last character in a line, should select the word to the left of the mouse cursor With text like "point.x = something", double clicking on the right hand side of the 'x' or left side of the following space uses '.' as a word delimiter when extending the selection left. This is inconsistent with how extensions right work, or when the '.' is followed by more than one character Random UAEs when pasting large(?) blocks; Dr Watson logs show the break in module 28 (space.o); a pointer to an SNODE block is NULL ------------------------------------------------------------------------------------ Things To Be Done ----------------- [This list details features that are intended to appear in the version 1 full release. Depending on many factors it may not be possible to implement all of the items here for that release - but they should all appear in due course] Implement Undo Replace the code that passes filenames from one instance to another with a version that does so in one operation and hence is immune to DDE timeouts Abolish restrictions on line length and make horizontal scroll bar handling sensitive to the actual data visible File|SaveAll option Ability to indent/undent a range of lines Add ability to define multiple keyboard macros, with load and save Improve intelligence of text redrawing to avoid flicker in overstrike mode and when updating the position in the status bar Use common dialogs for Find and Replace Implement double-click and drag to extend selection by words Change the mouse cursor shape over selections to give a cue that drag and drop is possible Allow search on regular expressions Implement line wrapping and paragraph reformatting Resize the tool bar buttons to appear roughly the same physical size for all screen resolutions Implement save-with-backup and periodic-auto-save features Record tool bar actions in keyboard macros Make the line number area resizable by dragging the left border Provide visual feedback when dragging the tool bar about Hide the mouse cursor while the user is typing When a file name is changed (by File|SaveAs or File|Name) the file and window modes should alter to match the new file type Ability to automatically move to the end of command output windows Ini file option to allow PageUp/PageDown to work in units of half a window Ability to mail files via MAPI-compliant mail systems Full rewrite of the help file to make it actually useful Allow current file name to automatically be substituted in DOS commands Generate 32-bit version for Windows/NT Allow multiple instances to run if required (currently only the fact that DOS commands must run single-threaded prevents this) Use the selected text as the default search string when searching When a file is renamed by File|Name, PFE should check on saving whether the file exists, and prompt for confirmation if it does Add adjustable right margin line to indicate a specific column width Auto-indenting should be done if a line is split, or a newline is inserted within it Remember position of floating toolbar between sessions When dragging-and-dropping, use Shift down to force a copy regardless of the ini file settings regarding control key usage ------------------------------------------------------------------------------------ Long Term Developments ---------------------- [Features here are regarded generally as Good Things, and may well be included in later releases. They will not be implemented for version 1] User configurable tool bar and menu Script language More sophisticated language support driven by external language-aware DLLs to perform syntax colouring, etc Optional project management system Support for group working under Windows for Workgroups Ability to invoke help based on the items selected in a window Text folding and bookmarks ------------------------------------------------------------------------------ Thanks to all the beta testers whose bug reports, comments and suggestions have gone towards the development of PFE ------------------------------------------------------------------------------