  Oh Most Grandiose and Majestic Emacs, please be in -*- outline -*- mode!

* [BUG] Phylogenetic browsing appears to be broken. Fixed: 2002-10-27.

   Do 'ale demo-data/demo.gb demo-data/demo.phylo', then try to browse
   the tree.  See how nothing works.  For example, Mouse-1 on any
   organism gets: "wrong number of args to `select-range' request".

* [BUG] Can't insert a sequence at the end of the alignment.

  As Jim points out, in an alignment of N sequences, there are N+1
  places where you might want to put a new sequence.

* [BUG] `gene-do-window-sync' call maybe fails silently?

  The `gene-do-window-sync' call at the end of `gene-process-args' is
  maybe failing silently in an error-protection wrapper?

* [FEATURE] undo should notice search-match highlights and undo them too.

  Means we need to have a new form of undo record for those overlays.

* [TASK] remove needless `confirm' tmp var able

  The `confirm' tmp var in the `let' in gene-io-save-sequences-as is
  pointless; just put the confirmation code in the body of the let.

* [BUG] Reverse Display doesn't work *quite* as advertised.

  Try reversing GDE colors to see what I mean.

* [HUH?] flipcase ops can be undone by calling flipcase again.  

  This is so cute it's probably worth going back and changing them.

* [BUG] save atomically

  Jim's point about atomicity in saving: we should write to the tmp
  file and then mv it, not mv the real file and then write to it,
  restoring it only if there's an error.

* [HUH?] (gene-menu-popup-cb-all-remove-menu): ought to display clipboard
  contents somehow... 


* [TASK] we can use `intern-soft' and `unintern' now
  
  When 19.29 comes out, we can use `intern-soft' and `unintern' to
  determine and set whether sequences are present in the alignment or
  not.  See especially how we have to t-prop search to set the tmp var
  `already-here' in gene-io.el:`gene-setup-plists'.

  But note that Emacs 21 also has a hash-table type.

* [BUG] online manual loses place if you hide it and later come back

  Wouldn't it be nice if the online manual preserved your place when
  you hid it?  Right now, <HIDE> means you'll jump back to the Top
  node if you look at the manual again.

* [TASK] decide how to record format facts

  We don't have a variable `gene-io-current-source-format' right now,
  because the code seems to assume that it can deduce formats.  However,
  note that `gene-io-set-source-file' func *takes* a format arg.  Maybe
  we should decide whether we want to always deduce the format, or
  record it when we set the source file.

* [BUG] bug from Will Fischer, apparently hard to reproduce

  From: wfischer@walrus.bio.indiana.edu (Will Fischer)
  To: guppy-bug@cyclic.com
  Date: Fri, 17 Mar 1995 13:44:28 -0500
  Guppy version: 0.1.120 on walrus 

  Okay, a real bug this time -- after I had an allignment open,
  (~20 sequences, most of them ~20 nt long, 3 of them ~700 nt)
  I read in a new sequence, then saved-all-to-one-file, and the
  new sequence got broken up into 2 sequences (each with the same
  name) of 480 nt each (the second one was padded with ~s in the
  genbank output file (the input file in this case had been a genbank-format
  file created by GDE).
  
  This also happened earlier, under slightly different circumstances that
  I unfortunately cannot recall in detail -- but I think that in both cases,
  the sequences that were affected were selected at the time that the
  file was saved -- I'll check this out now.

  [ Note: unable to duplicate.  -Karl ]

* [HUH?] complementifying assumes RNA (i.e.: "u") not DNA (i.e.: "t").

  ?

* [TASK] use `gene-organism-seq-data'

  Would be nice if everyone used `gene-organism-seq-data', now that it
  exists...

* [HUH?] Hmmm.  Inserting chars in or before a line of a selection doesn't
  behave the same way as sliding them, because the former uses
  `insert-char', while the latter uses `gene-shift-region-leave-properties'.
  Is this desireable?  Maybe; think about it.


* [HUH?]The watch doesnt go away after 'insert sequences' and maybe
  other operations (must move pointer out into background to see
  it).


* [TASK] File I/O could be sped up a lot, now that we have simplified its
  semantics.  For example, there's no need to gather up lists of
  sequences (gene-io-compile-sequence-files) anymore, because all the
  sequences go to the same file.  Just write ids, seqs, and anns to
  temp files and call gene-io-coerce-from-tabl, and you're essentially
  done.  Annotations will need to be ordered correctly, though.


* [BUG] clear menu bar only in gene buffers, not in all of Emacs.

* [TASK] The Accumulated Error code should be rethought.

  Why keep two data structures (list and buffer), when one (buffer) is
  sufficient to hold all the errors messages?

  Some errors generate real lisp errors, some are problems that won't
  signal an error.  Find some more examples, generalize.  Write a
  condition-case clone that will handle certain errors in a custom
  way, and simply pass on (i.e.: signal) others.  The important thing
  is that those errors which need to be fatal remain fatal, and those
  which don't need to be are simply displayed to the user in some
  easily-noticeable way.

  Right now, the "*Non-Fatal Errors*" frame that pops up on startup is
  usually covered by the alignment frame which pops up after it!
  Timing is kinda crucial here.

