home *** CD-ROM | disk | FTP | other *** search
- Andys Editor Help-file
-
- /*...smove to this line\44\ press escape\44\ select \39\fold\39\\44\ select \39\in\39\:0:*/
- To navigate a folded file use the arrows/keypad as normal but also use fold
- 'in' and fold 'out' primitives to enter and leave folds. These are accessible
- thus :-
-
- Fold in - press escape, select 'fold', select 'in'.
- or press F3 (if configuration is unaltered).
- Fold out - press escape, select 'fold', select 'out'.
- or press F4 (if configuration is unaltered).
-
- So press escape, select 'fold', select 'out' to return to the top level fold.
- /*...e*/
- /*...sintroduction:0:*/
- Welcome to Andys Editor. This editor was designed as a language configurable
- folding source code editor. This editor provides these features :-
-
- Folding. The ability to group lines into a larger 'meta-line'.
- Block operations.
- Yank and put model for line copying etc.
- Deleted item stack to allow multiple undeletes.
- Extended regular expression searching.
- Multiple buffers at any one time.
- Portability across many machines.
- Bracket matching.
- User configurable keyboard binding.
- Shelling of nested processes (and filtering of folds through commands).
- The editor is relatively small for what it does.
-
- This editor is a folding editor. This is a highly useful feature. Once you have
- got used to the folding paradigm, you will not want to use a flat editor again!
- /*...e*/
- /*...swhat is a folding editor\63\:0:*/
- Folding is an idea borrowed from the language occam by INMOS. A fold is a group
- of lines that may be considered a unit and described by a single line.
-
- Eg: Consider the flat piece of code :-
-
- while not eof(f) do
- begin
- read(f, c);
- write(c)
- end
-
- This could be folded to give :-
-
- while not eof(f) do
- /*...secho out another character from the file:10:*/
- begin
- read(f, c);
- write(c)
- end
- /*...e*/
-
- The ... line hides away the details of whats going on. Obviously it makes more
- sense to fold larger and more complicated peices of code away. Its a bit like
- inline subroutines. A particularly nice way to fold Pascal programs looks like
- this :-
-
- program fred(input, output);
-
- {highly trivial example of folding}
-
- var
- i: integer;
-
- /*...sinitialise:10:*/
- procedure initialise;
-
- /*...ssign_on:12:*/
- procedure sign_on;
-
- begin
- writeln('FRED version 1.0')
- end {sign_on};
- /*...e*/
-
- begin
- sign_on;
- i := 1
- end {initialise};
- /*...e*/
- /*...smain_body:10:*/
- procedure main_body;
-
- begin
- writeln('i is ',i:1)
- end {main_body};
- /*...e*/
-
- begin
- initialise;
- main_body
- end.
-
- As you can see, this style of folding allows you to rapidly find any given
- procedure and enables you to see the structure of the program as a whole. Also,
- you no longer need to page up miles to find the variables!
-
- Folds can be open or closed. The ones shown already were closed, but if they
- are opened they look like this :-
-
- while not eof(f) do
- /*...Secho out another character from the file:10:*/
- begin
- read(f, c);
- write(c)
- end
- /*...e*/
-
- This allows the user to see whats in them without actually entering them.
-
- There is a second kind of fold, called a virtual fold which allows links to
- other files to be made. For example you might see :-
-
- program fred(input, output)
-
- {$I 'header.inc'}
- /*...vheader\46\inc:8:*/
-
- begin
- etc.
-
- If you use 'fold_in' on the virtual fold line, then the file is read and
- selected. I suggest you don't try it on the virtual fold above, since it is
- unlikely you have a file header.inc for AE to load!
-
- If you later use 'fold_out' from within the top fold of header.inc file, then
- the file is optiobally written if modified, discarded, then the original buffer
- is selected. In this way many files may edited as if they were only one file.
-
- Virtual folds may also be opened, in which case they look like this :-
-
- /*...Vheader\46\inc:8:*/
-
- You cannot see the contents of an open virtual fold, since they are in another
- file, and are not loaded until the virtual fold is entered.
-
- The significance of opening virtual folds becomes apparent in searching, where
- it is possible to search just open virtual folds, and to skip closed ones,
- during a global search.
- /*...e*/
- /*...swhat is on the screen\63\:0:*/
- If you are in the editor now, looking at this fold you should see the following
- on the top 3 lines :-
-
- 1) The name of this help file (probably c:ae.txt) at the top left.
- 2) The current folds tag just below that (whats on the screen?).
- 3) A blank line below that (where prompts and error messages appear).
- 4) The language name (probably top) for the current buffer.
- 5) The current line and column numbers at the top right.
- The line number is the 'flat' line number (ie: over the whole file).
- 6) One or more of the words 'autoindent', 'overtype' and 'insert'.
- These specify the current editing mode.
- 7) Either ^I or a number specifying either the number of spaces
- per press of the tab key or that real chr$(9) tabs are in force.
-
- Below that, you should see this text.
-
- You will also see a line with a single ^ on it below this text. This marks the
- end of the current fold. Typing on it automatically inserts a new line. Any
- unused lines are marked with a ~ in UNIX vi(1) style.
- /*...e*/
- /*...scommand line and startup:0:*/
- When this editor loads it does the following :-
-
- Processes the command line arguments :-
-
- ae -lrt {filename}
-
- -l means load filename arguments into buffers
- -r restricted version (no shelling allowed)
- -t alternate terminal
-
- Trys to initialise the screen driver. If -t is supplied an alternate screen
- mode is used. On DOS this forces 25 line mode, even if EGA/VGA is present.
-
- Next a buffer is created with no name. A virtual fold line is created for each
- filename argument. On closedown the editor will not write this buffer, since it
- has no name.
-
- Then the configuration file is executed, line by line, stopping if an error
- occurs. If an error occurs, the line number is given, and AE will continue
- when the user presses a key.
-
- If the -l switch is given the editor attempts to create a buffer for each
- filename argument and then to load them.
-
- If there is only one file, and the -l switch is not given, the file is read
- in anyway.
-
- If there is only one file, it is selected.
-
- Then the editor signs on with its version date.
- /*...e*/
- /*...seditor commands:0:*/
- This fold lists all the commands available in the editor to the user. These
- may be executed in 3 ways :-
-
- 1) By pressing escape and selecting them from the menu system.
- The main menu gives a list of sub-menus, grouped by function.
- These sub-menus give command names, and prompt the user for
- arguments.
-
- 2) By pressing escape, selecting 'COMMAND' and typing them in.
- The 'COMMAND' menu selection is special in that it does not give
- a second level menu, but rather it prompts the user for a
- command string to be executed.
-
- 3) By using a key-binding that uses the required commands.
- A key-binding is a connection between a key or a pair of keys and
- a command string.
-
- A command string is a list of command names followed by arguments.
-
- /*...sarguments:0:*/
- Arguments may be supplied with the commands, or interactively.
-
- Character arguments may be supplied as unsigned decimal ASCII codes,
- or as single quoted characters.
-
- String arguments may be supplied quoted in "'s. Real quotes may be supplied
- by escaping them with \'s and real \'s may be supplied by quoting themseleves.
-
- Numbers may be supplied as unsigned decimal numbers.
-
- Yes/No responses may be supplied as 'yes' or 'no'.
-
- 'When' responses (when to enter a fold during searching for example) may
- be supplied as 'always', 'if_open' or 'never'.
-
- Buffer and language arguments may be supplied by stating their names in
- double quotes. Alternatively '.' may be supplied to indicate the current
- buffer or language of the current buffer.
-
- With all the arguments specifying ? will cause the user to be prompted
- for the arguments value. This is usually via a menu.
-
- Eg: character_overtype 65 overtype the current character with A
- character_type 'A' type A
- character_insert ? insert a character (to be decided later)
- line_goto 100 goto 'flat' line number 100
- buffer_write . no write the current buffer, no appending
- line_insert "Hello \"Ace\"" insert Hello "Ace" as a new line
- /*...e*/
-
- /*...scharacter:0:*/
- character_left Move the cursor one character keft.
- character_right Ditto - but right.
- character_insert c Insert character and move right.
- character_overtype c Overtype character over existing one
- or if at end of line then insert.
- character_type c Either insert or overtype, depending on flag.
- None of the 3 character entering routines
- will do anything if supplied the NUL (ASCII 0)
- character since this is used internally within
- the program (written in "C").
- character_delete_left Delete the character to the left of the cursor.
- If the character is no an end of line mark,
- the character is placed on the deleted stack,
- along with a flag to say that if it is
- undeleted then the cursor should move one
- right afterwards.
- character_delete_right Delete the character to the right of the
- cursor. If it is not an end of line mark, it
- is placed on the deleted item stack along
- with a flag to say that if it is undeleted,
- simply insert it at the cursor position and do
- not move the cursor.
- character_delete_eol Delete to end of line. Store the end of the
- line on the deleted stack.
- character_tab Inserts or overtypes as with either a tab
- character (^I) or as many spaces as are
- necessary to pad to the next tab stop.
-
- eg:
-
- character_type 'A'
- character_delete_right
- /*...e*/
- /*...sstring:0:*/
- string_insert s Insert a string (repeatedly character_insert's).
- string_overtype s Overtype a string (repeatedly
- character_overtype's).
- string_type s Type a string (repeatedly character_type's).
-
- eg:
-
- string_insert "Hello World"
- /*...e*/
- /*...sword:0:*/
- word_left Move left by a word (scope is current fold).
- word_right Ditto - but right.
- /*...e*/
- /*...sline:0:*/
- line_insert string Insert a new line, text of which is string.
- line_insert... string open indent
- Insert a fold line.
- line_insert::: string open indent
- Insert a virtual fold line.
- line_delete Delete current line (if not last line).
- Line is put onto deleted line stack.
- line_yank Copy current line and put on stack.
- line_up Move to the previous line in current fold.
- line_down Ditto - but next.
- line_start Move to the start of the line.
- line_end Ditto - but end.
- line_goto Goto a 'flat' line-number.
- line_split Splits line at cursor and move to start of
- new line
-
- eg:
-
- line_insert... "tag" yes 0
- /*...e*/
- /*...spage:0:*/
- page_up Scroll a page up.
- page_down Ditto - but down.
- page_scroll_up Scroll the visible area up a line.
- page_scroll_down Ditto - but down.
- /*...e*/
- /*...ssearch:0:*/
- search_for pattern case_sens reg_exp ... ::: dir n confirm
- Search for a pattern, which may or may not be
- a regular expression, searching in either
- direction, n times, possibly confirming each's
- position.
- Can specify when to enter nested folds and
- virtual folds.
- search_replace pattern replacement case_sens reg_exp ... ::: dir n confirm
- Ditto - but replace occurences.
- search_again Repeat last search or search and replace.
- search_bracket If currently on a bracket character, find the
- matching bracket. Scope of search is limited to
- current fold.
-
- eg:
-
- search_for ".*\.c" yes yes if_open if_open yes 5 no
- /*...e*/
- /*...stag:0:*/
- tag_line Place/remove a tag on current line.
- There is no limit on the number of tags that
- may be inserted into each buffer.
- tag_error Examine current line after cursor and extract
- a filename and line-number if present. Then
- if we are editing such a file, place a tag in
- the file's buffer at the given line number.
- This is intended for use with the output of
- the UNIX/DOS make(1) utility.
- tag_goto dir Move to the next or previous tag in the
- current buffer.
- /*...e*/
- /*...sfold:0:*/
- fold_start Move to the first line in the current fold.
- fold_end Ditto - but last.
- fold_open open The cursor must be on a fold line.
- Make the fold either open or closed.
- fold_in The cursor must be on a fold line.
- Enter the fold.
- fold_out Leave the current fold and go to its parent.
- /*...e*/
- /*...sblock:0:*/
- block_mark_1 Place marker one at the current line.
- block_mark_2 Ditto - but marker two.
- block_unmark Remove both markers.
- block_to_mark_1 Move the cursor to the line with the first
- marker. Do nothing if it is not set.
- block_to_mark_2 Ditto - but marker two.
- block_fold tag open indent Create a fold and insert the marked area into
- it. If there is no marked area, simply create
- the fold.
- block_unfold The cursor must be on a fold line.
- Unfold the fold and make the nested lines
- be marked.
- block_entab For each line in the block, insert a tab at
- its start. Error if line would become too long.
- block_detab For each line in block starting with a full tab
- remove the tab.
- block_read filename Read filename into fold and mark as a block.
- block_write filename append Write the marked block to a file, possibly
- appending to it.
- block_filter command Write marked block to temporary file 1.
- Run the command with temporary file 1 as
- its standard input and temporary file 2 as
- its standard output. Delete marked block.
- Read in temporary file 2 as the new block.
- Important: fold information is also written out
- for any nested folds. Therefore, if you pass
- a fold through 'sort' the folding structure of
- the file would almost certainly be corrupted. #
- This takes a copy of the 'before' block on the
- deleted item stack.
- block_delete Delete currently marked block. Put on deleted
- item stack. If this is subsequently undeleted,
- the resulting lines will be re-marked as a
- block.
- block_yank Put a copy of the current block on the deleted
- item stack.
-
- /*...sproblems with block_filter:0:*/
- # This is a problem caused by the way fold information is stored in the file.
- eg:
-
- The fold used as the argument File before "sort" File after "sort"
-
- {{{ this fold /*...sthis fold:0:*/ contents
- contents contents /*...e*/
- }}} /*...e*/ /*...sthis fold:0:*/
-
- Note that the resulting file has its end reserved comment before its start!
- If you passed the above file through an "uppercaseifier" then you would
- find that the reserved comments would be "uppercaseified" as well. In the
- reserved comment ...s implies closed fold, ...S would imply open. Therfore
- such a command would, as a side effect, open all nested folds! Moral: only
- use block filter on text, unless you know the program knows about folding.
- /*...e*/
- /*...e*/
- /*...sbuffer:0:*/
- buffer_create filename read select
- Create a new buffer of name filename.
- If read requested, read it in too.
- If select requested, select the buffer too.
- buffer_delete filename Delete the buffer and its contents.
- Do not delete the file.
- buffer_select filename Select a buffer for editing.
- buffer_rename filename filename Change the name of a buffer.
- buffer_read filename Read in the file into its buffer.
- buffer_write filename append Write the buffer to its file.
-
- eg:
-
- buffer_write . no
- /*...e*/
- /*...slanguage:0:*/
- language_create langname rc_st rc_end match auto tab seps
- Create a language which has reserved comments
- rc_st and rc_end, matches filenames with an
- extended regular expression, possibly
- has autoindent, and has a tab size of tab.
- The seps string determines what characters,
- apart from white space seperate words.
- as making up a word. eg: for "C" use "_" since
- identifiers may contains _'s.
- language_delete langname Delete a language.
- language_select langname Change the language of the current buffer.
- language_rename langname langname
- Change the name of a given language.
-
- eg:
-
- language_create "pascal" "{..." "}" ".*\.pas" yes 0 "_"
- /*...e*/
- /*...skey:0:*/
- key_prefix key_name This is used to allow multiple key bindings.
- eg: to get wordstar like block bindings
- you should use key_prefix "^K".
- key_bind key_name(s) stuff_to_end_of_line
- Make key key_name(s) execute the commands on the
- rest of the line each time it is pressed.
- If the first key_name is a prefixed key then
- a second key name will be expected, to complete
- the binding.
-
- eg:
-
- key_bind "^B ^S" "buffer_select ?"
- /*...e*/
- /*...sother:0:*/
- other_visible Toggle the white space visibility flag.
- other_insert Toggle the insert/overtype flag.
- other_shell command Execute subprocess command.
- other_redraw Redraw the entire screen.
- other_exit confirm Leave Andys Editor. You will be prompted
- about saving edited buffers.
- other_abort confirm Leave Andys Editor. No prompts.
- other_undelete Last deleted item is replaced at cursor
- position into the text.
- other_put Last deleted item is copied from deleted item
- stack to text.
- other_squeeze Discards deleted stack to free up memory.
- other_colours t f s mt mf ms Set the colours used by the editor for
- the text, fold lines, status information and
- also their marked counterparts. These numeric
- values used for the arguments vary from
- machine to machine.
-
- eg:
-
- other_shell "ls -al"
- /*...e*/
- /*...e*/
- /*...sdefault key bindings:0:*/
- The configuration file is accessable from these virtual folds (provided you
- are currently in the right directory).
-
- /*...vae\46\ini \45\ DOS\44\ OS\47\2 and Amiga versions:0:*/
- /*...v\46\aerc \45\ UNIX and XENIX versions:0:*/
-
- Any line in these files starting with a ; is ignored by the editor. Any other
- line is executed as-is by the editor at load time only. AE makes no attempt to
- re-read this file after it has been edited. Any line in these files may be fed
- to AE directly by pressing escape and typing in the line as a command (except
- for comment lines).
- /*...e*/
- /*...smisc stuff:0:*/
- /*...sphilosophy and design aims:0:*/
- The design aims when writing this editor were as follows :-
-
- To design an editor for an experienced user. This editor is not overly
- explanatory. This file is here for explanations!
-
- To design an editor specifically for program editing. Formatting and
- word processing were not incorporated.
-
- To try to keep it as small as possible, without having to recourse to
- assembler.
-
- To make the editor perform best with small, heavily folded files (so
- that the current fold is always quite small) since most modern
- programming languages support seperate compilation and include files.
-
- To support editing of flat files, though not necessarily as fast.
-
- To provide a minimal set of operations for everyday use. This is not an
- all singing, all dancing, play the national anthem at load time, editor.
-
- To write it so it could be easily ported to other machines. This
- includes making the configuration file ASCII so that it too can be
- easliy modified for each new machine.
- /*...e*/
- /*...sadding to AE:0:*/
- Probably the easiest way of "adding" functionality to AE is to write a small
- filter program and to bind a key like so :-
-
- key_bind "^R" "b_filter \"reform -\""
-
- The example uses a program reform to reformat a block. The program reform is
- simply a filter that reforms its standard input to its output. This paragraph
- itself was formatted using the very same key-binding.
-
- Other filters could supply 'line-drawing-mode', 'white space stripping'.
-
- Note that such filters could cause problems if you send folds through them.
- /*...e*/
- /*...smachines supported:0:*/
- At present there are versions for :-
-
- DOS on IBM-PC or hardware compatible.
- OS/2 on any OS/2 machine.
- Any generic UNIX machine (both Berkeley and SYS V).
- SunOS UNIX.
- Microsoft XENIX machines.
- Commodore Amiga (with a bug at present). *
-
- * Pending test compilation
-
- The editor is written in portable "C" and may easily be ported to new machines,
- provided they have suitable screen and keyboard control.
-
- The only things that change from version to version are available keys for
- binding, colours and filename conventions. In the case of filename conventions,
- to ensure portability of folded files, the filenames are converted to a
- suitable internal format for passing to the operating system.
-
- Machine specifics :-
-
-
- DOS
-
- Bindable keys are all special (non ASCII) keys on the keyboard except
- Ctrl-Break, Caps-Lock, Num-Lock, Scroll-Lock and Sys-Req. Filenames may be
- supplied in normal DOS notation but internally they are converted to lower
- case using forward slashes.
-
- Colours are made up of a foreground colour, a background colour, a flash and a
- brightness value. Values are :-
-
- Black 0 Flashing 1
- Blue 1 Static 0
- Green 2
- Cyan 3
- Red 4
- Magenta 5
- Yellow 6 Extra bright 1
- White 7 Low brightness 0
-
- The complete colour is calculated as :-
-
- foreground_colour +
- background_colour * 16 +
- brightness * 8 +
- flashing * 128
-
- eg: bright yellow on red is 6 + (4 * 16) + (1 * 8) + (0 * 128)
-
- The seasoned IBM-PC user will note that these are simply the screen colour
- attribute values. Also that on a black and white system, these colours will be
- completely different for the same values!
-
-
- OS/2
-
- Keys as DOS, colours as DOS.
-
-
- UNIX
-
- Bindable keys are limited to F1-F10 as available via their termcap(5) entries.
- The cursor pad should work provided your terminal is in the correct mode.
- Backslashes are automatically converted to slashes in filenames.
-
- There are 4 'colour' settings available on a UNIX terminal. Some or all of them
- may be supported, depending on the terminal. They are :-
-
- Normal 0
- Underline 1
- Standout 2 -- this is usually invert or bold
- Alternate 3 -- this could be an alternate character set
-
- It is important the user be aware of potential problems operating AE over
- a network or a pad system. Note that ^Q and ^S are usually used for flow
- control, and typing these can hang a connection. Also note that AE needs to
- know accurately, what sort of terminal it is on. If the TERMCAP is not set
- properly then AE will either refuse to load, or will put junk on the screen.
-
-
- SunOS UNIX
-
- As UNIX except that suntools(1) permitting, L1-L10 and R1-R15 are also
- bindable. Also note that the keys Left, Right, Up and Down no longer exist.
- You should use the relevant R keys. AE is not designed to be a full Sun
- Windows application. Judicious use of setkeys(1) is required to get access
- to the Sun Function Keys. When adding Andys Editor to the rootmenu then
- the following line should be used :-
-
- "Andys Editor" shelltool -Wl "Andys Editor" \
- -Wi \
- -WI /fullpath/ae.icon \
- -WL "" \
- /fullpath/ae
-
- 'fullpath' is the full path to the directory with AE stuff in it.
- 'ae.icon' is an icon generated by the Icon Editor for AE.
- The AE environment variable should be set :-
-
- setenv AE /fullpath
-
- It may also be necessary to set up the screen support on the Sun :-
-
- set term=sun
-
-
- XENIX
-
- All the Fn keys, Shift Fn keys, Ctrl Fn Keys, and Shift Ctrl keys. Alt key
- combinations are reserved for use by the XENIX multi-terminal system. The
- keypad is also accessible. Filenames as UNIX. Colours as UNIX.
-
-
- Amiga
-
- Bindable keys are the Fn keys, shift Fn keys, Arrow keys and shift arrow keys
- and most of the Alt keys. For some unexplained reason Alt e to Alt h and Alt j
- to Alt k are unaccessable. The Amiga version contains the bug that when disk
- access is requested, a pop-up box may appear asking the user if he wishes to
- abort. Somehow Intuition thinks a break has been requested. The workaround is
- simply to click on continue. The cause is unknown - I 'borrowed' my terminal
- code from Emacs and I can only assume they have the same problem. Backslashes
- in filename are converted to slashes internally.
-
- Colours on the Amiga are simply numbered from 0 to 3. They are whatever
- intuition currently has them set up as.
- /*...e*/
- /*...scopying this editor:0:*/
- Go to it!
-
- This editor may be freely distributed provided no money changes hands, that the
- software remains unchanged and all the files are distributed.
-
- The editor is supplied AS-IS, and is not guaranteed.
-
- Help stamp out software hoarding - Share and enjoy!
- /*...e*/
- /*...sAE compared to FE:0:*/
- FE was the first language configurable folding editor. It was written as my
- third year project at Southampton University.
-
- AE is written with the benefit of hindsight. As a result AE took much less time
- to write and has much cleaner logic than FE. AE is a complete rewrite of FE,
- only a few utility librarys are in common.
-
- AE allows fold tags and virtual fold tags to be as long as normal lines, ie:
- 240 characters. FE restricted tags and virtual fold tags to 80 characters. This
- means that FE may truncate long tags generated by AE.
-
- AE searches much faster than FE. It a recent test it was over twice as fast for
- a case-sensitive regular expression search!
-
- AE's screen handler can delay update of the screen. This means that during a
- global search and replace, the screen is not redrawn at each match as it was in
- FE. This makes it a little faster too.
-
- AE uses the yank-put paradigm for line/fold moving/copying.
-
- AE has a set of block markers for each fold. In FE there are only 2 markers for
- each buffer. This allows you to mark areas in each fold.
-
- AE is able to yank, put, delete and now undelete blocks and folds too. A
- deleted block or fold in FE is lost forever.
-
- AE has a deleted item stack that is able to hold characters, lines and folds.
- In FE only lines and characters could be put on the stack.
-
- AE does not use temporary files for operations such as block_fold. FE did and
- so could have been much slower.
-
- AE has an ASCII configuration file. This makes for easy porting of setup from
- machine to machine. FE used a machine dependant binary file.
-
- AE has bracket matching, FE does not. This is my concession to Lisp
- programmers!
-
- The DOS and OS/2 versions of AE determines the drive of each file and so does
- not make mistakes with filepath inheritance for nested virtual folds like FE.
-
- AE does not have the interactive key-binding layer. Instead the keys are
- configured in the ASCII configuration file.
-
- AE does not have a flatten operation. A seperate utility, FLATTEN, can be
- used to do this.
- /*...e*/
- /*...srevision history:0:*/
- Summary of last few revisions :-
-
- 15/1/89 Initial version (Alpha-Test).
- 29/1/89 Bugfixes for :-
- Position within a line.
- Filename language guessing.
- Block markers becoming invalid.
- Initial highlight on menu selection.
- Addition of :-
- -l flag.
- (, ), [ and ] as a temporary measure.
- 17/2/89 Bugfixes for :-
- Filename display being scrolled too far left.
- f_filter command on DOS version (stack size).
- w_left and w_right over line boundarys.
- Corrections to this file.
- 23/2/89 Bugfix for language delete.
- 27/2/89 Modifications to support compilation under Masscomp UNIX
- 8/3/89 Addition of :-
- b_ commands.
- cs_ commands.
- typeless undelete and put.
- Removal of :-
- (, ), [ and ] removed.
- f_ commands superseded by b_ commands.
- Made a better default configuration file.
- 10/3/89 Bugfix for version 8/3/89. 8/3/89 can crash.
- 20/3/89 Bugfix for insert char when column > 128
- 29/3/89 Changes to IBM-PC terminal handler to :-
- Not require saving of screen as a prerequisite
- to initialising the screen.
- Force mode 3 if not already in it.
- Use 50 lines if VGA present.
- 2/4/89 Bugfixes for :-
- The way ae reads AE= environment variable.
- Bad redraw after failed shell command.
- ^C visible on screen in version 29/3/89 only.
- 9/4/89 Bugfixes for :-
- Full parameters not passed to char_insert().
- Inappropriate tolower() of filenames on UNIX.
- Change to make files in root fold appear open ( >>> ).
- 26/4/89 Bugfixes for :-
- Long menu lists scrolling badly.
- Cursor always moving to left edge in b_delete.
- Filepath inheritance with \ at start.
- 19/5/89 Reduced memory overhead for each fold.
- Bugfix for searching for 0 length regular expressions.
- Addition of :-
- Menu selection, FE style.
- Ctrl-Break testing in search on DOS version.
- Changed configuration drastically, to fit with menus.
- 6/6/89 Bugfixes for :-
- No block with block_entab and block_detab.
- Ctrl-C detection by DOS.
- Tab-insertion and display of tab setting.
- 13/6/89 Changed language detection for block_read etc.
- 9/7/89 Made CR on end of fold insert a line.
- Modified block_mark_1/2 to set (not remove) markers.
- 23/7/89 Modified :-
- word_left to move to left edge of word.
- Now enters file if only one specified.
- Bugfix for bottom right corner of screen on DOS.
- Problem remains on UNIX/XENIX/Amiga for time being.
- 31/7/89 Bugfix for open folds off end of line.
- 1/9/89 Made initialisation continue after errors.
- 1/10/89 Corrections to this file.
- Changed the way return and tab are implemented.
- Accelerated forwards case of search_bracket.
- Substantial improvements to source code.
- Critical error handler added to Terminal Handler
- to eliminate Abort/Retry/Ignore? on DOS version.
- Better bad filename/directory/device detection.
- Addition of 102 key keyboard support.
- 1/11/89 Bugfixes for :-
- Alt-224.
- word_left behaving strangely - now consistent.
- Improvement to search done message.
- Addition of :-
- Please wait message for large copys.
- OS/2 version!
- Sticky cursor.
- $(ENV) vars in virtual fold names for DOS+OS/2.
- DOS+OS/2 versions determines .INI file from argv [0].
- Corrections to this file.
- Modification of default AE.INI file.
- 1/1/90 Bugfix for write error detection.
- Improvement for search_ scope detection.
- Reduction of memory requirements on reg_exp search.
- Addition of language definitions to default .INI file.
- 1/3/90 Addition of :-
- Ctrl-Break trapping on OS/2 version.
- Silly icon for OS/2 version.
- Extended regular expression support.
- Scrolling on string input.
- Change in word definition.
- Bugfix for reverse reg_expresion search and replace.
- 1/4/90 Modification for single file autoload.
- 1/7/90 Bugfixes for :-
- Detection of illegal reserved comments.
- Filepath inheritance on UNIX version.
- Change to OS/2 screen handler (TH) caused :-
- Runs using current screen size.
- -t now forces 25x80 mode.
- Allows min of 10, max of 60 lines.
- Bugfixes to UNIX screen handler (TH) caused :-
- Correctly deletes to end of line.
- Compiles correctly on a Sun.
- Delete key (0x7f) correctly detected.
- Edits files on a network drive on OS/2.
- Minor speed increases in :-
- Screen redraw (only noticable on UNIX)
- Fold manipulation.
- Proposed Addition of :-
- Envionment variable for command line opts.
- /*...e*/
- /*...e*/
-