A Programmer's Editor Shootout - Andy's Editor

From EDM2
Jump to: navigation, search

Andy's Editor 1/1/98 release for OS/2

Written by Andy Pitonyak

Introduction

Andy's Editor is a language configurable folding source code editor.

Packaging and Installation

The packaging consisted of a single zip file ae.zip. The zip file contains the following executables:

ae_dos.exe    runs on DOS, and in DOS boxes
ae_o16.exe    runs on 16-bit OS/2, 32-bit OS/2, and Windows NT/95
ae_dual.exe   runs on 16-bit OS/2, 32-bit OS/2, Windows NT/95 and DOS
ae_os2.exe    runs on 32-bit OS/2
ae_win.exe    runs on Windows NT/95
ae            RS/6000 AIX executable.

Rename ae_os2.exe to ae.exe and then copy ae.exe and ae.ini to a directory in the path.

A partial list of features follows:

  • 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.

Andy's editor is a folding editor. According to the help file included in ae.zip, "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."

The example included with the editor is given in PASCAL as:

      while not eof(f) do
  /*...secho out another character from the file:10:*/
  begin
    read(f, c);
    write(c)
  end
  /*...e*/

Which appears on the screen as

    while not eof(f) do
        ... echo out another character from the file

where the text "... echo out another character from the file" is shown in a different colour so that it stands out as a folded line. Highlighting this line and pressing F3 enters the fold, and you will be editing the text

  begin
    read(f, c);
    write(c)
  end

Note that you can also simply open the fold by pressing F1. This can greatly simplify navigating your code. You open your program and are presented with

... Includes
... Procedures
... Main body

You can then easily choose which section of code you would like to edit. A fold can be closed, as in the examples above where the folded text is not visible unless you enter the fold, virtual (open), where the folded text is always visible, or a fold can be a link to another file such as an included file. While performing a global search, you can choose to enter, or skip over, virtual folds.

Andy's editor comes configured to know about the languages top, ae, be, C, resource, module, make, assembler, Pascal, Modula2, Ada, Lisp, batch, config, shell, script, html, Java, nroff, latex, guide, SQL, i82750, semi, gofer, rt, and weave. This is important because fold information is embedded inside of comments. Although folds can be manually created, the easiest method is to highlight the appropriate text and then use menu commands to create an appropriate fold. I found creating and using folds easy to do. I did not create my own languages, but this is supported.

Andy's editor is a text mode only application and it does not offer syntax highlighting. Searching can be done on regular expressions and folds can be searched, or not. Searching can also be used to find matching brackets.

Tags can be inserted and removed from a line. This is used to move quickly through a file. These tags can be created based on another file. The output from a make will typically indicate the file and line number where an error occurs. There is a command which will create a tag where these errors occurred. You can then move from tag to tag to fix the errors.

I found a very unusual block command called block_filter. This command writes a marked block to a file, runs a command such as sort against this file, and then reads the file back in. You can write any filter that you desire. The only caveat is that if a fold is marked, the fold information is written as well. There is also a block translate command to translate letters.

Wrap up for Andy's Editor

Andy's editor is different from any other editor I have previously used. Although some features such as syntax highlight are missing, you owe it to yourself to spend an hour familiarizing yourself with the benefits of a folding editor; you may join the ranks of those who simply can not live without it.

Now For Something Completely Different

While I was looking at Andy's Editor, I opted to take a brief look at Andy's binary Folding Editor. The primary purpose of the Binary Folding Editor, is for structured browsing with minimal editing. To quote from the introductory text which accompanies this editor:

"This program is designed to take in a set of binary files, and with the aid of an initialization file, decode and display the definitions (structures or unions) within them. BE is particularly suited to displaying non-variable length definitions within the files. This makes examination of known file types easy, and allows rapid and reliable navigation of memory dumps."

The primary feature list is as follows:

  • Decode definitions in (multiple) files.
  • Use either endian multibyte values.
  • Handle signed or unsigned numeric values.
  • Display field as ASCII, binary, EBCDIC, decimal, hex, octal, symbol table lookup, or mapping table (enumerations and or bit-flags).
  • Fields can be numeric, buffers, or nested definitions.
  • Selectable level of detail of display.
  • Can expand sub-definitions or follow absolute or relative pointers to other definitions.
  • Automatic linked-list following.
  • Ability to write/append current view of data to a text file.
  • Searching over data on display, optionally using Extended Regular Expressions.
  • Include/exclude and sort lines features.
  • Refresh data and auto-refresh data.
  • Ability to edit data not actually in a file, but supplied by a (possibly user written) BE memory extension module.
  • Tagging of lines on display, and rapid stepping between tags.
  • Ability to view a text file.
  • Ability to bring up online help.
  • Ability to bring up initialization file for user review.
  • Shelling out to the operating system.
  • Multiple sessions, with copying between sessions.
  • Address sliding feature.
  • "Power address sliding feature." This searches sequentially through memory or files trying to match known patterns.
  • Very versatile display of addresses.
  • ARM long-jump decoding of symbolic code addresses.
  • Ability to use a symbol table file, so that addresses may be displayed symbol+offset, and so the user may refer to symbolic addresses in numeric expressions.
  • User extendable initialization file (define your own types).
  • Initialization file influenced via command line options.
  • A non-interactive mode, where BE displays data to stdout and quits.
  • Support for a plug-in disassembler.
  • Support for 32-bit OS/2, Windows (both NT and 95), AIX and DOS (via a DOS extender).

This is very useful for poking through binary files. The included initialization file already knows about the following file types:

  • Windows or OS/2 bitmap.
  • Dr.Halo bitmap.
  • CompuServe GIF bitmap.
  • Amiga ILBM bitmap.
  • JFIF JPEG bitmap.
  • IBM KIPS bitmap.
  • Microsoft Paint bitmap.
  • Atari ST, NEOchrome bitmap.
  • Dr.Halo palette.
  • ZSoft PCX bitmap.
  • Portable Network Graphics bitmap.
  • IBM Page Segment.
  • Sun Raster file.
  • Utah Raster Toolkit bitmap.
  • Silicon Graphics bitmap.
  • RiscOS Sprite bitmap.
  • Targa/Vista bitmap.
  • Aldus/Microsoft TIFF.
  • IBM M-Motion bitmap.
  • Kodak YCC printer bitmap.
  • X Windows 10 window dump.
  • X Windows 11 window dump.
  • Atari ST, NEOchrome Animation Format.
  • Atari ST, Animatic File Format.
  • Atari ST, Cyber Paint Sequence Format.
  • IBM OS/2 Resource file.
  • Microsoft RIFF chunked file.
  • RT and MR 3D texture format.
  • ZIP compressed archive file.

If you need to look through formatted binary files, check this out as well.

Information

Andy's editor has been placed into the public domain and as such is freeware. It is recommended that the latest version be obtained from the author's home page, listed below.

E-mail : nyangau@interalpha.co.uk
Home page : http://www.nyangau.org/ae/ae.htm
(IBM) : http://grob.ssd.hursley.ibm.com