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