From: Bill Dubuque

Subject: future of Editi [was: Any port of the ACLW Editi interface to Gnu Emacs 19.34.1?]

Date: 1997-4-2 15:54

: Date: Wed, 02 Apr 1997 01:21:34 -0600
: From: Dale Arntson <uchicago.edu at d-arntson>
: 
: Has anyone ported the ACLW Editi for Win-Emacs to Gnu Emacs 19.34.1? 
: I find Win-Emacs 1.5 to be too outdated and too unstable on NT 4.0 to use.

This is a good opportunity to discuss future plans for Editi (vs. FI, 
ilisp, etc), but first let me address your specific concerns:

 Editi is not yet ported to FSF Emacs, although I have discussed this 
 with Franz and they may well fund such work in the near future.

 Many ACLW users are using Win-Emacs + Editi under NT 4.0. We are not aware
 of any problems with stability. Please report any problems you encounter
 to <pearlsoft.com at tech> (or <Franz.com at Editi> for Editi specific problems).
 [Version 1.35 of Win-Emacs was slow and unstable under NT, but the
 latest version 1.5 avoids such problems since it is a true Win32s app].

 Win-Emacs is indeed not the latest version of XEmacs, but this shouldn't
 affect its use as an IDE for Lisp software development (i.e. Editi usage).
 If there are particular features you find missing, incompatible, etc. 
 please feel free to send e-mail to the above addresses so your request
 may be considered for the next release of Win-Emacs and/or Editi.

Note that version 1.3 of Editi will soon be superseded by version 3.0,
which is currently in beta test. Version 3.0 offers much new functionality
versus version 1.3 (I've appended below an extract from the Editi 
changes.txt file). Anyone still using the toy ACL resident editor is now
underpowered and will be very seriously underpowered after the release of
Editi version 4.0 -- which will be a next generation interface.

As planned, version 4.0 of Editi will not only run on FSF Emacs, but
will be the "Grand Unified Emacs <-> Lisp Interface", subsuming all
functionality of existing interfaces (Franz FI, GNU ilisp, etc).
Additionally it will include many powerful next-generation features
that far surpass any of the older Emacs <-> Lisp interfaces.

Just when version 4.0 appears will depend upon when I can talk Franz into 
funding the work. If you'd like to see this happen soon then be sure to 
communicate your opinions to Franz so that they may correctly assess
the needs of the Allegro Lisp user community.

By the way, per Franz, <cs.berkeley.edu at allegro-cl> is now the recommended 
forum for discussion of Editi. Use <franz.com at editi> for bug-reports.

-Bill Dubuque  (author of Editi)

