Commit | Line | Data |
---|---|---|
a5d59bde KB |
1 | done/tested: (Jeff Buhrt) |
2 | 6.7 | |
3 | 1) 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) | |
20 | 2) dolookup (int vs double) | |
21 | 3) dolookup calling eval w/ ent * not enode * | |
22 | (dolookup called w/ ent * not enode *) | |
23 | 4) cleaned up a lot of .... *x = 0 to (.... *)0 (cmds, interp) | |
24 | 5) psc: fwidth/precision were reversed on the output | |
25 | 6) Backup copy (on save) using same mode to [path/]#file~ | |
26 | (will prompt if a backup fails) | |
27 | 7) put y/n prompt function into yn_ask(mesg) | |
28 | 8) found a move(x,y) in sc -> move(y,x) and only move when needed | |
29 | 9) 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) | |
37 | 14) {insert, delete}col replaced w/ {open,close}col(currow, numcol_to_insert) | |
38 | (limits looping) | |
39 | 6.7.1.1 | |
40 | 15) goto nonexistant cell may loop | |
41 | 16) make sure that startup size will at least fill the screen w/ cells. | |
42 | 17) added version.c | |
43 | 6.7.1.2 | |
44 | 18) 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. | |
48 | 6.7.1.3 | |
49 | 19) don't use malloc.c for production code | |
50 | 20) progname is now truncated to just the basename (systems w/ long paths | |
51 | caused problems) | |
52 | ||
53 | todo: | |
54 | 1) 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) | |
58 | 2) 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) | |
60 | 3) (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... | |
65 | 4) make sure ISVALID should <not> be used in place of checkbounds | |
66 | in interp.c | |
67 | 5) hide range | |
68 | 6) block moving into range | |
69 | 7) chain cells w/ equations into a linked list or dependency tree | |
70 | -have a top level eval, eval and UPDATE all lower nodes | |
71 | 8) an option to go into a ^R like <mode> | |
72 | ++data entry fields (highlight entry cells).... | |
73 | ++only allow entry in these cells.... | |
74 | 10) don't redraw the whole screen all the time | |
75 | (only cells that change, (in addition to what is in 'fixed #9')) | |
76 | 11) add uemacs keybinding stuff | |
77 | 12) add uemacs macro language | |
78 | 13) add uemacs command completion | |
79 | 14) insertrow should be openrow w/ a count arg (limits looping) | |
80 | 15) on a Get if the buffer hasn't been written, ask to overwrite |