[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

outlining and tags tables [was: Re: Dylan Environment for MCL]



  From: svspire@somnet.sandia.gov (Shannon V Spires)
  Date: 24 Mar 1995 12:29:01 -0500

  > Well, I think it would involve more than you suspect.  The Dylan
  > development environment is project based and keeps a database...
  > ... and MCL isn't project based.

  We don't need the full Dylan project/database metaphor...at least not yet.
  I think if we just had a fred-window subtype that showed those outline
  views of code files with twister triangles beside each definition it would
  be fine right now. The file types wouldn't have to change; marks for
  definitions, as well as their twist-state, could be stored in the resource
  fork. It wouldn't need to be very dynamic, any more than 'List
  Definitions' already is. The user could do a rescan to reparse the file
  and generate the little triangles; any that were already present would
  retain their existing twist-state. One level of outlining would do; we
  could do without multilevel Finder-style outlining for the moment... 

I have implemented something along these lines for GNU Emacs.
I view the etags tags table as an outline view of topl-level
definitions in a project. To keep the view updated, I defined
a new minor mode called 'auto-tags' that dynamically updates
the tags table as source buffer is modified (using buffer
change functions). Also, for finding definitions, I allow full 
completion over all the definition lines in the tags table.
For example, you could type 'M-. (defmethod foo TAB' and
this would pop-up a menu buffer of all methods defined on the
generic function foo. You can then quickly traverse all
such methods.

Currently this code is incorporated in Editi, the Franz 
ACL/Windows interface to Win-Emacs (= Lucid Emacs 19.6
for MS-Windows, now XEmacs). When I have some spare time,
I'll port it to the latest versions of Emacs and XEmacs.
Perhaps it might be possible to incorporate it into
Fred if it uses tags tables and is similar to GNU Emacs.

I don't use MCL or the Mac so I don't know how twister 
outlining works. Does it incorporate any novelties 
above the standard outline-mode in GNU Emacs?

-Bill