Mercurial > emacs
comparison man/ses.texi @ 88155:d7ddb3e565de
sync with trunk
author | Henrik Enberg <henrik.enberg@telia.com> |
---|---|
date | Mon, 16 Jan 2006 00:03:54 +0000 |
parents | 0a70200bde27 |
children |
comparison
equal
deleted
inserted
replaced
88154:8ce476d3ba36 | 88155:d7ddb3e565de |
---|---|
1 \input texinfo @c -*-texinfo-*- | 1 \input texinfo @c -*-texinfo-*- |
2 @c %**start of header | 2 @c %**start of header |
3 @setfilename ../info/ses | 3 @setfilename ../info/ses |
4 @settitle SES: Simple Emacs Spreadsheet | 4 @settitle SES: Simple Emacs Spreadsheet |
5 @setchapternewpage off | 5 @setchapternewpage off |
6 @syncodeindex fn cp | |
7 @syncodeindex vr cp | |
8 @syncodeindex ky cp | |
6 @c %**end of header | 9 @c %**end of header |
7 | 10 |
8 @copying | 11 @copying |
9 This file documents SES: the Simple Emacs Spreadsheet. | 12 This file documents SES: the Simple Emacs Spreadsheet. |
10 | 13 |
11 Copyright @copyright{} 2002 Free Software Foundation, Inc. | 14 Copyright @copyright{} 2002, 2003, 2004, 2005 Free Software Foundation, Inc. |
12 | 15 |
13 @quotation | 16 @quotation |
14 Permission is granted to copy, distribute and/or modify this document | 17 Permission is granted to copy, distribute and/or modify this document |
15 under the terms of the GNU Free Documentation License, Version 1.1 or | 18 under the terms of the GNU Free Documentation License, Version 1.2 or |
16 any later version published by the Free Software Foundation; with no | 19 any later version published by the Free Software Foundation; with no |
17 Invariant Sections, with the Front-Cover texts being ``A GNU | 20 Invariant Sections, with the Front-Cover texts being ``A GNU |
18 Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the | 21 Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the |
19 license is included in the section entitled ``GNU Free Documentation | 22 license is included in the section entitled ``GNU Free Documentation |
20 License'' in the Emacs manual. | 23 License'' in the Emacs manual. |
39 | 42 |
40 @titlepage | 43 @titlepage |
41 @title SES | 44 @title SES |
42 @subtitle Simple Emacs Spreadsheet | 45 @subtitle Simple Emacs Spreadsheet |
43 @author Jonathan A. Yavner | 46 @author Jonathan A. Yavner |
44 @author @email{jyavner@@engineer.com} | 47 @author @email{jyavner@@member.fsf.org} |
45 | 48 |
46 @page | 49 @page |
47 @vskip 0pt plus 1filll | 50 @vskip 0pt plus 1filll |
48 @insertcopying | 51 @insertcopying |
49 @end titlepage | 52 @end titlepage |
62 contain a rectangular grid of cells. The cells' values are specified | 65 contain a rectangular grid of cells. The cells' values are specified |
63 by formulas that can refer to the values of other cells. | 66 by formulas that can refer to the values of other cells. |
64 @end display | 67 @end display |
65 @end ifnottex | 68 @end ifnottex |
66 | 69 |
67 This (such as @pxref{Top,calc,,calc}) is good. | 70 To report bugs, send email to @email{jyavner@@member.fsf.org}. |
68 | |
69 To report bugs, send email to @email{jyavner@@engineer.com}. | |
70 | 71 |
71 @menu | 72 @menu |
72 * Sales Pitch:: Why use SES? | 73 * Sales Pitch:: Why use SES? |
73 * The Basics:: Basic spreadsheet commands | 74 * The Basics:: Basic spreadsheet commands |
74 * Advanced Features:: Want to know more? | 75 * Advanced Features:: Want to know more? |
75 * For Gurus:: Want to know @emph{even more}? | 76 * For Gurus:: Want to know @emph{even more}? |
77 * Index:: Concept, Function and Variable Index | |
76 * Acknowledgements:: Acknowledgements | 78 * Acknowledgements:: Acknowledgements |
77 @end menu | 79 @end menu |
78 | 80 |
79 @c =================================================================== | 81 @c =================================================================== |
80 | 82 |
81 @node Sales Pitch, The Basics, Top, Top | 83 @node Sales Pitch, The Basics, Top, Top |
82 @comment node-name, next, previous, up | 84 @comment node-name, next, previous, up |
83 @chapter Sales Pitch | 85 @chapter Sales Pitch |
86 @cindex features | |
84 | 87 |
85 @itemize @bullet | 88 @itemize @bullet |
86 @item Create and edit simple spreadsheets with a minimum of fuss. | 89 @item Create and edit simple spreadsheets with a minimum of fuss. |
87 @item Full undo/redo/autosave. | 90 @item Full undo/redo/autosave. |
88 @item Immune to viruses in spreadsheet files. | 91 @item Immune to viruses in spreadsheet files. |
100 @c =================================================================== | 103 @c =================================================================== |
101 | 104 |
102 @node The Basics, Advanced Features, Sales Pitch, Top | 105 @node The Basics, Advanced Features, Sales Pitch, Top |
103 @comment node-name, next, previous, up | 106 @comment node-name, next, previous, up |
104 @chapter The Basics | 107 @chapter The Basics |
108 @cindex basic commands | |
109 @findex ses-jump | |
110 @findex ses-mark-row | |
111 @findex ses-mark-column | |
112 @findex ses-mark-whole-buffer | |
113 @findex set-mark-command | |
114 @findex keyboard-quit | |
105 | 115 |
106 A @dfn{cell identifier} is a symbol with a column letter and a row | 116 A @dfn{cell identifier} is a symbol with a column letter and a row |
107 number. Cell B7 is the 2nd column of the 7th row. For very wide | 117 number. Cell B7 is the 2nd column of the 7th row. For very wide |
108 spreadsheets, there are two column letters: cell AB7 is the 28th | 118 spreadsheets, there are two column letters: cell AB7 is the 28th |
109 column of the 7th row. | 119 column of the 7th row. |
147 * Customizing SES:: | 157 * Customizing SES:: |
148 @end menu | 158 @end menu |
149 | 159 |
150 @node Formulas, Resizing, The Basics, The Basics | 160 @node Formulas, Resizing, The Basics, The Basics |
151 @section Cell formulas | 161 @section Cell formulas |
162 @cindex formulas | |
163 @cindex formulas, entering | |
164 @findex ses-read-cell | |
165 @findex ses-read-symbol | |
166 @findex ses-edit-cell | |
167 @findex ses-recalculate-cell | |
168 @findex ses-recalculate-all | |
152 | 169 |
153 To enter a number into the current cell, just start typing: | 170 To enter a number into the current cell, just start typing: |
154 | 171 |
155 @table @kbd | 172 @table @kbd |
156 @item 0..9 | 173 @item 0..9 |
193 Recalculate the entire spreadsheet (@code{ses-recalculate-all}). | 210 Recalculate the entire spreadsheet (@code{ses-recalculate-all}). |
194 @end table | 211 @end table |
195 | 212 |
196 @node Resizing, Printer functions, Formulas, The Basics | 213 @node Resizing, Printer functions, Formulas, The Basics |
197 @section Resizing the spreadsheet | 214 @section Resizing the spreadsheet |
215 @cindex resizing spreadsheets | |
216 @findex ses-insert-row | |
217 @findex ses-insert-column | |
218 @findex ses-delete-row | |
219 @findex ses-delete-column | |
220 @findex ses-set-column-width | |
221 @findex ses-forward-or-insert | |
222 @findex ses-append-row-jump-first-column | |
223 | |
198 | 224 |
199 Basic commands: | 225 Basic commands: |
200 | 226 |
201 @table @kbd | 227 @table @kbd |
202 @item C-o | 228 @item C-o |
240 @end table | 266 @end table |
241 | 267 |
242 | 268 |
243 @node Printer functions, Clearing cells, Resizing, The Basics | 269 @node Printer functions, Clearing cells, Resizing, The Basics |
244 @section Printer functions | 270 @section Printer functions |
271 @cindex printer functions | |
272 @findex ses-read-cell-printer | |
273 @findex ses-read-column-printer | |
274 @findex ses-read-default-printer | |
275 @findex ses-center | |
276 @findex ses-center-span | |
277 @findex ses-dashfill | |
278 @findex ses-dashfill-span | |
279 @findex ses-tildefill-span | |
280 | |
245 | 281 |
246 Printer functions convert binary cell values into the print forms that | 282 Printer functions convert binary cell values into the print forms that |
247 Emacs will display on the screen. | 283 Emacs will display on the screen. |
248 | 284 |
249 A printer can be a format string, like @samp{"$%.2f"}. The result | 285 A printer can be a format string, like @samp{"$%.2f"}. The result |
251 use parentheses: @samp{("$%.2f")}. A printer can also be a | 287 use parentheses: @samp{("$%.2f")}. A printer can also be a |
252 one-argument function (a symbol or a lambda), whose result is a string | 288 one-argument function (a symbol or a lambda), whose result is a string |
253 (right-aligned) or list of one string (left-aligned). While typing in | 289 (right-aligned) or list of one string (left-aligned). While typing in |
254 a lambda, you can use @kbd{M-TAB} to complete the names of symbols. | 290 a lambda, you can use @kbd{M-TAB} to complete the names of symbols. |
255 | 291 |
256 Each cell has a printer. If nil, the column-printer for the cell's | 292 Each cell has a printer. If @code{nil}, the column-printer for the cell's |
257 column is used. If that is also nil, the default-printer for the | 293 column is used. If that is also @code{nil}, the default-printer for the |
258 spreadsheet is used. | 294 spreadsheet is used. |
259 | 295 |
260 @table @kbd | 296 @table @kbd |
261 @item p | 297 @item p |
262 Enter a printer for current cell or range (@code{ses-read-cell-printer}). | 298 Enter a printer for current cell or range (@code{ses-read-cell-printer}). |
273 history, which is preloaded with the set of all printers used in this | 309 history, which is preloaded with the set of all printers used in this |
274 spreadsheet, plus the standard printers. | 310 spreadsheet, plus the standard printers. |
275 | 311 |
276 The standard printers are suitable only for cells, not columns or | 312 The standard printers are suitable only for cells, not columns or |
277 default, because they format the value using the column-printer (or | 313 default, because they format the value using the column-printer (or |
278 default-printer if nil) and then center the result: | 314 default-printer if @code{nil}) and then center the result: |
279 | 315 |
280 @table @code | 316 @table @code |
281 @item ses-center | 317 @item ses-center |
282 Just centering. | 318 Just centering. |
283 | 319 |
295 @end table | 331 @end table |
296 | 332 |
297 | 333 |
298 @node Clearing cells, Copy/cut/paste, Printer functions, The Basics | 334 @node Clearing cells, Copy/cut/paste, Printer functions, The Basics |
299 @section Clearing cells | 335 @section Clearing cells |
300 | 336 @cindex clearing commands |
301 These commands set both formula and printer to nil: | 337 @findex ses-clear-cell-backward |
338 @findex ses-clear-cell-forward | |
339 | |
340 These commands set both formula and printer to @code{nil}: | |
302 | 341 |
303 @table @kbd | 342 @table @kbd |
304 @item DEL | 343 @item DEL |
305 Clear cell and move left (@code{ses-clear-cell-backward}). | 344 Clear cell and move left (@code{ses-clear-cell-backward}). |
306 | 345 |
309 @end table | 348 @end table |
310 | 349 |
311 | 350 |
312 @node Copy/cut/paste, Customizing SES, Clearing cells, The Basics | 351 @node Copy/cut/paste, Customizing SES, Clearing cells, The Basics |
313 @section Copy, cut, and paste | 352 @section Copy, cut, and paste |
353 @cindex copy | |
354 @cindex cut | |
355 @cindex paste | |
356 @findex kill-ring-save | |
357 @findex mouse-set-region | |
358 @findex mouse-set-secondary | |
359 @findex ses-kill-override | |
360 @findex yank | |
361 @findex clipboard-yank | |
362 @findex mouse-yank-at-click | |
363 @findex mouse-yank-at-secondary | |
364 @findex ses-yank-pop | |
314 | 365 |
315 The copy functions work on rectangular regions of cells. You can paste the | 366 The copy functions work on rectangular regions of cells. You can paste the |
316 copies into non-SES buffers to export the print text. | 367 copies into non-SES buffers to export the print text. |
317 | 368 |
318 @table @kbd | 369 @table @kbd |
331 (@code{mouse-set-secondary}). | 382 (@code{mouse-set-secondary}). |
332 | 383 |
333 @item C-w | 384 @item C-w |
334 @itemx [cut] | 385 @itemx [cut] |
335 @itemx [S-delete] | 386 @itemx [S-delete] |
336 The cut functions do not actually delete rows or columns - they copy | 387 The cut functions do not actually delete rows or columns---they copy |
337 and then clear (@code{ses-kill-override}). | 388 and then clear (@code{ses-kill-override}). |
338 | 389 |
339 @item C-y | 390 @item C-y |
340 @itemx [S-insert] | 391 @itemx [S-insert] |
341 Paste from kill ring (@code{yank}). The paste functions behave | 392 Paste from kill ring (@code{yank}). The paste functions behave |
372 yank. This doesn't make any difference? | 423 yank. This doesn't make any difference? |
373 @end table | 424 @end table |
374 | 425 |
375 @node Customizing SES, , Copy/cut/paste, The Basics | 426 @node Customizing SES, , Copy/cut/paste, The Basics |
376 @section Customizing SES | 427 @section Customizing SES |
428 @cindex customizing | |
429 @vindex enable-local-eval | |
430 @vindex ses-mode-hook | |
431 @vindex safe-functions | |
432 @vindex enable-local-eval | |
433 | |
377 | 434 |
378 By default, a newly-created spreadsheet has 1 row and 1 column. The | 435 By default, a newly-created spreadsheet has 1 row and 1 column. The |
379 column width is 7 and the default printer is @samp{"%.7g"}. Each of these | 436 column width is 7 and the default printer is @samp{"%.7g"}. Each of these |
380 can be customized. Look in group ``ses''. | 437 can be customized. Look in group ``ses''. |
381 | 438 |
385 list. | 442 list. |
386 | 443 |
387 @code{ses-mode-hook} is a normal mode hook (list of functions to | 444 @code{ses-mode-hook} is a normal mode hook (list of functions to |
388 execute when starting SES mode for a buffer). | 445 execute when starting SES mode for a buffer). |
389 | 446 |
390 The variable @code{safe-functions} is a a list of possibly-unsafe | 447 The variable @code{safe-functions} is a list of possibly-unsafe |
391 functions to be treated as safe when analysing formulas and printers. | 448 functions to be treated as safe when analysing formulas and printers. |
392 @xref{Virus protection}. Before customizing @code{safe-functions}, | 449 @xref{Virus protection}. Before customizing @code{safe-functions}, |
393 think about how much you trust the person who's suggesting this | 450 think about how much you trust the person who's suggesting this |
394 change. The value t turns off all anti-virus protection. A | 451 change. The value @code{t} turns off all anti-virus protection. A |
395 list-of-functions value might enable a ``gee whiz'' spreadsheet, but it | 452 list-of-functions value might enable a ``gee whiz'' spreadsheet, but it |
396 also creates trapdoors in your anti-virus armor. In order for virus | 453 also creates trapdoors in your anti-virus armor. In order for virus |
397 protection to work, you must always press @kbd{n} when presented with | 454 protection to work, you must always press @kbd{n} when presented with |
398 a virus warning, unless you understand what the questionable code is | 455 a virus warning, unless you understand what the questionable code is |
399 trying to do. Do not listen to those who tell you to customize | 456 trying to do. Do not listen to those who tell you to customize |
403 | 460 |
404 @c =================================================================== | 461 @c =================================================================== |
405 | 462 |
406 @node Advanced Features, For Gurus, The Basics, Top | 463 @node Advanced Features, For Gurus, The Basics, Top |
407 @chapter Advanced Features | 464 @chapter Advanced Features |
465 @cindex advanced features | |
466 @findex ses-read-header-row | |
467 | |
408 | 468 |
409 @table @kbd | 469 @table @kbd |
410 @item C-c M-C-h | 470 @item C-c M-C-h |
411 (@code{ses-read-header-row}). The header line at the top of the SES | 471 (@code{ses-set-header-row}). The header line at the top of the SES |
412 window normally shows the column letter for each column. You can set | 472 window normally shows the column letter for each column. You can set |
413 it to show a copy of some row, such as a row of column titles, so that | 473 it to show a copy of some row, such as a row of column titles, so that |
414 row will always be visible. Set the header line to row 0 to show | 474 row will always be visible. Default is to set the current row as the |
415 column letters again. | 475 header; use C-u to prompt for header row. Set the header to row 0 to |
476 show column letters again. | |
477 @item [header-line mouse-3] | |
478 Pops up a menu to set the current row as the header, or revert to | |
479 column letters. | |
416 @end table | 480 @end table |
417 | 481 |
418 @menu | 482 @menu |
419 * The print area:: | 483 * The print area:: |
420 * Ranges in formulas:: | 484 * Ranges in formulas:: |
426 * Spreadsheets with details and summary:: | 490 * Spreadsheets with details and summary:: |
427 @end menu | 491 @end menu |
428 | 492 |
429 @node The print area, Ranges in formulas, Advanced Features, Advanced Features | 493 @node The print area, Ranges in formulas, Advanced Features, Advanced Features |
430 @section The print area | 494 @section The print area |
495 @cindex print area | |
496 @findex widen | |
497 @findex ses-renarrow-buffer | |
498 @findex ses-reprint-all | |
431 | 499 |
432 A SES file consists of a print area and a data area. Normally the | 500 A SES file consists of a print area and a data area. Normally the |
433 buffer is narrowed to show only the print area. The print area is | 501 buffer is narrowed to show only the print area. The print area is |
434 read-only except for special SES commands; it contains cell values | 502 read-only except for special SES commands; it contains cell values |
435 formatted by printer functions. The data area records the formula and | 503 formatted by printer functions. The data area records the formula and |
448 (@code{ses-reprint-all}). | 516 (@code{ses-reprint-all}). |
449 @end table | 517 @end table |
450 | 518 |
451 @node Ranges in formulas, Sorting by column, The print area, Advanced Features | 519 @node Ranges in formulas, Sorting by column, The print area, Advanced Features |
452 @section Ranges in formulas | 520 @section Ranges in formulas |
521 @cindex ranges | |
522 @findex ses-insert-range-click | |
523 @findex ses-insert-range | |
524 @findex ses-insert-ses-range-click | |
525 @findex ses-insert-ses-range | |
526 @vindex from | |
527 @vindex to | |
453 | 528 |
454 A formula like | 529 A formula like |
455 @lisp | 530 @lisp |
456 (+ A1 A2 A3) | 531 (+ A1 A2 A3) |
457 @end lisp | 532 @end lisp |
460 @lisp | 535 @lisp |
461 (+ A1 A3 A4) | 536 (+ A1 A3 A4) |
462 @end lisp | 537 @end lisp |
463 and the new row is not included in the sum. | 538 and the new row is not included in the sum. |
464 | 539 |
465 The macro @code{(ses-range @var{from} @var{to})} evalutes to a list of | 540 The macro @code{(ses-range @var{from} @var{to})} evaluates to a list of |
466 the values in a rectangle of cells. If your formula is | 541 the values in a rectangle of cells. If your formula is |
467 @lisp | 542 @lisp |
468 (apply '+ (ses-range A1 A3)) | 543 (apply '+ (ses-range A1 A3)) |
469 @end lisp | 544 @end lisp |
470 and you insert a new second row, it becomes | 545 and you insert a new second row, it becomes |
501 the range. New cells inserted just before a range are not included. | 576 the range. New cells inserted just before a range are not included. |
502 | 577 |
503 | 578 |
504 @node Sorting by column, Standard formula functions, Ranges in formulas, Advanced Features | 579 @node Sorting by column, Standard formula functions, Ranges in formulas, Advanced Features |
505 @section Sorting by column | 580 @section Sorting by column |
581 @cindex sorting | |
582 @findex ses-sort-column | |
583 @findex ses-sort-column-click | |
506 | 584 |
507 @table @kbd | 585 @table @kbd |
508 @item C-c M-C-s | 586 @item C-c M-C-s |
509 Sort the cells of a range using one of the columns | 587 Sort the cells of a range using one of the columns |
510 (@code{ses-sort-column}). The rows (or partial rows if the range | 588 (@code{ses-sort-column}). The rows (or partial rows if the range |
527 range. | 605 range. |
528 | 606 |
529 | 607 |
530 @node Standard formula functions, More on cell printing, Sorting by column, Advanced Features | 608 @node Standard formula functions, More on cell printing, Sorting by column, Advanced Features |
531 @section Standard formula functions | 609 @section Standard formula functions |
610 @cindex standard formula functions | |
611 @cindex *skip* | |
612 @cindex *error* | |
613 @findex ses-delete-blanks | |
614 @findex ses-average | |
615 @findex ses+ | |
532 | 616 |
533 Oftentimes you want a calculation to exclude the blank cells. Here | 617 Oftentimes you want a calculation to exclude the blank cells. Here |
534 are some useful functions to call from your formulas: | 618 are some useful functions to call from your formulas: |
535 | 619 |
536 @table @code | 620 @table @code |
537 @item (ses-delete-blanks &rest @var{args}) | 621 @item (ses-delete-blanks &rest @var{args}) |
538 Returns a list from which all blank cells (value is either nil or | 622 Returns a list from which all blank cells (value is either @code{nil} or |
539 '*skip*) have been deleted. | 623 '*skip*) have been deleted. |
540 | 624 |
541 @item (ses+ &rest @var{args}) | 625 @item (ses+ &rest @var{args}) |
542 Sum of non-blank arguments. | 626 Sum of non-blank arguments. |
543 | 627 |
546 as a single argument, since you'll probably use it with @code{ses-range}. | 630 as a single argument, since you'll probably use it with @code{ses-range}. |
547 @end table | 631 @end table |
548 | 632 |
549 @node More on cell printing, Import and export, Standard formula functions, Advanced Features | 633 @node More on cell printing, Import and export, Standard formula functions, Advanced Features |
550 @section More on cell printing | 634 @section More on cell printing |
635 @cindex cell printing, more | |
636 @findex ses-truncate-cell | |
637 @findex ses-recalculate-cell | |
551 | 638 |
552 Special cell values: | 639 Special cell values: |
553 @itemize | 640 @itemize |
554 @item nil prints the same as "", but allows previous cell to spill over. | 641 @item nil prints the same as "", but allows previous cell to spill over. |
555 @item '*skip* replaces nil when the previous cell actually does spill over; | 642 @item '*skip* replaces nil when the previous cell actually does spill over; |
556 nothing is printed for it. | 643 nothing is printed for it. |
557 @item '*error* indicates that the formula signalled an error instead of | 644 @item '*error* indicates that the formula signaled an error instead of |
558 producing a value: the print cell is filled with hash marks (#). | 645 producing a value: the print cell is filled with hash marks (#). |
559 @end itemize | 646 @end itemize |
560 | 647 |
561 If the result from the printer function is too wide for the cell and | 648 If the result from the printer function is too wide for the cell and |
562 the following cell is nil, the result will spill over into the | 649 the following cell is @code{nil}, the result will spill over into the |
563 following cell. Very wide results can spill over several cells. If | 650 following cell. Very wide results can spill over several cells. If |
564 the result is too wide for the available space (up to the end of the | 651 the result is too wide for the available space (up to the end of the |
565 row or the next non-nil cell), the result is truncated if the cell's | 652 row or the next non-@code{nil} cell), the result is truncated if the cell's |
566 value is a string, or replaced with hash marks otherwise. | 653 value is a string, or replaced with hash marks otherwise. |
567 | 654 |
568 SES could get confused by printer results that contain newlines or | 655 SES could get confused by printer results that contain newlines or |
569 tabs, so these are replaced with question marks. | 656 tabs, so these are replaced with question marks. |
570 | 657 |
571 @table @kbd | 658 @table @kbd |
572 @item C-c C-t | 659 @item C-c C-t |
573 Confine a cell to its own column (@code{ses-truncate-cell}). This | 660 Confine a cell to its own column (@code{ses-truncate-cell}). This |
574 alows you to move point to a rightward cell that would otherwise be | 661 allows you to move point to a rightward cell that would otherwise be |
575 covered by a spill-over. If you don't change the rightward cell, the | 662 covered by a spill-over. If you don't change the rightward cell, the |
576 confined cell will spill over again the next time it is reprinted. | 663 confined cell will spill over again the next time it is reprinted. |
577 | 664 |
578 @item C-c C-c | 665 @item C-c C-c |
579 When applied to a single cell, this command displays in the echo area any | 666 When applied to a single cell, this command displays in the echo area any |
586 is numeric-only and you use a string as a cell value. | 673 is numeric-only and you use a string as a cell value. |
587 | 674 |
588 | 675 |
589 @node Import and export, Virus protection, More on cell printing, Advanced Features | 676 @node Import and export, Virus protection, More on cell printing, Advanced Features |
590 @section Import and export | 677 @section Import and export |
678 @cindex import and export | |
679 @cindex export, and import | |
680 @findex ses-export-tsv | |
681 @findex ses-export-tsf | |
591 | 682 |
592 @table @kbd | 683 @table @kbd |
593 @item x t | 684 @item x t |
594 Export a range of cells as tab-separated values (@code{ses-export-tsv}). | 685 Export a range of cells as tab-separated values (@code{ses-export-tsv}). |
595 @item x T | 686 @item x T |
602 To import text, use any of the yank commands where the text to paste | 693 To import text, use any of the yank commands where the text to paste |
603 contains tabs and/or newlines. Imported formulas are not relocated. | 694 contains tabs and/or newlines. Imported formulas are not relocated. |
604 | 695 |
605 @node Virus protection, Spreadsheets with details and summary, Import and export, Advanced Features | 696 @node Virus protection, Spreadsheets with details and summary, Import and export, Advanced Features |
606 @section Virus protection | 697 @section Virus protection |
698 @cindex virus protection | |
607 | 699 |
608 Whenever a formula or printer is read from a file or is pasted into | 700 Whenever a formula or printer is read from a file or is pasted into |
609 the spreadsheet, it receives a ``needs safety check'' marking. Later, | 701 the spreadsheet, it receives a ``needs safety check'' marking. Later, |
610 when the formula or printer is evaluated for the first time, it is | 702 when the formula or printer is evaluated for the first time, it is |
611 checked for safety using the @code{unsafep} predicate; if found to be | 703 checked for safety using the @code{unsafep} predicate; if found to be |
613 and you must press Y to approve it or N to use a substitute. The | 705 and you must press Y to approve it or N to use a substitute. The |
614 substitute always signals an error. | 706 substitute always signals an error. |
615 | 707 |
616 Formulas or printers that you type in are checked immediately for | 708 Formulas or printers that you type in are checked immediately for |
617 safety. If found to be possibly unsafe and you press N to disapprove, | 709 safety. If found to be possibly unsafe and you press N to disapprove, |
618 the action is cancelled and the old formula or printer will remain. | 710 the action is canceled and the old formula or printer will remain. |
619 | 711 |
620 Besides viruses (which try to copy themselves to other files), | 712 Besides viruses (which try to copy themselves to other files), |
621 @code{unsafep} can also detect all other kinds of Trojan horses, such as | 713 @code{unsafep} can also detect all other kinds of Trojan horses, such as |
622 spreadsheets that delete files, send email, flood Web sites, alter | 714 spreadsheets that delete files, send email, flood Web sites, alter |
623 your Emacs settings, etc. | 715 your Emacs settings, etc. |
628 your style as a formula-writer. See the documentation in @file{unsafep.el} | 720 your style as a formula-writer. See the documentation in @file{unsafep.el} |
629 for more info on how Lisp forms are classified as safe or unsafe. | 721 for more info on how Lisp forms are classified as safe or unsafe. |
630 | 722 |
631 @node Spreadsheets with details and summary, , Virus protection, Advanced Features | 723 @node Spreadsheets with details and summary, , Virus protection, Advanced Features |
632 @section Spreadsheets with details and summary | 724 @section Spreadsheets with details and summary |
725 @cindex details and summary | |
726 @cindex summary, and details | |
633 | 727 |
634 A common organization for spreadsheets is to have a bunch of ``detail'' | 728 A common organization for spreadsheets is to have a bunch of ``detail'' |
635 rows, each perhaps describing a transaction, and then a set of | 729 rows, each perhaps describing a transaction, and then a set of |
636 ``summary'' rows that each show reduced data for some subset of the | 730 ``summary'' rows that each show reduced data for some subset of the |
637 details. SES supports this organization via the @code{ses-select} | 731 details. SES supports this organization via the @code{ses-select} |
660 details-and-summary spreadsheet. | 754 details-and-summary spreadsheet. |
661 | 755 |
662 | 756 |
663 @c =================================================================== | 757 @c =================================================================== |
664 | 758 |
665 @node For Gurus, Acknowledgements, Advanced Features, Top | 759 @node For Gurus, Index, Advanced Features, Top |
666 @chapter For Gurus | 760 @chapter For Gurus |
761 @cindex advanced features | |
667 | 762 |
668 @menu | 763 @menu |
669 * Deferred updates:: | 764 * Deferred updates:: |
670 * Nonrelocatable references:: | 765 * Nonrelocatable references:: |
671 * The data area:: | 766 * The data area:: |
673 * Uses of defadvice in SES:: | 768 * Uses of defadvice in SES:: |
674 @end menu | 769 @end menu |
675 | 770 |
676 @node Deferred updates, Nonrelocatable references, For Gurus, For Gurus | 771 @node Deferred updates, Nonrelocatable references, For Gurus, For Gurus |
677 @section Deferred updates | 772 @section Deferred updates |
773 @cindex deferred updates | |
774 @cindex updates, deferred | |
775 @vindex run-with-idle-timer | |
678 | 776 |
679 To save time by avoiding redundant computations, cells that need | 777 To save time by avoiding redundant computations, cells that need |
680 recalculation due to changes in other cells are added to a set. At | 778 recalculation due to changes in other cells are added to a set. At |
681 the end of the command, each cell in the set is recalculated once. | 779 the end of the command, each cell in the set is recalculated once. |
682 This can create a new set of cells that need recalculation. The | 780 This can create a new set of cells that need recalculation. The |
702 can type ahead without worrying about the glitch. | 800 can type ahead without worrying about the glitch. |
703 | 801 |
704 | 802 |
705 @node Nonrelocatable references, The data area, Deferred updates, For Gurus | 803 @node Nonrelocatable references, The data area, Deferred updates, For Gurus |
706 @section Nonrelocatable references | 804 @section Nonrelocatable references |
805 @cindex nonrelocatable references | |
806 @cindex references, nonrelocatable | |
707 | 807 |
708 @kbd{C-y} relocates all cell-references in a pasted formula, while | 808 @kbd{C-y} relocates all cell-references in a pasted formula, while |
709 @kbd{C-u C-y} relocates none of the cell-references. What about mixed | 809 @kbd{C-u C-y} relocates none of the cell-references. What about mixed |
710 cases? | 810 cases? |
711 | 811 |
728 kind of dependency is also not recorded. | 828 kind of dependency is also not recorded. |
729 | 829 |
730 | 830 |
731 @node The data area, Buffer-local variables in spreadsheets, Nonrelocatable references, For Gurus | 831 @node The data area, Buffer-local variables in spreadsheets, Nonrelocatable references, For Gurus |
732 @section The data area | 832 @section The data area |
833 @cindex data area | |
834 @findex ses-reconstruct-all | |
733 | 835 |
734 Begins with an 014 character, followed by sets of cell-definition | 836 Begins with an 014 character, followed by sets of cell-definition |
735 macros for each row, followed by column-widths, column-printers, | 837 macros for each row, followed by column-widths, column-printers, |
736 default-printer, and header-row. Then there's the global parameters | 838 default-printer, and header-row. Then there's the global parameters |
737 (file-format ID, numrows, numcols) and the local variables (specifying | 839 (file-format ID, numrows, numcols) and the local variables (specifying |
758 @end table | 860 @end table |
759 | 861 |
760 | 862 |
761 @node Buffer-local variables in spreadsheets, Uses of defadvice in SES, The data area, For Gurus | 863 @node Buffer-local variables in spreadsheets, Uses of defadvice in SES, The data area, For Gurus |
762 @section Buffer-local variables in spreadsheets | 864 @section Buffer-local variables in spreadsheets |
865 @cindex buffer-local variables | |
866 @cindex variables, buffer-local | |
763 | 867 |
764 You can add additional local variables to the list at the bottom of | 868 You can add additional local variables to the list at the bottom of |
765 the data area, such as hidden constants you want to refer to in your | 869 the data area, such as hidden constants you want to refer to in your |
766 formulas. | 870 formulas. |
767 | 871 |
790 (put 'your-function-name 'safe-function t) | 894 (put 'your-function-name 'safe-function t) |
791 @end lisp | 895 @end lisp |
792 | 896 |
793 @node Uses of defadvice in SES, , Buffer-local variables in spreadsheets, For Gurus | 897 @node Uses of defadvice in SES, , Buffer-local variables in spreadsheets, For Gurus |
794 @section Uses of defadvice in SES | 898 @section Uses of defadvice in SES |
899 @cindex defadvice | |
900 @cindex undo-more | |
901 @cindex copy-region-as-kill | |
902 @cindex yank | |
795 | 903 |
796 @table @code | 904 @table @code |
797 @item undo-more | 905 @item undo-more |
798 Defines a new undo element format (@var{fun} . @var{args}), which | 906 Defines a new undo element format (@var{fun} . @var{args}), which |
799 means ``undo by applying @var{fun} to @var{args}''. For spreadsheet | 907 means ``undo by applying @var{fun} to @var{args}''. For spreadsheet |
810 as cells (if the yank text has 'ses properties), then as tab-separated | 918 as cells (if the yank text has 'ses properties), then as tab-separated |
811 formulas, then (if all else fails) as a single formula for the current | 919 formulas, then (if all else fails) as a single formula for the current |
812 cell. | 920 cell. |
813 @end table | 921 @end table |
814 | 922 |
815 | |
816 @c =================================================================== | 923 @c =================================================================== |
817 | 924 @node Index, Acknowledgements, For Gurus, Top |
818 @node Acknowledgements, , For Gurus, Top | 925 @unnumbered Index |
926 | |
927 @printindex cp | |
928 | |
929 @c =================================================================== | |
930 | |
931 @node Acknowledgements, , Index, Top | |
819 @chapter Acknowledgements | 932 @chapter Acknowledgements |
820 | 933 |
934 Coding by: | |
935 @quotation | |
936 Jonathan Yavner @email{jyavner@@member.fsf.org}@* | |
937 Stefan Monnier @email{monnier@@gnu.org} | |
938 @end quotation | |
939 | |
940 @noindent | |
941 Texinfo manual by: | |
942 @quotation | |
943 Jonathan Yavner @email{jyavner@@member.fsf.org}@* | |
944 Brad Collins <brad@@chenla.org> | |
945 @end quotation | |
946 | |
947 @noindent | |
948 Ideas from: | |
821 @quotation | 949 @quotation |
822 Christoph Conrad @email{christoph.conrad@@gmx.de}@* | 950 Christoph Conrad @email{christoph.conrad@@gmx.de}@* |
823 CyberBob @email{cyberbob@@redneck.gacracker.org}@* | 951 CyberBob @email{cyberbob@@redneck.gacracker.org}@* |
824 Syver Enstad @email{syver-en@@online.no}@* | 952 Syver Enstad @email{syver-en@@online.no}@* |
825 Ami Fischman @email{fischman@@zion.bpnetworks.com}@* | 953 Ami Fischman @email{fischman@@zion.bpnetworks.com}@* |
826 Thomas Gehrlein @email{Thomas.Gehrlein@@t-online.de}@* | 954 Thomas Gehrlein @email{Thomas.Gehrlein@@t-online.de}@* |
827 Chris F.A. Johnson @email{c.f.a.johnson@@rogers.com}@* | 955 Chris F.A. Johnson @email{c.f.a.johnson@@rogers.com}@* |
828 Yusong Li @email{lyusong@@hotmail.com}@* | 956 Yusong Li @email{lyusong@@hotmail.com}@* |
829 Yuri Linkov @email{link0ff@@yahoo.com}@* | 957 Juri Linkov @email{juri@@jurta.org}@* |
830 Harald Maier @email{maierh@@myself.com}@* | 958 Harald Maier @email{maierh@@myself.com}@* |
831 Alan Nash @email{anash@@san.rr.com}@* | 959 Alan Nash @email{anash@@san.rr.com}@* |
832 François Pinard @email{pinard@@iro.umontreal.ca}@* | 960 François Pinard @email{pinard@@iro.umontreal.ca}@* |
833 Pedro Pinto @email{ppinto@@cs.cmu.edu}@* | 961 Pedro Pinto @email{ppinto@@cs.cmu.edu}@* |
834 Stefan Reichör @email{xsteve@@riic.at}@* | 962 Stefan Reichör @email{xsteve@@riic.at}@* |
835 Oliver Scholz @email{epameinondas@@gmx.de}@* | 963 Oliver Scholz @email{epameinondas@@gmx.de}@* |
836 Richard M. Stallman @email{rms@@gnu.org}@* | 964 Richard M. Stallman @email{rms@@gnu.org}@* |
965 Luc Teirlinck @email{teirllm@@dms.auburn.edu}@* | |
837 J. Otto Tennant @email{jotto@@pobox.com}@* | 966 J. Otto Tennant @email{jotto@@pobox.com}@* |
838 Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr} | 967 Jean-Philippe Theberge @email{jphil@@acs.pagesjaunes.fr} |
839 @end quotation | 968 @end quotation |
840 | 969 |
841 @c =================================================================== | 970 @c =================================================================== |
842 | 971 |
843 @bye | 972 @bye |
973 | |
974 @ignore | |
975 arch-tag: 10a4ee1c-7ef4-4c06-8b7a-f975e39f0dec | |
976 @end ignore |