# $Id: TODO,v 1.498 2000/12/21 02:20:04 zeller Exp $ -*- Text -*-
# The DDD projects.

This is a list of frequently suggested DDD features, which should be
realized in some future DDD release.  If you want to realize one or
more of these projects, please ask us (ddd@gnu.org) whether
there are already people working on that project.  Similar, if you
have a project idea, be sure to send it to us such that we may realize
it (or include it in this list :-)

Projects marked with an `*' are scheduled for the next DDD release.
Volunteers for these and other projects are welcome!

017 Have the graph editor scroll automatically when the pointer drags
    something out of the visible part of the window.

021 In the manual index, use special fonts for bold keywords.
    [Requires Motif 2.0 and CMText.]

025 Have auto-unfolding for recursive data structures.  Dereferencing
    a pointer P * would automatically select all P * members in the
    referenced structure.

026 Have optional abstraction levels, hiding implementation details.
    Every data type would be assigned an individual VSL function
    determining its representation.

031 Have a three-dimensional data display (using red/green glasses) :-)

037 Group dereference.  If multiple pointers are selected,
    dereference them all.

070 Matthias Kurz <mk@baerlap.north.de> suggests an option to set
    debuggee arguments when invoking DDD.  A simple way of
    implementing that would be: if more than one argument is given,
    or if the 1st argument is neither a core file nor a process ID,
    use the remaining arguments as debugee execution arguments.  [In
    DDD, this is difficult to implement while conserving remote mode.
    This should be an extension to GDB, not to DDD.  - AZ]

071 Matthias Kurz <mk@baerlap.north.de> suggests code annotations
    (i.e. comments and graphics that are associated with certain
    variable/function names in the code).

083 Include graphplace (or other graph layout) support.

085 Include xDuel support.  See `http://www.math.tau.ac.il/~frangy/'
    for details.

110 N. Dan Zou <zou@hooked.net> suggests a way to display the class
    structure of an existing program graphically.  [Should be
    implemented as follows: use the `ptype' output to display types
    graphically; dereference type names as required.  -AZ]

115 Have links from help texts to appropriate sections of the DDD manual.

126 `shorten' may need some improvements (count `(' and `)' occurrences, etc.)

129 Detect self-modifying code.

131 Include the Athena Panner widget in the DDD distribution, such
    that Athena/Motif conflicts are removed.

153 Include assembler support for Sun DBX (they have a `dis' command).

154 Allow users to specify geometries for dialog windows.

155 Allow users to specify start-up commands that open specific
    windows (for instance, open-backtrace(X, Y) would open the
    backtrace window at X, Y; open-backtrace() would open it in some
    default position).  See also #154, above.

161 Daniel Lyddy <sprocket27@earthlink.net> suggests: Would it be
    feasible to allow the user to select multiple commands in the
    "Command History" window?  One could hold down the "Shift" key
    while selecting a contiguous block of commands and the "Control"
    key to select non-contiguous commands, a la Windoze File Manager.

164 Matthias Kurz <mk@baerlap.north.de> suggests:
    - Selection: Double click to select words - moving the mouse then
      expands on the basis of words
    - Attach base as attributes to variables, fields of
      structs/unions; load/save
    - recognize URLs in source window; follow on click (call external
      browser)

171 Use double-buffering to display the graph.  Even less flickering.

176 Theodore Papadopoulo <papadop@sophia.inria.fr> wants the
    capability of "freezing" some displayed values. By this, I mean
    that I want to have some displayed data to remain displayed
    (presumably as a copy?) as it is at the moment the user asks for
    this freezing.  This would give to the user a simple way of
    comparing the state of the program in different (but related)
    functions, in different calls of a same function or in different
    runs of the program with different (but again related)
    parameters. And as far as I can see it, this is purely some
    interface stuff so does not need for any support from the
    debugger.

177 Create menu children in the background, using a work procedure.

183 Have a way to re-dereference until no more changes occur.

193 Have a way to unfold trees and graphs.  For instance, `Display
    *()' applied to a struct could dereference all contained pointers
    (unless already dereferenced).

197 Implement a fast lookup table for assembler locations.  Current
    linear search may be too slow for large assembly listings.

199 Use X11R6 XtSignalNotify for Xt-safe signal handling.

206 `manage_and_raise' should deiconify dialogs.

215 Raoul Beauduin <beauduin@ori.u-tokyo.ac.jp> suggests to change
    the green arrow in the source window into a green bar. Makes it
    easier to follow the line.
    [You can turn off glyphs and get a black bar.  -AZ]

221 Have a DDD USENET news group, such as `comp.debuggers[.ddd]',
    instead of a mailing list.  [This should be done when there are
    more than 1000 subscribers, or when the number of messages/day is
    greater than 50.]

232 Have an `infinite' assembler window that extends in both
    directions as needed.

233 Have a `bookmarks' menu like the `Highlight' menu in tkman.

241 Include a mail reader.  See also `feeping creaturism'.

242 Make programs dump core by forking and killing them.

249 `Rotate' should be enabled as soon as there is exactly one child
    that can be rotated.

252 Print via the X Printer extension (-lXp).

254 If an XEmacs is running, use its frame for displaying the text.

257 Show whether a conditional jump (breakpoint?) will be taken or not.

266 Include TAGS support.

273 JORGE HERNANDO <hernando@cnea.edu.ar> wants
    1)  when an array is marked for display, how about a popup where one
    writes the indexes ranges?, e.g. 5-8,* in order to show 
    array(i,j), 5<=i<=8, the whole range of j.

    [You can do this via artificial arrays.]

    Also, with multidimensional arrays is easy to be confused about
    which value we are looking at. Would it be possible to show
    (together with the array value) the indexes values (in another
    font, size, color, etc)?

    [Clicking on any value will tell you the location.]