Changes in Editi version 3.0 (vs. version 1.3)
=============================================
 
 o Symbol completion is available in Lisp Mode buffers 

     Tab instantly completes the symbol at point using documented ACL
     symbols and any tags completion table. Another Tab will enter
     tags-apropos, and a Tab from tags-apropos will exit back to the
     original state. Sh-Tab in Lisp Mode does a tags-apropos 'grep',
     i.e. finds matches that begin anywhere within a tags symbol instead
     of just those matches that begin at the start of a symbol (as does
     Tab completion). Sh-Tab within a tags-apropos buffer toggles
     between the two types of matching: start vs. substring.
     See section [14] of the README for further detail.

     ACL WinHelp topics also enjoy analogous full completion (cf. below).

 o Changes Mode: tracking changes not yet evaluated in ACL

     Changes Mode is a new minor mode that keeps track of all changed
     top-level forms that have not yet been evaluated in the external 
     ACL process. Use 'M-x changes-mode' to enter/exit changes mode in 
     a Lisp Mode buffer.  Use C-8 C-E to eval in ACL all changed forms
     in the current buffer.  Use C-c C-p and C-c C-n to go to the prior
     and next changed form, and C-c C-u to change the state of a form from 
     changed to unchanged. See Section 15 of the README for further detail.

 o ACL WinHelp is now available via M-D, with completion over topics

     Full completion is available over all help topics when typing
     in the help topic in the minibuffer. Sh-Tab switches from a
     start-of-word match to a substring match anywhere (grep); 
     Tab switches back. E.g. Try 'M-1 M-D get? Sh-Tab Tab'. You
     must have an ACL process loaded to use acl-winhelp (M-D).

     The completions listing generated by M-D functions as a menu:
     Button2 browses: shows the help topic without exiting this M-D command.
     Button1 jumps: does the same, but instead exits the M-D command

     For example, to browse all topics containing the string 'vector' type:
     C-u M-D vector ? Shift-TAB,  then click Button2 on various topics.

     M-D parses format directives: try typing M-D at various points while
     you are at various directives within format strings. The precise 
     manual page for each format directive will be located.

 o Ediff: visual interface to 'diff', quickly browse source changes

     Ediff, a visual interface to 'diff', has been ported to Editi.
     See the file "ediff.txt" for documentation. Instead of the
     command 'M-x diff' use 'M-x ediff' for spiffy visual diff's.

     Both 'ediff' and 'diff' have been extended to diff against
     autosave or backup files if invoked with no prefix arg: if 
     invoked from a modified buffer, it is autosaved and compared against
     the last saved version, thus showing the changes since the last save. 
     If the buffer is not modified, and there is a backup from this session,
     then the latest save is compared against the latest backup;
     otherwise you are prompted for the filenames. Specifying a prefix
     arg always results in a prompt for the filenames to diff.  Thus
     to see what changes you've made to a file you are editing simply
     type 'M-x ediff RET', or 'M-x diff RET'.

 o New ACL Tools Commands

 Trace Commands
  arg > +1       C-u C-T  build trace call to function at point (in minibuf)
  arg = +1           C-T  trace function at point
  arg =  0       C-0 C-T  display list of traced functions
  arg = -1       C-- C-T  untrace function at point
  arg < -1      C--9 C-T  build untrace call (default: all traced functions)
  repeated       C-T C-T  untrace function at point

 Breakpoint Commands
  arg > +1       C-u C-B  build breakpoint call to function at point
  arg = +1           C-B  breakpoint function at point
  arg =  0       C-0 C-B  display list of breakpointed functions
  arg = -1       C-- C-B  unbreakpoint function at point
  arg < -1      C--9 C-B  build unbreakpoint call (all breakpointed functions)
  repeated       C-B C-B  unbreakpoint function at point

 Profile Commands
  arg > +1       C-u C-P  build profile call to function at point
  arg = +1           C-P  profile function at point
  arg =  0       C-0 C-P  display list of profiled functions
  arg = -1       C-- C-P  unprofile function at point
  arg < -1      C--9 C-P  build unprofile call (all profiled functions)
  repeated       C-P C-P  unprofile function at point

 Results/Reset Commands
  arg > +1       C-u C-R  build profile-results call to all profiled functions
  arg = +1           C-R  profile-results of function at point
  arg =  0       C-0 C-R  display list of traced,profiled,break'ed functions
  arg = -1       C-- C-R  profile-reset function at point
  arg < -1      C--9 C-R  build profile-reset call to all profiled functions

 Class Browsing

  arg = none         C-C  display class outline of symbol at point
  arg =   1      C-1 C-C  browse superclasses of symbol at point
  arg =  -1      C-- C-C  browse   subclasses of symbol at point
  arg =   2      C-2 C-C  browse class methods of symbol at point

  arg = C-u      C-u C-C  build display class outline call (in minibuffer)
  arg =  11     C-11 C-C  build browse superclasses call
  arg = -11    C--11 C-C  build browse subclasses call
  arg =  22     C-22 C-C  build call to browse class methods

 Generic Function Browsing Commands
  arg = none         C-F  browse generic function of symbol at point
  arg = any      C-u C-F  build call to browse generic function

 o ACL Evaluation and Compilation Command Enhancements

     ACL eval and compile commands now display output and results in
     a transient popup (or in the minibuffer if a single line). To
     suppress this display supply a negative prefix-arg, e.g. C-- C-E.
     To later review the prior output, toggle its display via C-z.

     All ACL eval and compile commands now take a prefix argument
     specifying the object to evaluate. If the region is inactive,
     then the prefix arg selects the evaluation object as follows:

       arg none  the top-level form containing point, e.g. C-E
       arg C-u   prompt and read an sexp from minibuffer, e.g. C-u C-E
       arg = 0,  the symbol at point, e.g. C-0 C-E
       arg = 1,  the sexp containing point (or just before/after point)
       arg = 4,  the top-level form containing point (same as 'arg none')
       arg = 8,  all changed forms in buffer (cf. Changes Mode above) 
       arg = 16, the entire buffer, e.g. C-u C-u C-E, or C-16 C-E

     All the ACL eval/compile commands have been unified. In particular,
     the GNU eval/compile commands (C-c C-e, C-c C-c etc.) have been 
     generalized to accept a region if active, else the current defun 
     (top-level form), i.e. they're now bound to acl-eval-region-or-defun
     and acl-compile-region-or-defun respectively, the same as C-E. All
     accept prefix arguments as described just above.

     New command acl-schedule-next-command-in-background, alias &acl,
     bound to C-c C-&, schedules next ACL command in the background,
     which allows subsequent commands to interrupt it, vs. blocking.
     Use this command before lengthy ACL commands (e.g. compile-file)
     if you desire to execute other ACL commands in the interim.

     C-RET can be typed *within* a top-level form and still behaves 
     correctly, evaluating and inserting the result. 'C-x u' undoes
     this, removing the output and bringing you back to the original
     point within the top-level form you evaluated. You can use this
     to quickly evaluate a form, for various values of sub-expressions.

     C-C is no longer a compile command; instead use C-E or C-c C-e or 
     M-C-x (or C-c C-c or C-c C-x if editi-compile-via-compile-file is 
     true and (rarely) you really desire compilation vs. evaluation;
     see the 'Technical Note' in README section [1] for more on this).

 o Editi now has a Menubar exposing much of its functionality.

 o Tags Occur Enhancements

     C-c C-c now jumps to the source buffer match in full-screen mode.

     M-, will resume to the tags-occur buffer, like any tags command.

     Sh-button1 on a highlighted occur match in a source buffer takes
     you back to the tags-occur buffer, just like M-,

     C-l C-l toggles match highlighting from within source buffers; 
     Highlights are removed upon occur exit (C-RET, Tab or kill-buffer).

     Occur movement up/down functions now traverse a complete visible
     chunk per command, allowing more rapid traversal of matches.

     Occur output is now fontified.

     The default argument is now the symbol at point, just like M-.

 o Tags Apropos Enhancements

     Matches are now highlighted in the 'occur-source face.

     M-, will resume to the tags-apropos buffer, like any tags command.

     New commands: '_' or '-' toggle on/off use of the underline
     separator in favor of highlighting.  The '\' command toggles 
     on/off whether long lines are truncated or wrapped at end of line.

     Auto-tags now precisely locates auto-generated CLOS accessor def's,
     i.e. M-. and selections from tags completion menus will bring you
     to the precise definition line of the method within the defclass.

 o Popup Window Enhancements

     toggle-acl-popup-window has been moved from C-* to C-z, and the
     prior command on C-z, iconify-emacs, has been moved to C-x C-z.

     Clicking on the modeline of a transient popup window pins it up.

     Transient popups will stay up during window traversal and
     scrolling functions; isearch mode is also preserved by scrolling
     functions, e.g. you can type C-M-v to scroll the other or next
     window up without exiting isearch or a transient popup window.

     If after executing an external ACL command such as acl-apropos,
     you tire of waiting for the result and begin executing other
     commands, when the ACL result is received by Emacs, the popup
     window displaying it will no longer be transient, i.e. it will
     remain shown until explicitly removed via C-z.

 o Miscellaneous Enhancements

     New command reindent-lisp (from ilisp) is now on M-q in lisp-mode.
     This command will reindent the current top-level form, filling 
     comments, and closing parentheses if needed.

     C-/ = quick-symbol-info, the same as in ACL.

     C-' = popup-mode-menu, just like Button3.

     Button3 on a modeline now has its own map and menu, mode-line-menu
     and mode-line map.

     DDE mode is no longer incorrectly forced on if it has been disabled 
     via the 'M-x editi-dde-mode' command.

======== end of excerpt from Editi 3.0 changes.txt =======