home *** CD-ROM | disk | FTP | other *** search
- done/tested: (Jeff Buhrt)
- 6.7
- 1) added a per row memory allocation
- -runs in about 1/2 run time and 1/3 the space of 6.6vm.1
- -insert/delete row now just moves pointers (# == maxrow+1-currow)
- and blanks one row (of columns (maxcol))
- -as the number of cells grows the size is more linear
- (no more ##Meg images except for 100,000's of rows....)
- -row to column pointer translation is done by a macro (ATBL)
- that returns a pointer to the cell pointer.
- *ATBL would be a pointer to a *ent (cell).
- -the maximum # of columns is limited by ABSMAXCOLS or
- sizeof(struct ent *)*maxcols (whichever is smaller)
- (702 * 4 = 2808 is no real limit even for 286 large model)
- -the maximum # of rows is limited by the virtual memory limit or
- sizeof(struct ent **)*maxrows (whichever is smaller)
- (4*X=64k, X=16384 rows (excluding malloc overhead) on
- a '286 large model. Even w/ 3.25Meg and 10Mhz)
- (plus of course any memory used for cells)
- 2) dolookup (int vs double)
- 3) dolookup calling eval w/ ent * not enode *
- (dolookup called w/ ent * not enode *)
- 4) cleaned up a lot of .... *x = 0 to (.... *)0 (cmds, interp)
- 5) psc: fwidth/precision were reversed on the output
- 6) Backup copy (on save) using same mode to [path/]#file~
- (will prompt if a backup fails)
- 7) put y/n prompt function into yn_ask(mesg)
- 8) found a move(x,y) in sc -> move(y,x) and only move when needed
- 9) we use FullUpdate || changed (to see if ANY cells changed)
- before trying to redraw the screen in update
- (now we don't try to redraw every time a key is hit)
- -if we are stand[ing]out we do not create a cell just to force a
- standout inside the repaint section of update()
- -only draw blank cells if we cleared it or it is standing out
- reason: the less work (what to update) curses has to do, the faster
- a screen update will be (less cpu required)
- 14) {insert, delete}col replaced w/ {open,close}col(currow, numcol_to_insert)
- (limits looping)
- 6.7.1.1
- 15) goto nonexistant cell may loop
- 16) make sure that startup size will at least fill the screen w/ cells.
- 17) added version.c
- 6.7.1.2
- 18) When we would normally die w/o saving (SIGQUIT, etc), we now ask
- if people would like to save the current spreadsheet.
- If 'y', saves to the current file name, otherwise ~/SC.SAVE,
- then /tmp/SC.SAVE if all else fails.
- 6.7.1.3
- 19) don't use malloc.c for production code
- 20) progname is now truncated to just the basename (systems w/ long paths
- caused problems)
-
- todo:
- 1) autobackup of things typed in.
- idea: each cell change output to a stdio open file
- in the save format, fflush() every so often...
- (diffs w/r to the original file)
- 2) lock/freeze (glue down) a section of the screen (the rest of the screen
- scrolls but a row/column/block stays fixed on the screen)
- 3) (seems ok, but check) FIX the insert/delete row functions.
- a) column of equations (EX: E50 = E49+D50)
- b) insert a few rows, look at the equations below the insert point
- c) delete the inserted rows
- d) The equations should now be the same as in (a), but they are not...
- 4) make sure ISVALID should <not> be used in place of checkbounds
- in interp.c
- 5) hide range
- 6) block moving into range
- 7) chain cells w/ equations into a linked list or dependency tree
- -have a top level eval, eval and UPDATE all lower nodes
- 8) an option to go into a ^R like <mode>
- ++data entry fields (highlight entry cells)....
- ++only allow entry in these cells....
- 10) don't redraw the whole screen all the time
- (only cells that change, (in addition to what is in 'fixed #9'))
- 11) add uemacs keybinding stuff
- 12) add uemacs macro language
- 13) add uemacs command completion
- 14) insertrow should be openrow w/ a count arg (limits looping)
- 15) on a Get if the buffer hasn't been written, ask to overwrite
-