@setfilename ../info/ses
@settitle SES: Simple Emacs Spreadsheet
@setchapternewpage off
+@syncodeindex fn cp
+@syncodeindex vr cp
+@syncodeindex ky cp
@c %**end of header
@copying
This file documents SES: the Simple Emacs Spreadsheet.
-Copyright @copyright{} 2002 Free Software Foundation, Inc.
+Copyright @copyright{} 2002, 2003, 2004, 2005, 2006 Free Software
+Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
+under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with the Front-Cover texts being ``A GNU
Manual,'' and with the Back-Cover Texts as in (a) below. A copy of the
* The Basics:: Basic spreadsheet commands
* Advanced Features:: Want to know more?
* For Gurus:: Want to know @emph{even more}?
+* Index:: Concept, Function and Variable Index
* Acknowledgements:: Acknowledgements
@end menu
@node Sales Pitch, The Basics, Top, Top
@comment node-name, next, previous, up
@chapter Sales Pitch
+@cindex features
@itemize @bullet
@item Create and edit simple spreadsheets with a minimum of fuss.
@node The Basics, Advanced Features, Sales Pitch, Top
@comment node-name, next, previous, up
@chapter The Basics
+@cindex basic commands
+@findex ses-jump
+@findex ses-mark-row
+@findex ses-mark-column
+@findex ses-mark-whole-buffer
+@findex set-mark-command
+@findex keyboard-quit
A @dfn{cell identifier} is a symbol with a column letter and a row
number. Cell B7 is the 2nd column of the 7th row. For very wide
@node Formulas, Resizing, The Basics, The Basics
@section Cell formulas
+@cindex formulas
+@cindex formulas, entering
+@findex ses-read-cell
+@findex ses-read-symbol
+@findex ses-edit-cell
+@findex ses-recalculate-cell
+@findex ses-recalculate-all
To enter a number into the current cell, just start typing:
(@code{ses-read-cell}). To access another cell's value, just use its
identifier in your expression. Whenever the other cell is changed,
this cell's formula will be reevaluated. While typing in the
-expression, you can use @kbd{M-TAB} to complete symbol names.
+expression, you can use @kbd{M-@key{TAB}} to complete symbol names.
@item ' @r{(apostrophe)}
Enter a symbol (ses-read-symbol). SES remembers all symbols that have
been used as formulas, so you can type just the beginning of a symbol
-and use @kbd{SPC}, @kbd{TAB}, and @kbd{?} to complete it.
+and use @kbd{@key{SPC}}, @kbd{@key{TAB}}, and @kbd{?} to complete it.
@end table
To enter something else (e.g., a vector), begin with a digit, then
@node Resizing, Printer functions, Formulas, The Basics
@section Resizing the spreadsheet
+@cindex resizing spreadsheets
+@findex ses-insert-row
+@findex ses-insert-column
+@findex ses-delete-row
+@findex ses-delete-column
+@findex ses-set-column-width
+@findex ses-forward-or-insert
+@findex ses-append-row-jump-first-column
+
Basic commands:
@node Printer functions, Clearing cells, Resizing, The Basics
@section Printer functions
+@cindex printer functions
+@findex ses-read-cell-printer
+@findex ses-read-column-printer
+@findex ses-read-default-printer
+@findex ses-center
+@findex ses-center-span
+@findex ses-dashfill
+@findex ses-dashfill-span
+@findex ses-tildefill-span
+
Printer functions convert binary cell values into the print forms that
Emacs will display on the screen.
use parentheses: @samp{("$%.2f")}. A printer can also be a
one-argument function (a symbol or a lambda), whose result is a string
(right-aligned) or list of one string (left-aligned). While typing in
-a lambda, you can use @kbd{M-TAB} to complete the names of symbols.
+a lambda, you can use @kbd{M-@key{TAB}} to complete the names of symbols.
Each cell has a printer. If @code{nil}, the column-printer for the cell's
column is used. If that is also @code{nil}, the default-printer for the
@node Clearing cells, Copy/cut/paste, Printer functions, The Basics
@section Clearing cells
+@cindex clearing commands
+@findex ses-clear-cell-backward
+@findex ses-clear-cell-forward
These commands set both formula and printer to @code{nil}:
@node Copy/cut/paste, Customizing SES, Clearing cells, The Basics
@section Copy, cut, and paste
+@cindex copy
+@cindex cut
+@cindex paste
+@findex kill-ring-save
+@findex mouse-set-region
+@findex mouse-set-secondary
+@findex ses-kill-override
+@findex yank
+@findex clipboard-yank
+@findex mouse-yank-at-click
+@findex mouse-yank-at-secondary
+@findex ses-yank-pop
The copy functions work on rectangular regions of cells. You can paste the
copies into non-SES buffers to export the print text.
@node Customizing SES, , Copy/cut/paste, The Basics
@section Customizing SES
+@cindex customizing
+@vindex enable-local-eval
+@vindex ses-mode-hook
+@vindex safe-functions
+@vindex enable-local-eval
+
By default, a newly-created spreadsheet has 1 row and 1 column. The
column width is 7 and the default printer is @samp{"%.7g"}. Each of these
@node Advanced Features, For Gurus, The Basics, Top
@chapter Advanced Features
+@cindex advanced features
+@findex ses-read-header-row
+
@table @kbd
@item C-c M-C-h
@node The print area, Ranges in formulas, Advanced Features, Advanced Features
@section The print area
+@cindex print area
+@findex widen
+@findex ses-renarrow-buffer
+@findex ses-reprint-all
A SES file consists of a print area and a data area. Normally the
buffer is narrowed to show only the print area. The print area is
@node Ranges in formulas, Sorting by column, The print area, Advanced Features
@section Ranges in formulas
+@cindex ranges
+@findex ses-insert-range-click
+@findex ses-insert-range
+@findex ses-insert-ses-range-click
+@findex ses-insert-ses-range
+@vindex from
+@vindex to
A formula like
@lisp
@end lisp
and the new row is not included in the sum.
-The macro @code{(ses-range @var{from} @var{to})} evalutes to a list of
+The macro @code{(ses-range @var{from} @var{to})} evaluates to a list of
the values in a rectangle of cells. If your formula is
@lisp
(apply '+ (ses-range A1 A3))
@node Sorting by column, Standard formula functions, Ranges in formulas, Advanced Features
@section Sorting by column
+@cindex sorting
+@findex ses-sort-column
+@findex ses-sort-column-click
@table @kbd
@item C-c M-C-s
@node Standard formula functions, More on cell printing, Sorting by column, Advanced Features
@section Standard formula functions
+@cindex standard formula functions
+@cindex *skip*
+@cindex *error*
+@findex ses-delete-blanks
+@findex ses-average
+@findex ses+
Oftentimes you want a calculation to exclude the blank cells. Here
are some useful functions to call from your formulas:
@node More on cell printing, Import and export, Standard formula functions, Advanced Features
@section More on cell printing
+@cindex cell printing, more
+@findex ses-truncate-cell
+@findex ses-recalculate-cell
Special cell values:
@itemize
@item nil prints the same as "", but allows previous cell to spill over.
@item '*skip* replaces nil when the previous cell actually does spill over;
nothing is printed for it.
-@item '*error* indicates that the formula signalled an error instead of
+@item '*error* indicates that the formula signaled an error instead of
producing a value: the print cell is filled with hash marks (#).
@end itemize
@table @kbd
@item C-c C-t
Confine a cell to its own column (@code{ses-truncate-cell}). This
-alows you to move point to a rightward cell that would otherwise be
+allows you to move point to a rightward cell that would otherwise be
covered by a spill-over. If you don't change the rightward cell, the
confined cell will spill over again the next time it is reprinted.
@node Import and export, Virus protection, More on cell printing, Advanced Features
@section Import and export
+@cindex import and export
+@cindex export, and import
+@findex ses-export-tsv
+@findex ses-export-tsf
@table @kbd
@item x t
@node Virus protection, Spreadsheets with details and summary, Import and export, Advanced Features
@section Virus protection
+@cindex virus protection
Whenever a formula or printer is read from a file or is pasted into
the spreadsheet, it receives a ``needs safety check'' marking. Later,
Formulas or printers that you type in are checked immediately for
safety. If found to be possibly unsafe and you press N to disapprove,
-the action is cancelled and the old formula or printer will remain.
+the action is canceled and the old formula or printer will remain.
Besides viruses (which try to copy themselves to other files),
@code{unsafep} can also detect all other kinds of Trojan horses, such as
@node Spreadsheets with details and summary, , Virus protection, Advanced Features
@section Spreadsheets with details and summary
+@cindex details and summary
+@cindex summary, and details
A common organization for spreadsheets is to have a bunch of ``detail''
rows, each perhaps describing a transaction, and then a set of
@c ===================================================================
-@node For Gurus, Acknowledgements, Advanced Features, Top
+@node For Gurus, Index, Advanced Features, Top
@chapter For Gurus
+@cindex advanced features
@menu
* Deferred updates::
@node Deferred updates, Nonrelocatable references, For Gurus, For Gurus
@section Deferred updates
+@cindex deferred updates
+@cindex updates, deferred
+@vindex run-with-idle-timer
To save time by avoiding redundant computations, cells that need
recalculation due to changes in other cells are added to a set. At
@node Nonrelocatable references, The data area, Deferred updates, For Gurus
@section Nonrelocatable references
+@cindex nonrelocatable references
+@cindex references, nonrelocatable
@kbd{C-y} relocates all cell-references in a pasted formula, while
@kbd{C-u C-y} relocates none of the cell-references. What about mixed
@node The data area, Buffer-local variables in spreadsheets, Nonrelocatable references, For Gurus
@section The data area
+@cindex data area
+@findex ses-reconstruct-all
Begins with an 014 character, followed by sets of cell-definition
macros for each row, followed by column-widths, column-printers,
@node Buffer-local variables in spreadsheets, Uses of defadvice in SES, The data area, For Gurus
@section Buffer-local variables in spreadsheets
+@cindex buffer-local variables
+@cindex variables, buffer-local
You can add additional local variables to the list at the bottom of
the data area, such as hidden constants you want to refer to in your
@node Uses of defadvice in SES, , Buffer-local variables in spreadsheets, For Gurus
@section Uses of defadvice in SES
+@cindex defadvice
+@cindex undo-more
+@cindex copy-region-as-kill
+@cindex yank
@table @code
@item undo-more
cell.
@end table
+@c ===================================================================
+@node Index, Acknowledgements, For Gurus, Top
+@unnumbered Index
+
+@printindex cp
@c ===================================================================
-@node Acknowledgements, , For Gurus, Top
+@node Acknowledgements, , Index, Top
@chapter Acknowledgements
Coding by:
Stefan Monnier @email{monnier@@gnu.org}
@end quotation
+@noindent
+Texinfo manual by:
+@quotation
+Jonathan Yavner @email{jyavner@@member.fsf.org}@*
+Brad Collins <brad@@chenla.org>
+@end quotation
+
+@noindent
Ideas from:
@quotation
Christoph Conrad @email{christoph.conrad@@gmx.de}@*