277 Allow in-place editing.  There is already a simple `sourceEditing'
    resource, but we'd have to do a lot more to realize decent editing
    capabilities.

287 Have the DDD windows be resized in font increments.

288 Have @ifjdb...@else...@endif constructs in help texts.

289 Enable drop actions.  Dropping an action on the text causes the
    action to perform on the object (or vice versa?)

294 Have a way to expand `VALUE <Nx>' manually.

304 If the source window size has changed (via panes?), recenter the
    command tool.

305 Have all icons parsed from one big XPM file (use a subimage for
    each icon), such that the icon creation time is minimized.

308 Here's a list of GDB concepts that are not yet covered by the DDD GUI:
    * Tracepoints: trace, collect, ...  Is there any doc for that?
    * Overlays: overlay...  Is there any doc for that?
    * Symbol files: symbol-file, add-shared-symbol-file, sharedlibrary.
    * Exception breakpoints: catch.
    * Conditions: if, while.
    * Remote debugging: remote, tfind.
    * Return from frame: return.
    * Shell command: shell.
    * File command options: `-readnow' and `-mapped'

316 Bill Bumgarner <bbum@codefab.com> suggests Objective-C
    improvements for use with Foundation from Apple:

    (1) For data of type objc_object * (a pointer to an object), could
        ddd figure out what type of object the datum is pointing to
        and display its class?

    (2) Under Foundation, every object responds to the method
        -description and produces a description of itself-- this can
        range from the value of an NSNumber to the contents of an
        NSArray (and can be long).  It would be tremendously useful
        for ddd to take advantage of this.

    (3) gdb with objective-c has a print-object or po command.  It
        would be great if that appeared on the right-click menu when
        clicking on a variable.

318 To manipulate bitwise structures, Fritjof Flechsig
    <flechsig@itp.uni-hannover.de> suggests a pop-up with some
    check-boxes where each box is one bit.

321 Allow `()' expansion in auto-commands.

325 Allow `snapshots' of the currently displayed data.  Just create
    `frozen' copies of displays that simply display the original data
    (graph display `a = 16`) and are no longer updated.  See also 176.

326 Mihai Budiu <mihaib@gs41.sp.cs.cmu.edu> reports:
    It would be nice if you had a short-cut to display 'this' when
    debugging C++; I found no easy way.
    [graph display `print *this` would help.  -AZ]

329 Have a Display Editor shortcut from the data popup menu.

334 When looking at a C++ identifier X, try `this->X' if `X' is not
    found.  Better yet, try `CLASS::X' if we're in a CLASS member or
    try `NAMESPACE::X' if we're using the namespace X.

340 Have `Display Array Slice', a friendly interface to the `@' operator.

342 Add a menu bar for the execution window (via swallowing)

345 Have automatic unfolding of data structures using `Layout by
    Example' - that is, lay out the first few elements and have this
    operation repeated until a fix point is reached.  
    See also 025, 183, and 193.

346 If a new display obscures an existing display, use spring-embedded
    layout to resolve conflicts.

349 Access Java `.jar' class archives.

350 Harri Pasanen <harri@trema.com> suggests incremental search for
    the source window.  (Could this be bound to Ctrl+B/Ctrl+F?)

354 In Windows, compare file names regardless of case.

355 Realize alias detection in languages without address operators.
    This may be done by traversing all values; for every pointer
    found, assign its value as address to the referenced display.

356 Have a `Default' button in preferences, restoring factory
    settings.

358 Delay `plot' commands until Gnuplot is done sending plot data.

361 Zdenek Sekera <zs@sgi.com> suggests to have the cursor jump to
    some specific location (such as the end of main()) when the
    program has terminated.

362 Zdenek Sekera <zs@sgi.com> wants an option to delete arguments
    from the argument history.

366 Support the ISO C++ istringstream, ostringstream, etc. classes.

367 How can we display plots of struct { double re, im; } arrays?
    Support plotting arrays of structs as well as plotting complex
    values (Check `complex' in ISO C++ and COMPLEX in FORTRAN).

370 Make sure the argument window does not grow too wide.

371 Add command recording for debuggers other than GDB.

372 Add user-defined commands for debuggers other than GDB.

373 Allow `--display' as alias for `-display'.

375 In the new DDD manual, have an image map for the DDD windows.

376 In DBX (at least on AIX), `cont 0' continues with no signal.
    There is also `cont sig 0' on SunOS DBX.

377 Add tiny `+'/`-' buttons to structures to ease folding and
    unfolding.

378 Allow disassembling always N bytes, regardless of function
    borders. (Useful for functions with ASM labels).

379 If `main' has no source, show the first source found with
    `File -> Open Source'.

380 Add special Mocka hacks to access global data.

382 Support GDB/MI - a machine oriented interface to GDB.  See
    `http://sourceware.cygnus.com/gdb/onlinedocs/gdbmi_toc.html'.

384 Finish themes support:
    * Allow for interaction between VSL and DDD.
    * Document it all.

387 (Insert new project ideas here)