* [FEATURE] phylo browser feature request from Niels

  From: Niels Larsen <niels@darwin.life.uiuc.edu>
  To: kfogel@floss.life.uiuc.edu
  Date: Thu, 2 Mar 1995 14:23:42 -0600

  should the phylo-browser help be accessible in the 
  phylo-browser?  think so.  Can info be asked to jumb
  to the place in the manual with browser description?


* (Niels) Question:  With gdbm file and everything selected in 
  phylo browser, it says 'Placing data...' for maybe 40-80
  seconds.  Is that expected?  what happens during that time?


* (Niels) Forgot to mention, I think there should be more keyboard 
  equivalents listed in menus, like for bringing up other frames etc


* need keyboard equivalents to the items in the views and searches
  menus, maybe more places.  This is so its easy to rebind to a 
  one-press function key or something.


* (Niels) Change of fonts in the settings menu makes Number, Group,
  etc -frame vary wildly in size.  (Another question is, should a 
  font change in one frame affect other frames?).  A friend of 
  mine wanted better control over fonts and sizes, and I told him 
  that C-Mouse-3 still works, which lists all fonts available; and
  changing fonts that way only affects current frame.  Comments?


* Should subst-char be case-insensitive?  Talk to Niels.


* `gene-monitor-position', a function for .ale files which takes
  &rest IDs (strings) and monitors them by default when pos-mon is on.


* posmon buffer should grow & shrink according to # of sequences.


* Why does gene-seq-display-column-stats-internal need  the length
  passed to it?  It can determine that for itself.


* Make a goto-same-char-in-this-column command.


* Some Phylo Browser stuff from Niels:

  Wouldnt it be reasonable to put up a wrist-watch symbol where
  predictably slow things may happen?  

  When this works correctly, and is documented, then we have 0.1 and
  it should be given to 5-10 people for use.  

  MS-Word has got a lot better since I saw it last: See v 6.0 for PC
  which is a bit ahead of latest Mac version (5.1).  Try the outline
  view, very convenient (notice the 1,2,3,4,5.. buttons, which set the
  level you want to look at).  I especially like their way of moving
  things around, it might also inspire you, what that time comes (we
  once agreed there should be some simple drag/drop interface, so
  curator can change p-list from editor).  Convenience will save us $:
  Short learning how to use, i.e. newly hired people quickly get
  productive.
  
  Question:  At our last meeting I think you mentioned that Emacs has 
  mechanism for displaying only certain lines.  Were you thinking of the
  ^J --> ^M substitution, or?  How well does it work?  is this a
  feasible way to get stronger connection between phylo frame and
  alignment?  (so show and hide groups content affects alignment, say)
  I dont think it is really important to have it that way, it seems
  possible to work fine without.  Just curious. 

  Pooo - quite some writing again..    bye.  


* if recording undo's takes major proportions of time during common
  editing, then I would propose to have a settings option to switch it
  off (assuming thats not hard to do). 


* In gdbm storage, couldnt there be a .ale which stores all settings
  and things one would like to preserve between sessions?  groups should
  be re-created at startup, as well as selections of organisms made by 
  the phylo-browser.  Jim, couldnt there be a panel (maybe in the style
  of Karls group list) where the phylo index frame (or phylo browser, 
  what to call it) presents choices between save sequence sets to bring 
  into the editor?  One could then build (I mean RDP could pre-build and
  release) interesting subsets of sequences.  If gdbm on command line, 
  pygup would ignore .fish and look to gdbm instead (?)  Keep thinking.


* Start up ale with no arguments.  Type '{'.  The error message
  complains that it can't get locking info --- this is counter-intuitive.

  There are many commands that require a sequence to operate on, and
  require a certain locking state, so it would be cool to write one
  helper function that:
  1) makes sure the cursor is on a sequence, not at the end of the
     buffer or in an empty buffer, else displays a comprehensible error
     message
  2) makes sure that the locking level is appropriate, else displays a
     comprehensible error message
  This helper function could then be called upon entry to every
  command that needs it.

  [ Alternatively, the existing locking code could just check for
    unusual circumstances  like an empty buffer.  This would be cheap:
    the check wouldn't happen unless we were about to error because of
    lock protection anyway.  -K ]


* Is cut/paste slower than it has to be?  Find out, see if significant
  speedups are possible.

  [ Cut one of the bottom sequences, then paste it.  Veery slow, I 
  suspect something isnt right.  Native Kill/yank of single 3000 long 
  lines in a buffer of 2600 lines has no visible delay, in no part of 
  buffer.  (Minibuffer messages have backslashitis during paste). ]

  [ It certainly is slow -- even more so now that it has to record
    undo data separately.  Will profile this after release.  -Karl ]


* Is there any sel-undo recording code that's still recording with
  markers instead of numbers?  If so, correct it individually, or if
  the problem is large enough, rewrite some of the basic recording
  code.

  Particularly check out gene-sel-drag-selection-or-base-group,
  gene-sel-drag-base-group.

  A basic speed-up in the selection code might be: if one already has
  done the text property searching (for, say, undo recording
  purposes), then it's a waste to do it again for the purpose of
  resetting the selection's segment list.  There should be a way to
  use the previously obtained information in resetting the segment
  list... sort of a deep copy-sequence that changes some things to
  markers...


* If one has a selection line reaching to the end of the alignment, say:

        AAAAAAAAAAAARGH...............~~~~~~~~~
  
  and you drag it to the end and then back somewhere else, the ~'s
  will be replaced with .'s.  Even when you undo the drag, the new .'s
  don't get undone.

  Probably the solution to this is to make dragging not bulldoze
  midstream gap-character changes, rather than changing any undo
  code... or is that possible?


* gene-seq-self-insert-char: the current solution to the eol insertion
  problem is not satisfactory.  The problem: inserting chars at eol
  failed to push the end-marker
  (i.e.: (nth 1 (gene-get-here-property 'gene-seq-posn)))
  forward.  It would be nice just to write
  gene-insert-char-before-markers (or even better, have that in the
  dist!), but then insertions at *bol* would screw up the bol marker.
  The current solution (resetting the `gene-seq-posn' property every
  time) is too slow and wastful allocation-wise.
  Think about this some more.  One possibility is to use
  set-marker-position instead of creating a whole new marker each
  time.


* Mail bug report frame (this one):  Shouldnt the menubar be 
   
   Hide__Send___________  rather than  Headers___Mail_____   ?
   [ Well, I think it's okay the way it is.  If one pulls down the
     mail menu, then it's obvious what to do.  -Karl ]
   
   Need for status bar and minibuffer? 
   [ I think so.  There's no particular reason to hide the fact that
     this is Emacs; perhaps some people will even be able to take
     advantage of it.  Minibuffer is useful to make this behave like
     the Emacs they're used to, should they choose to use it that way.
     The difference between this and the rest of the editor is that
     here we're using a native Emacs mode, so we should try to be
     consistent with Emacs, not Ale, I think.   -Karl ]
   

* `gene-get-here-source' needs to do a better job of making up a
   source.


* `gene-get-here-sym' still does a little more than it needs to.  After
  getting this version stable, go back and reorganize it.  It is even
  perhaps buggy, because it assumes (in the second clause of the `or')
  that object is a buffer, and that pos is non-nil.


* Big Drag group select needs to deal with it if drag is ended in
  the sequence window.  If this doesn't make sense to you, ask Karl
  what he meant when he wrote that. :-)

  Dragging in id-buffer into minibuffer, and back up, offsets
  buffers and causes recentering. 



* [BUG] Chuck Delwiche writes:

  I just launched guppy with a phylip format file, then got up to do
  something else.  When I came back I discovered the "is this file going
  to be used with fastDNAml?" dialog box on my screen.  I tried to click
  'yes' but got no response.  I eventually killed the process and
  restarted it, this time waiting to answer the question rather than
  letting it sit around for 10 minutes.  Second time it worked normally.


* [FEATURES] Sogin's <SOGIN@evol5.mbl.edu> thoughts about Groups:

  I have sent more comments about grouping to Niels.  I am very glad to
  learn that you are receptive to suggestions-all too often developers
  are defensive.  I actually like the way grouping is defined and listed
  in gde-Dragging through taxa names but preventing overlap is a good
  way to go unless one wants to explicitly define an overlap for example
  using a meta key to link to groups or parts of two groups into a third
  group.  The best way to select groups in my opinion is to have the
  cursor define the selected group unless there is an overlap between
  two groups which in effect defines a third group.  Under that
  circumstance, the selection of that overlapping group would be
  implicit e.g. once again a meta or control key.
  
  The most powerful aspect of your editor include the group drag
  functions which I do like.  Finally, if the default for operating on a
  group is define by the line that the cursor is one and its group
  relatives, there should be the option to hold down a key or toggle a
  key which allows that sequence or block of sequences if one is
  selected to be manipulated without effecting others in the group.  In
  other words it is often desireable to change alignments within a group
  without changing the definetiion of the group.

  -*- This is what he sent to Niels: -*-

  I have spent a bit more time with the editor-My biggest complaint at
  the moment is when working with groups and the requirement to point or
  click on the abbreviations to select entire group.  This is just to
  slow a mechanism.  Also defining twelve groups took much too long.  I
  want to drag and form groups instantly.  Renaming them and dealing
  with group overlaps is a pain.
  
  -*- Niels' response: -*-
  
  I wish I was sitting next to you, so I knew exactly .. we may well
  redesign groups, but let me first make sure you know the current
  functionality. You can define a group by dragging (left-mouse) across
  the short-ID's you wish to include. If groups are not overlapping,
  then a left-mouse click on a given 'dimmed' short-ID (to the left of
  screen) makes the group active, to which that short-ID belongs. If
  they overlap, then I usually click on the group name in the group
  frame - it then activates that group and scrolls to nearest
  representative. To de-select sequences from a given group, you can
  drag too. Assuming you know this, we could perhaps discuss over the
  phone so I learn more about the trouble. We are certainly interested
  in making it better for you. I would like if you CC Karl
  (kfogel@floss.life.uiuc.edu) with comments to the editor.  -Niels
